Comment déclarer un modèle pour le plugin “Insérer Modèles”

On décrit le formulaire permettant de saisir les arguments d’un modèle monmodele à l’aide d’un fichier YAML à placer dans le répertoire modeles/.

Dans les cas simples, ce fichier YAML aura le même nom que le modele HTML, mais ce ne sera pas nécessairement le cas puisque différentes configurations d’un même fichier HTML peuvent être décrites par différents fichiers YAML.

Ce fichier YAML a la syntaxe suivante:

nom: 'nom du formulaire'
logo: 'chemin relatif d une icône'
icone_barre: 'nom d une icone 16x16 pour le porte-plume et présente dans le répertoire icones_barre'
parametres: un tableau de saisies

Parmi les paramètres, celui de nom modele est obligatoire et doit obligatoirement être renseigné (éventuellement sous forme d’un hidden).

Quatre noms de paramètres, id_modele, variante, classe et align, sont facultatifs et d’un usage spécifique. En effet, le formulaire produira le code suivant : <modeleid_modele|variante|classe|align|param1=valeur1|param2=valeur2>.

Un exemple simple, pour l’insertion d’un formulaire formidable :

nom: '<:formidable:modele_nom_formulaire:>'
logo: 'images/formulaire-24.png'
icone_barre: 'formulaire.png'
parametres:
  -
    saisie: 'hidden'
    options:
      nom: 'modele'
      defaut: 'formulaire'
  -
    saisie: 'hidden'
    options:
      nom: 'variante'
      defaut: 'formidable'
  -
    saisie: 'formulaire_formidable'
    options:
      nom: 'id'
      label: '<:formidable:modele_label_formulaire_formidable:>'
      cacher_option_intro: 'oui'

Personnaliser les traitements

Dans certains cas de modèles complexes (voir par exemple les modèles media), il peut être pertinent de personnaliser les traitements. Auquel cas, au début du fichier YAML de description du modèle, on précisera le nom d’une fonction à utiliser pour le traitement sous la forme traiter: 'ma_fonction'.

Ensuite, on définira la fonction formulaires_ma_fonction_dist dans le fichier PHP formulaires/ma_fonction.php. Cette fonction prendra un unique argument $champs contenant la liste des champs du modèle et renverra le code d’insertion du modèle. Voir les sources des modèles media pour un exemple.

Porte-plume

Le porte plume ne s’actualise pas rapidement. Si votre bouton n’apparait pas, pensez à vider le répertoire /local/

updated on 24 July 2019

Discussion

2 discussions

  • 2

    Bonjour,

    Je me heurte à un bogue (à moins que ce soit une incompréhension de l’article ?) Voici ma configuration :

    • SPIP 3.2.5
    • Insérer Modèle 1.3.4
    • Saisies 3.25.1
    • Vérifier 1.9.5
    • YAML 2.0.11

    Ensuite, voici un modèle type, toto.html pour reproduire le problème que je rencontre :

    <BOUCLE_a(ARTICLES){id_article=#ENV{id}}{tous}>#INTRODUCTION</BOUCLE_a>

    Avec ça, je peux mettre dans un article, par exemple pour référencer l’intro numéro 5, <toto5> ou <toto|id=5> etc.

    Bien, voici maintenant un fichier toto1.yaml type problématique :

    ---
    nom: 'test 1er'
    parametres:
      - saisie: 'hidden'
        options:
          nom: 'modele'
          defaut: 'toto'
      - saisie: 'selecteur_article'
        options:
          nom: 'id'
          label: "quel article ?"
          defaut: ''
          obligatoire: 'oui'

    Et là, c’est le drame... ; le modèle généré est : <toto|id=article|5>

    Bien, maintenant un autre fichier toto2.yaml tout aussi problématique :

    ---
    nom: 'test 2nd'
    parametres:
      - saisie: 'hidden'
        options:
          nom: 'modele'
          defaut: 'toto'
      - saisie: 'selecteur_article'
        options:
          nom: 'id_modele'
          label: "quel article ?"
          defaut: ''
          obligatoire: 'non'

    Le modèle généré est tout aussi étrange : <totoArray> Il va de soi qu’en mettant obligatoire à « oui » on ne peut pas valider (me suis arraché les cheveux un bout de temps dessus)

    Je n’ai pas fait d’autres essais, ne sachant plus trop par quel bout le prendre.

    • Bonjour,
      le problème vient du fait que la saisie selecteur_article renvoie la valeur article|5 et non la valeur 5.

      A ma connaissance, il n’y a pas d’option actuellement pour que cette saisie renvoie que l’identifiant. Il faudrait signaler le besoin sur le forum de discussion du plugin saisies ou bien sur la liste de discussion Spip-Zone.

      Une solution temporaire, si le site n’utilise pas de traduction d’article, est d’avoir recours à la saisie articles_originaux qui ne liste que les articles qui ne sont pas une traduction, sous la forme d’un gros select (et non d’un sélecteur comme selecteur_article).

      Cordialement

    • Merci pour la réponse. (je me demande s’il ne doit pas y avoir une petite note dans l’article qui déconseille les saisies selecteur_...)
      Merci aussi pour la piste des articles_originaux qui répond à mon besoin et donne un modèle (s’il y a des articles non originaux à prendre en compte) certes plus lourd dans la page mais plus accessible (boucles classiques) pour moi.

    Reply to this message

  • 1

    Bonjour,
    quelque chose doit m’échapper... je n’arrive pas à déclarer le formulaire.
    J’ai écrit un fichier “monmodele.yaml” l’ai placé dans le répertoire “squelettes/modeles/”, vidé le répertoire “/local/” et certains sous-répertoires de “tmp/”
    Le modèle n’apparaît pas...
    Que faut-il faire de plus ?
    Merci
    Cordialement

    • Le modèle existe-t-il ? Il est appelé avec quels paramètres ? (syntaxe globale attendue) Enfin, quel est le contenu de ton YAML ?

    Reply to this message

Ajouter un commentaire

Who are you?
[Log in]

To show your avatar with your message, register it first on gravatar.com (free et painless) and don’t forget to indicate your Email addresse here.

Enter your comment here

This form accepts SPIP shortcuts {{bold}} {italic} -*list [text->url] <quote> <code> and HTML code <q> <del> <ins>. To create paragraphs, just leave empty lines.

Add a document

Follow the comments: RSS 2.0 | Atom