[spip-dev] Variable dans le corps d'un article?

Bonjour,

J'administre plusieurs sites dont certains articles sont communs. Afin de faciliter leur maintenance, je souhaiterai pouvoir utiliser des variables à remplacement automatique dans le corps des articles (par exemple, le nom du domaine). Est-ce possible et si oui, comment?

D'avance merci de vos réponses.

Cordialement

Constant Depièreux
Managing Director
Applied Quality Technologies Europe sprl
Rue des Déportés 123, B-4800 Verviers
Courriel : constant.depiereux@aqte-consulting.eu
Web: http://www.aqte-consulting.eu - http://www.qualitionnaire.eu

J'administre plusieurs sites dont certains articles sont communs. Afin de
faciliter leur maintenance, je souhaiterai pouvoir utiliser des variables à
remplacement automatique dans le corps des articles (par exemple, le nom du
domaine). Est-ce possible et si oui, comment?

Tu peux sans doute faire un modèle <nomdudomaine|> ; pour lus d'infos
regarde sur spip.net, ou demande sur la liste utilisateurs
spip@rezo.net

-- Fil

Perso, je ne sais pas si c'est très catholique, mais je me suis fabriqué une petite lame perso pour gérer certaines variables.

Sur un site, j'utilise le raccourcis [tarif:FormuleX] qui est remplacé par la globale $tarif['FormuleX']
Sur un autre site, j'ai une lame qui recense toutes les variables d'un site sur la page de config :
  var1 = toto
  var2 = titi
ensuite les raccourcis [_var1] ou [_var2] sont remplacés partout dans le site. (on aurait pu mettre aussi [:var1:] ou [:var2:] pour ressembler aux raccourcis de langue, mais c'est plus long à écrire...)
Evidemment, seul un admin toutes rubriques a accès au contenu de ces variables.

Si ça vous intéresse et si vous utilisez le Couteau suisse, je peux faire une copie du code.

Pat

Constant Depièreux a écrit :

Pat a écrit :

Sur un site, j'utilise le raccourcis [tarif:FormuleX] qui est remplacé par la globale $tarif['FormuleX']
Sur un autre site, j'ai une lame qui recense toutes les variables

variables spip ou 'locales' ?

d'un site sur la page de config :
    var1 = toto
    var2 = titi
ensuite les raccourcis [_var1] ou [_var2] sont remplacés partout dans le site. (on aurait pu mettre aussi [:var1:] ou [:var2:] pour ressembler aux raccourcis de langue, mais c'est plus long à écrire...)
Evidemment, seul un admin toutes rubriques a accès au contenu de ces variables.

Si ça vous intéresse et si vous utilisez le Couteau suisse, je peux faire une copie du code.

ben oui, c'est intéressant toujours !
JL

JLuc a écrit :

Pat a écrit :

Sur un site, j'utilise le raccourcis [tarif:FormuleX] qui est remplacé par la globale $tarif['FormuleX']
Sur un autre site, j'ai une lame qui recense toutes les variables

variables spip ou 'locales' ?

Variables php dans ce cas.
Voici le code.

Il donne accès :

1. à toutes les constantes PHP du style :
  define('maConstante', 'toto');
    grâce au raccourci : [def:maConstante]
2. au tableau global $tarifs :
  $GLOBALS["tarifs"] = array(
    "Formule1" = 10,
    "Formule2" = 20,
  );
    grâce au raccourci [tarif:Formule1] par exemple.

Attention, ce code est très ouvert, il est livré à titre d'exemple et doit être adapté à chaque cas particulier.

############## COUTEAU SUISSE : LAME PERSO #################

// Installation d'une nouvelle lame personnalisee
$GLOBALS['mes_outils']['constantes_php'] = array(
  'nom' => 'Constantes PHP du site',
  'description' => 'De nouveaux raccourcis pour acc&eacute;der aux constantes du site.',
  'auteur' => 'Pat',
  'categorie' => 'typo-racc',
  'pipeline:pre_typo' => 'constantes_stage_pre_typo',
  'pipeline:nettoyer_raccourcis_typo' => 'constantes_php_nettoie',
);

// on nettoie les raccourcis
function constantes_php_nettoie($texte) {
  return constantes_php_pre_typo($texte);
}

// On indique le nouveau raccourci
function constantes_php_raccourcis() {
  return 'Constantes PHP : <b>[def:maconstante]</b> ou <b>[tarif:maformule]</b>';
}

// Fonction de remplacement
function constantes_php_rempl($texte) {
  $texte = preg_replace(',\[tarif:(.*?)\],e', '$GLOBALS["tarifs"]["$1"]', $texte);
  return preg_replace(',\[def:(.*?)\],e', '$1', $texte);
}

// Fonction de pipeline
function constantes_php_pre_typo($texte) {
  if (strpos($texte, '[')===false) return $texte;
  // appeler constantes_php_rempl() une fois que certaines balises ont ete protegees
  return cs_echappe_balises('', 'constantes_php_rempl', $texte);
}

Pat