SPIP-Contrib

SPIP-Contrib

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

288 Plugins, 197 contribs sur SPIP-Zone, 179 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 ?
  • [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 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

  • Refonte de l’identité graphique

    10 juillet – 31 commentaires

    Lors de la SPIP Party 2017 à Toulouse, un nouveau contributeur est venu nous présenter son travail sur une refonte du logo. Au delà de la refonte du logo, c’est une toute nouvelle identité graphique pour SPIP que Jordan nous propose. Voici une (...)

  • Enluminures typographiques V3

    25 juillet 2009 – 185 commentaires

    Les Enluminures typographiques V3 permettent d’ajouter au Porte plume les raccourcis typographiques présents dans le Plugin Barre Typographique Enluminée. C’est une extension du PortePlume. Pour la documentation d’usage, se reporter à celle du (...)

  • LinkCheck : vérificateur de liens

    13 février 2015 – 94 commentaires

    Ce plugin permet de chercher et tester l’ensemble des liens présents dans les objets. Vous pourrez donc en quelques clics connaître les liens brisés ou défectueux qui se sont immiscés dans le contenu de votre site SPIP. La vérification s’effectue en (...)

  • Serveur HTTP abstrait

    25 novembre 2013 – commentaires

    Un plugin-outil pour aider les développeurs à implémenter des API orientées REST, basées sur les méthodes HTTP (get, post, put, delete). Ce plugin a pour but premier de normaliser des URL que l’on pourra appeler pour manipuler les données du site. À (...)

  • Agenda Fullcalendar facile

    29 octobre 2016 – 33 commentaires

    Dans un précédent article, nous expliquions comment afficher un agenda Fullcalendar sur son site avec le plugin agenda. Cependant, ceci nécessite des manipulation de squelettes, ce qui n’est pas toujours évident lorsqu’on débute. La présente (...)

Ça spipe par là