Plugin Domlang : Domaines par secteur de langue

Domlang est un plugin qui permet d’associer un nom de domaine ou un sous-domaine à un secteur de langue.

Ce plugin convient pour un site qui utilise des secteurs de langues. En configuration, pour chaque secteur, vous pourrez définir une URL spécifique (nom de domaine ou sous domaine) qui correspond à cette langue.

Caractéristique technique Importante

Ce plugin demande d’avoir au minimum php 5.4.0 !

Installation

Le plugin s’installe comme n’importe quel plugin.

Structure de votre site multilingue
Votre site doit contenir des secteurs de langue (plus d’informations sur la création d’un site multilingue par ici)

Gestion de vos domaines
Pour pouvoir utiliser Domlang, vos noms de domaines et/ou sous-domaines doivent pointer vers le même dossier de votre serveur (vérifier la possibilité de gérer le dossier de destination de votre nom de domaine chez votre hébergeur).

Configurer Domlang

-  Configurer les noms de domaines
Dans /ecrire/ ?exec=configurer_domlang
Le formulaire de config liste les secteurs existants, et permet de renseigner le nom de domaine de chaque langue/chaque secteur.

Domlang : configuration des urls par secteur de langue

-  Réécrire les urls en fonction du secteur
Dans /ecrire/ ?exec=configurer_urls
Sélectionner « URLs Arborescente sans secteur de langue » (/arbo/sans/la/racine/article/titre)

Domlang : configurer les urls arborescentes sans secteur de langue

Balises modifiées par le plugin

Certaines balises d’URL sont modifiées afin d’utiliser les domaines configurés :

  • #URL_SITE_SPIP retourne l’URL du site pour la langue en cours d’utilisation
  • #URL_ARTICLE ou #URL_RUBRIQUE retournent une URL relative si l’article ou la rubrique est dans la langue en cours, sinon, ces balises retournent une URL absolue de l’article ou la rubrique avec l’URL correspondant à sa langue.

Discussion

3 discussions

  • Salut,
    est-ce qu’un portage en spip 4.0 est prévu ?
    En tout cas, super boulot !

    Répondre à ce message

  • 1

    Salut

    Le plugin est nickel ça répond bien à un cas d’usage rencontré.

    Je n’ai pas encore regardé comment faire mais il serait intéressant de permettre la surcharge au niveau du plugin menu. Par exemple si on défini un élément de type arborescence ,le contexte du secteur n’est pas pris en compte.

    • Salut

      J’ai une solution qui me semble bancale. J’ai créé une balise #SECTEUR_DOM qui prend le contexte de langue ou en argument la langue fournie et retourne l’id_rubrique associée.

      /**
       * Compile la balise <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+I1NFQ1RFVVJfRE9NPC9jb2RlPg=="></span> qui retourne le secteur associé à l'URL du site
       *
       * Peut transmettre une langue en premier paramètre
       * <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+I1NFQ1RFVVJfTEFOR3tlbn08L2NvZGU+"></span>
       *
       * @balise
       *
       * @param Champ $p
       *     Pile au niveau de la balise
       * @return Champ
       *     Pile complétée par le code à générer
       */
      function balise_SECTEUR_DOM_dist($p) {
      	$lang = interprete_argument_balise(1, $p);
      	$p->code = "domlang_get_secteur($lang)";
      	$p->code = "spip_htmlspecialchars(" . $p->code . ")";
      	$p->interdire_scripts = false;
      	return $p;	
      }
      
      
      /**
       * Définit le secteur associé au domaine depuis lequel on arrive.
       *
       * Si on ne trouve pas de langu on conssidére la langue du domaine principal.
       *
       */
      function domlang_get_secteur($lang = null) {
      	if (!$lang) {
      		$lang = $GLOBALS['spip_lang'];
      	}
          $id_rubrique = sql_getfetsel('id_rubrique','spip_rubriques', array('id_parent =0','lang ='.sql_quote($lang)));
          return $id_rubrique;
      }

      Ensuite dans une surcharge du squelette rubriques_completes.html de menu j’ai rajouté le test suivant

      [(#GET{id_rubrique}|=={0}|oui) #SET{id_rubrique,#SECTEUR_DOM}]

      Je suppose qu’on peut rendre plus transparent ce comportement.

    Répondre à ce message

  • 1

    #ClapClapClap :-)

    juste le passage sur les paramétrages d’url sont pas clairs (et les explications sur le formulaire lui même non plus d’ailleurs).
    Faut il impérativement passer en urls arbos ? pourquoi ?

    Merci ;)

    • Bonjour Loiseau2nuit

      Quelles sont les infos qu’il te manque pour le paramétrage ?

      Pour les urls arbos, oui... C’est l’objet-même du plugin.

      Si tu n’as pas besoin d’urls arbo, tu peux gérer ton site multilingue (ou non) avec le plugin multidomaines qui permet d’associer un nom de domaine à un secteur.
      Le hic en multidomaines, c’est que quand tu utilises les urls arbo, tu as un niveau d’arborescence inutile...

      Exemple :
      Ton secteur 1 a pour titre « secteur FR » et est configuré en langue française. Tu lui associes le domaine « mondomaine.fr ».
      Ton secteur 2 a pour titre « secteur EN » et est configuré en langue anglaise. Tu lui associes le domaine « mydomain.com ».
      Avec multidomaines, tes urls ressembleront à :
      mydomain.com/secteur-EN/bla-bla
      Or :
      -  mydomain.com et mydomain.com/secteur-EN/ affichent le même contenu (celui de ton secteur 2)
      -  tu ajoutes un niveau de répertoire virtuel (ici /secteur-EN/) qui n’est pas pertinent

      C’est là que Domlang intervient en supprimant le premier niveau d’arborescence dans l’url.

      Bonne fin de journée !

    Répondre à ce message

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom