Gestion des sites multilingues - host_uri
Publié le 04 mars 2011 | 3 commentaire(s) | Tags : configuration , langue |
Au Luxembourg, 99% des sites sont multilingues ( Français, Allemand, Anglais ). L'utilisateur doit pouvoir y accéder via différentes urls propres, à la fois en mode host, comme en mode uri. eZ publish fournit plusieurs fonctionnalités pour gérer les redirections de façon propre, à savoir le module switchlanguage, et le mode "host_uri" apparu à la 4.4.
Module switchlanguage
Le module switchlanguage possède une unique vue "to". Cette vue permet de gérer toutes les redirections selon la configuration d'eZ publish et par siteaccess. Elle prend comme paramètre 2 variables :
- siteaccess : cette variable est obligatoire. C'est le nom du siteaccess vers lequel vous voulez être redirigé ( ex : website_en pour voir la version anglaise ).
- url : cette variable est optionnelle. C'est l'url de votre objet courant. ( ex : contact ). Par défaut, si cette valeur n'est pas fournie, la page d'accueil sera affichée.
switchlanguage fonctionne de manière différente selon le paramètre MatchOrder, défini dans le site.ini Selon la valeur de MathOrder, on aura les fonctionnements suivants :
- uri : MatchOrder est définit à uri. switchlanguage va faire une simple redirection, avec l'adresse du serveur et le nom du siteaccess à la suite ( ex : www.example.com/website_en )
- les autres : Si MatchOrder est définit avec n'importe quelle autre valeur possible ( host, port, host_uri ), switchlanguage va récupérer la valeur de SiteSettings/SiteURL définit dans site.ini pour le siteaccess demandé. ( ex : redirection vers en.example.com )
Cela permet d'avoir des redirections propres, sans avoir à définir un tableau des noms de domaine à côté. Il suffit d'écrire dans son template 1 à N liens selon le nombre de langue :
<a href={concat( 'switchlanguage/to/website_en/', $requested_uri_string)|ezurl}>English</a>
Mode host_uri
eZ publish permet de gérer la redirection des siteaccess via différents modes tel que uri,host,port. Dans le cas ou pour un site, on doit avoir les 2 tel que uri, et host. Le module switchlanguge va prendre par défaut le mode uri, ce qui convient pas trop. Depuis eZ publish 4.4, on trouve un nouveau mode qui est host_uri.
Le mapping du mode host_uri se fait via le tableau HostUriMatchMapItems qu'on retrouve dans Site.ini/SiteAccessSettings
Le mode host_uri prend 3 paramètres par ligne :
- hostname : le nom de domaine ( ex : en.example.com )
- uri : la partie à prendre en compte après le / final
- siteaccess : le nom du siteaccess à prendre
- method : cette parti permet de spécifier le type à prendre ( start/end/part/strict ) Par défaut, c'est strict qui est pris. La valeur par défaut peut être modifiable via SiteAccessSettings/HostUriMatchMethodDefault dans le fichier site.ini
On retrouvera dans site.ini des valeurs de type :
# SiteAccessSettings MatchOrder=host_uri HostUriMatchMapItems[]=en.example.com;;website_en
Il permet de traiter tous les cas de figure qu'on peut retrouver pour un site ( multilingue, multi-site, etc. )
Exemple de configuration
Pour fournir un exemple concret, on va prendre un site qui a comme caractéristiques :
- site multilingue ( Français, Anglais )
- multi site ( site institutionnel, site événementiel )
- splash page permettant de renvoyer vers le site institutionnel, ou le site événementiel
Par rapport à ces conditions, on peut déterminer l'obligation d'avoir comme siteaccess www_fr et www_en ( pour gérer la splash page ), web_fr et web_en ( pour gérer le site institutionnel ), event_fr et event_en ( pour gérer le site évenementiel )
Pour gérer ce genre de cas , on retrouvera dans le fichier de surcharge site.ini :
# SiteAccessSettings MatchOrder=host_uri HostUriMatchMapItems[]=example.com;fr;www_fr;end HostUriMatchMapItems[]=example.com;en;www_en;end HostUriMatchMapItems[]=fr.example.com;;web_fr HostUriMatchMapItems[]=en.example.com;;web_en HostUriMatchMapItems[]=fr.news.example.com;;news_fr HostUriMatchMapItems[]=en.news.example.com;;news_en
On retrouvera les urls des sites que l'on veut dans les fichiers ini des siteaccess. Par exemple, on retrouve dans le site.ini du siteaccess web_fr
# SiteSettings SiteURL=fr.example.com
En utilisant le module switchlanguage, l'utilisateur sera renvoyer correctement vers le bon site., à savoir switchlanguage/to/web_fr renverra automatiquement vers fr.example.com
Cela permet d'avoir différentes configurations selon l'environnement ( développement, recette, production ).
Commentaires
#1 - Le 08 mars 11 par Jérémy Rocchia
#2 - Le 08 mars 11 par frefred
#3 - Le 21 déc 11 par beats studio
Ajouter un commentaire