Frefred.fr

Gestion des sites multilingues - host_uri

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 ).

Bookmark and Share

Commentaires

#1 - Le 08 mars 11 par Jérémy Rocchia

Contenu

Très bon article, je suis d'ailleurs en train d'essayer de tester les configurations. Par contre je ne vois pas la limite dans le contenu, j'entends par là le fait d'avoir un contenu spécifique sur un site A qui n’apparaît pas sur un site B

#2 - Le 08 mars 11 par frefred

Séparation du contenu

Dans la gestion multi site, multilingue, j'utilise pas mal les sections, qui permettent de séparer le contenu, et d'affecter les droits aux utilisateurs, via des limitations sur les rôles.

Cependant, la petite nuance est que tu peux contrôler ce que l'on peut créer dans ton arborescence du site, mais tu as quasi aucun contrôle sur les différents front-end. Les visiteurs pourront voir le contenu des 2 sites sur n'importe quel frontEnd. Si tu ajoutes un PagePrefix, ils auront une erreur si ils y accèdent via l'url_alias d'une autre pas, mais pas via une url système ( content/view/full/X )

#3 - Le 21 déc 11 par beats studio

http://www.homebeddingshop.com/

http://rift.brosale.com
I have been keeping track of your site for a long time I read these articles, this is an

interesting reading I will continue to pay attention to it more

Your article is one of the most classical style, when I read once, I have been deeply in

love with them, you look forward to more perfect work.

Ajouter un commentaire