I just upgraded to 3 (on a test server)
The first thing I noticed is after the installation it takes you the control panel and it was totally broken. The reason is that the EE install does not let you specify the site url on the installation so it defaults to http.
I force https:// on my site so you can understand how the installation will break this way. A bug to consider as more people are moving to an all HTTPS only approach.
Anyway…
I thought EE 3 had multi site included for 1 additional site. It seems I was wrong. And in their blog it says its 49$ but when I go to the checkout it asks me 199$ :(
I’m honestly not sure if I should purchase this because the documentation is like 4 short pages and I can’t find any demos for the config either. What I want is to have my site in 2 languages (and possible 3 in the future). I don’t want to use channels because I think having all the content in the database is a very bad idea for performance reasons and second, language sites can be slightly different in the future. That would work for a small site but having all content pulled from MySQL is just extremely bad.
What I want is to have different template files for each site, so each template has its own content. Now the reason I’m not sure if MSN can help me here is because there are not actually different sites. I will not use a sub-domain like en.example.com and I will not use a different domain per language site either. I could, but I realized this will be to expensive regarding licenses, SSL, etc, as most softwares and services will threat each domain as a different site which means extra costs. So what I actually want is to just to use the same domain as www.example.com/en
I could do this right now, but it means /en/ would be a template group already and then it would be different and more complex vs the original site. Example:
www.example.com/news
Would be different than example.com/en/new
I cannot find any documents or screenshots on how MSN is actually configured this way and I don’t want to spend money to find out it doesn’t work this way. I cannot find a sales contact button on Ellis Lab site either.
Can I add an additional site with MSN as: www.example.com/en/
But then maintain the same channel and group structure on both sites? Example:
Main site: example.com/news/hello
Additional site: example.com/en/news/hello
But in both cases, for both sites this would be just 1 group (news) and one template (hello).
As you can I see I want to maintain internally the same file structure between sites, this means same number of channels and groups. Even while the content on them can and probably will be different. At least with EE 2 I never did this because you can’t have a group inside another group, so with this url structure “news” would be a group in the main site, but in the additional site it would be a template as “en” is already a group. This is why I want to know if there is a way to avoid this and if MSN is the solution.
I would really appreciate if someone that has MSM can update this topic and tell me if this would be a correct solution or if I should not bother and should use a different approach.
I don’t want to use channels because I think having all the content in the database is a very bad idea for performance reasons and second, language sites can be slightly different in the future. That would work for a small site but having all content pulled from MySQL is just extremely bad.
In regards to this, in MSM, all the various site’s data are stored together in the same database. However, it’s not entirely clear why you feel pulling the data from the DB is “extremely bad.” It’s generally how a CMS site, or any dynamic site functions. There are various caching options, native and through add-ons to optimize performance and reduce server/db loads.
That said, if your intent is simply 2 or 3 multilingual sites that share the exact same structure, I would use segments, template routing and custom fields. Regarding template routes, here is more info on that: https://ellislab.com/expressionengine/user-guide/urls/template_routes.html
This example is a bit old but the general concept is there for a more native approach to multilingual: http://eeinsider.com/articles/multi-language-solutions-for-expressionengine
I’ve also used the Transcribe add-on with success, though I don’t know if they will be updating for EE3 http://eeharbor.com/transcribe
Actually I will just use different template groups in different names instead of MSM.
I just realized that for SEO purposes the correct thing is to actually have the urls on each language, so having different sites in EE while better organized in terms of templates and groups would be a bit overkill unless each site is going to be huge or managed by different users. Since each url is going to be different, I can just create different template groups and names in the same site.
I still think pulling everything from database is overkill. You are quering MySQL for every single piece of text. In terms of performance and scaling this is just terrible. Its not the same to pull one page in one query, than having to do it for different phrases and words.
If a site uses 5 servers this way, the same site where text is not in the database, could use probably 1. Its extremely overkill to pull every single piece of text (every word, every phrase) from the database if its not going to serve a dynamic purpose. Example, if the text is going to change based on the user interaction, then it’s a requirement, but if it’s a fixed static text, that will never change, and its different on each language, there is no reason. It would be better to have it output directly on the template.
The other problem I see with that approach is that you are boxed now in terms of structure. It means, all words, all phrase that exists in one language, have now to exist in the other one as well or they will not match.
This may work fine for small sites, but not for bigger ones where sites in a different language can be different over time. The truth is you are not going to have exactly the same content on each language. Some phrases are longer in some languages, so they would not fit exactly in the design as another language. Some are redundant. This means eventually you will need to have different sites while similar are not exactly the same.
I still think pulling everything from database is overkill. You are quering MySQL for every single piece of text. In terms of performance and scaling this is just terrible.
Well, that’s not entirely true. Again, you can avoid this by caching.
https://ellislab.com/expressionengine/user-guide/optimization/caching.html
http://www.causingeffect.com/software/expressionengine/ce-cache
Also of possible interest/assistance, this recently posted article/tutorial: http://shoeshinedesign.com/articles/multilingual-expression-engine-part-1
Packet Tide owns and develops ExpressionEngine. © Packet Tide, All Rights Reserved.