SPIP-Contrib

SPIP-Contrib

عربي | Deutsch | English | Español | français | italiano | Nederlands

286 Plugins, 197 contribs sur SPIP-Zone, 175 visiteurs en ce moment

Accueil > Squelettes > Tutoriels pour squelettes > Convention d’échange de squelette

Convention d’échange de squelette

11 février 2006 – par marcopol

1 vote

Quel est le Webmestre qui n’a pas eu besoin un jour de faire une variante de rubrique ou de toute autre page de son site ? Ensuite se pose la question de faire partager cette variante.

Un moyen simple de partage est le fichier séparé, un squelette de page, plutôt qu’un morceau de code à insérer quelque part. Spip le permet de plusieurs manières :

-  avec un numéro de rubrique comme dans article-XX.html, rubrique=XX.html

-  de manière indirecte avec boucle et mot-clé : si le squelette de page invoqué est flanqué d’un certain mot-clé, la boucle pourra inclure le squelette spécialisé (la variante) au lieu du squelette standard.

Malheureusement cette dernière solution n’est pas normalisée , d’où cette proposition de convention d’échange entre fournisseur de squelette et client. Elle permettra d’intégrer immédiatement des squelettes de page dans des squelettes de site.

Convention

Ce qui est indiqué ci-après pour les articles est transposable à n’importe quel autre squelette de page (rubrique , brève...). La version de Spip minimum est 1.8.2e.

Coté fournisseur

-  donner un nom si possible unique à la variante ; par exemple walma3

-  nommer le squelette d’après le nom de variante soit très exactement : article-walma3.html (on aurait de manière analogue rubrique-walma3.html pour une rubrique

-  éviter d’utiliser la balise #SELF si la variante doit se référencer elle-même (cas des squelettes ayant à transférer des paramètres). En effet, #SELF irait référencer article.html au lieu de article-walma3.html. A la place de #SELF il faudra donc désigner la page de manière explicite soit directement (page.php3 ?fond=article-walma3) soit par la balise #PAGE{walma3} si l’on a besoin d’utiliser des filtres.

-  joindre le code de la balise #PAGE si besoin

Coté client

En condition préalable, le site client devra comporter :

-  une boucle de sélection de variante dans article.html
-  le cas échéant, le code de #PAGE dans mes_fonctions.php3

Cette préparation, décrite en annexe, sera à faire une fois et permettra d’accueillir plusieurs variantes.

On mettra en service une variante simplement en :

-  créant le mot clé walma3
-  déposant article-walma3.html dans son dossier squelettes

Après quoi les rédacteurs n’auront plus qu’à opter pour la variante avec un simple ajout de mot-clé à leur article

Annexe

Exemple de sélecteur

Un exemple de code pour la sélection de variante dans article.html. Ici on a choisi de regrouper les mots-clés de variante dans un groupe _Article pour lequel il est conseillé de cocher le choix d’unicité.

<BOUCLE_extension (ARTICLES){id_article}{type_mot==_Article}>
       [(#REM) Appel d'une variante ]
       <BOUCLE_ext(MOTS){id_article}{type=_Article}{0,1}>
               <INCLURE(page.php3){fond=article-#TITRE}{id_article}{debut_page}>
       </BOUCLE_ext>
</BOUCLE_extension>


.... le squelette standard d'article.....



<//B_extension>

On voit bien ici : article-#TITRE comment est construit le nom de variante, avec #TITRE comme nom du mot clé associé à l’article.

On peut faire la boucle de manière différente, l’essentiel étant de déclencher l’inclusion du bon squelette avec le mot-clé.

La balise #PAGE

Le code de la balise #PAGE à insérer facultativement dans mes_fonctions.php3. Cette balise ne préjuge pas du type de squelette et fonctionnera aussi bien pour des rubriques, brèves etc.

function balise_PAGE($p) {
  if ($a = $p->param) {
      $sinon = array_shift($a);
      if  (!array_shift($sinon)) {
        $p->fonctions = $a;
        array_shift( $p->param );
        $nom = array_shift($sinon);
        $nom = ($nom[0]->type=='texte') ? $nom[0]->texte : "";
      }
  }
  if (!$nom) {
      // #PAGE sans argument : idem #SELF
      $p->code = 'quote_amp($GLOBALS["clean_link"]->getUrl())';
  } else {
      ereg("\?(.*)$", quote_amp($GLOBALS["clean_link"]->getUrl()), $regs);
      $p->code = '\'page.php3?fond='.$nom.'&'.$regs[1].'\'';
  }
  $p->statut = 'php';
  return $p;
}

Voir en ligne : L’article d’origine (à consulter pour la version à jour)

Dernière modification de cette page le 26 mai 2007

Retour en haut de la page

Répondre à cet article

Qui êtes-vous ?

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 Les choses à faire avant de poser une question (Prolégomènes aux rapports de bugs. )
Ajouter un document

Retour en haut de la page

Ça discute par ici

  • Import ICS 2 (agenda distant)

    2 août – 35 commentaires

    La version 2 du plugin « import ICS » en reprend la principale fonctionnalité, à savoir l’ajout automatique d’évènements distants dans la liste des évènements d’un site. À la différence de la première version, elle ne dépend pas du plugin « Séminaire » et est (...)

  • Newsletters

    16 janvier 2013 – 374 commentaires

    Ce plugin permet de composer des Info-lettres. Par info-lettre, on désigne ici le contenu éditorial qui va être composé et envoyé par courriel à une liste d’inscrits. Le plugin permet de composer une info-lettre à partir d’un modèle pré-composé, (...)

  • CKeditor 3.0

    4 octobre 2009 – 1217 commentaires

    CKeditor est l’évolution de l’éditeur WYSIWYG : FCKeditor, avec ce plugin vous pourrez utiliser cet éditeur à la place de l’éditeur de spip tout en laissant le choix à vos auteurs de l’éditeur qu’ils préfèrent utiliser. Attention : cet éditeur WYSIWYG (...)

  • GIS 4

    11 août 2012 – 1284 commentaires

    Présentation et nouveautés La version 4 de GIS abandonne la libraire Mapstraction au profit de Leaflet. Cette librairie permet de s’affranchir des librairies propriétaires tout en gardant les mêmes fonctionnalités, elle propose même de nouvelles (...)

  • SPIPr

    23 mars 2015 – 75 commentaires

    SPIPr est à la fois une famille de squelettes et un framework pour le développement front avec SPIP. Prêt à l’emploi, thémable, responsive, et conçu dans une approche d’industrialisation et de développement rapide. Documentation source : (...)

Ça spipe par là