Faire un don ! | | style | statistiques | contactez-nous | plan | lettre d'information

Programmation.shell : Insérer un contenu dans un modèle

Posté par MilkaJinka () le 03 avril 2008

Après plusieurs tentatives infructueuses de ma part, je viens quémander votre aide sur un petit script pour un site statique.



Je voudrais automatiser l'inclusion du contenu (juste le corps du texte avec les balises qui vont bien) dans un modèle de page, et en gardant le modèle dans un seul fichier.



Au final, mon fichier source/divers/truc.txt devrait donner la page divers/truc.html. En gros, il y aurait dans le modèle un gros {CONTENU} à remplacer par le contenu effectif des fichiers. Et c'est là que je bloque. J'ai eu beau tripatouiller find et sed, je n'y suis pas arrivé... Un petit coup de pouce pour que je m'améliore ?

> Lire le message (7 commentaires, moyenne: 2,4).  

Vous avez demandé le commentaire #919571.

Site ou site

Posté par Sébastien Koechlin () le 03/04/2008 à 14:04. (lien). Évalué à 3.

Si ton site est un site web qui tourne sous Apache, il existe un module qui fait cela très bien, c'est mod_include http://httpd.apache.org/docs/2.2/mod/mod_include.html
Il vient par défaut depuis des lustres, il est beaucoup plus léger que PHP et bien documenté.

Si tu veux pré-générer les pages; cpp est le préprocesseur C, il est également facile a utiliser et très largement distribué sur de très nombreuses plateformes.

  • [^]Re: Site ou site

    Posté par MilkaJinka () le 03/04/2008 à 18:19. (lien). Évalué à 2.

    Comme je l'ai écrit dans le commentaire plus haut, je souhaite faire le truc le plus minimal et le plus générique possible, qui donne des pages HTML pur jus faciles à gérer, qu'on peut facilement faire servir par un mini-serveur http sur une vieille bécane ou de l'embarqué.

    Accessoirement c'est pour m'améliorer en shell ^^

    --
    Persiste.
    • [^]Re: Site ou site

      Posté par B. franck () le 04/04/2008 à 02:27. (lien). Évalué à 3.

      ligne=$(grep -n '{CONTENU}' truc.html | cut -d ':' -f 1)
      renvoie le numéro de la ligne contenant la balise

      head -n $(($ligne - 1)) truc.html > partie1.html
      la première partie

      sed -ne '/{CONTENU}/,$ p' truc.html | tail -n +2 > partie2.html
      la deuxième partie

      les 3 cat pour reconstituer:

      cat partie1.html truc.txt partie2.html > truc.html


      sinon après y'a perl qui est plus à même de faire ça rapidement/facilement...