[spip-dev] instruction spip pour include

Bonsoir,

comme l'include me manquait vraimment et que l'astuce 'par le web' (cf.
mail d'Arno, ne fonctionne pas chez tous les hébergeurs) ne me plaisait
qu'à moitié, j'ai fini par rajouter une fonction d'include directement à
spip.

La syntaxe est :
<INCLURE fichier=trucchose.html />
La commande peut être placée n'importe où dans un squelette et fait ce
que son nom dit : elle insére le contenu du fichier trucchose.html, et
les boucles de ce fichier seront traitées.
Je teste intensément actuellement et franchement ça fait bien le café
pour les éléments répétitifs :slight_smile:
Le code n'est vraimment pas complexe par contre il modifie
in-calcul-squel.php3 donc, à moins d'être intégré dans une distrib je ne
pense pas qu'il soit recommandé à tous.

Je vous joins le fichier in-calcul-squel.php3 modifié et, ci dessous,
les modifs effectuées.

Une petite modif sur la fonction parser_texte($texte, $id_boucle) :
juste rajouter au début :
    $texte = parser_include($texte);

et une nouvelle fonction :

function parser_include($texte) {
  global $rubriques_publiques;
  global $recherche;

  //
  // Detecter et parser l'instruction include,
    // le cas échéant, insérer le fichier
  //

  $p = strpos($texte, '<INCLURE');
    while (!(!$p && (substr($texte, 0, strlen('<INCLURE')) != '<INCLURE'))) {
          $avant = substr($texte, 0, $p);
          $suite = substr($texte, $p);
          if (!ereg("(<INCLURE[[:space:]]*fichier=([a-zA-Z0-9]*)\.html[[:space:]]*/>)", $suite, $match)) {
            die ("<h2>Syntaxe include incorrecte :</h2>".htmlspecialchars($suite));
          }
          $commande = $match[1];
          $fichier=$match[2];
          $suite = substr($suite, strlen($commande));
          $incl = join(file("$fichier.html"), "");
          $texte = $avant.$incl.$suite;
          $p = strpos($texte, '<INCLURE');
    }
    return $texte;
}

inc-calcul-squel.php3 (51 KB)

Tout d'abord, excusez-moi si j'ai raté une ligne dans ce superbe fichier
qu'est le todo.txt.

J'ai vu circuler une proposition de Walk sur la liste [spip] qui était
d'intégrer dans les futurs distrib les fonctions développées en externes qui
étaient beaucoup utilisées. Je pense notamment à la célèbre
corbeille.php3... mais il y aurait aussi la fonction permettant de limiter
les caractères de l'introduction, et sans doute bien d'autres. Alors, voilà
mon idée. Je ne sais pas si cela demanderait beaucoup de travail mais si
cela est possible sans beaucoup d'efforts, pourquoi ne pas demander aux
utilisateurs ce qu'ils souhaiteraient voir intégrer (par un sondage pourquoi
pas).

Aude

P.S. : Votre travail est formidable et le nombre croissant de nouveaux
utilisateurs le montre bien.
Merci à toute l'équipe !

Bonjour,

Abonné à la liste spip-dev depuis plus de 4 mois, j'ai suivi avec intérêt
les différentes discussions liées aux demandes exprimées par les
utilisateurs, aux évolutions souhaitées, aux forks probables, ...

Si j'ai bien saisi, SPIP n'a pas vocation (et c'est tant mieux) de devenir
un système à tout faire ... ce qu'il finirait d'ailleurs par mal faire. En
ce sens, la définition par le trio de tête des orientations pour les
prochaines évolutions de SPIP garantie la cohérence future du système.

Néanmoins, je pense que la proposition faite par Aude (système de sondage
des utilisateurs) est intéressante, puisqu'elle permettrait aux développeurs
de mesurer l'intérêt de chacun pour les différentes propositions entendues,
tout en conservant le contrôle final sur les orientations futures.

Bref, un bon moyen pour allier ouverture (aux idées et aux besoins exprimés)
et "cohérence".

Salutations.

Le problème lors de l'INCLUDE que tu proposes est que si on inclue un
fichier deux fois, les boucles vont pas marcher (même nom). Idem sans
doute si le fichier inclus comporte une balise INCLUDE... Donc disons
que c'est une solution temporaire sympa en attendant que quelqu'un ait
"L'Idée" (TM) pour gérer les inclusions.

A part ça, juste pour chipoter, comme SPIP est francophone, autant
appeler la balise "INCLURE", ça sera plus consistant :wink:

a+