Déclarer des noisettes au noiZetier

Où placer les noisettes

Une noisette est un fichier HTML placée dans un sous-répertoire noisettes situé dans le répertoire d’un plugin ou dans le répertoire squelettes.

Pour être utilisée par le noiZetier, une noisette doit impérativement être accompagnée d’un fichier de configuration au format YAML [1].

Nommage des noisettes

Une noisette pouvant s’insérer sur n’importe quelle page sera nommée tout simplement nom_noisette.html. Par convention, seuls les lettres minuscules et l’underscore (_) sont autorisés pour nom_noisette.

L’usage du tiret (-) est réservé pour spécifier les noisettes ne pouvant être incluses que sur une page spécifique et qui sont nommées nom_page-nom_noisette.html. Ainsi, une noisette spécifique à la page article sera nommée article-nom_noisette.html et le noiZetier ne la proposera que sur la page article et les compositions de la page article.

Au cas où une noisette ne devrait être proposée que sur une composition spécifique, elle sera nommée type-composition-nom_noisette.html

Décrire une noisette au format YAML

Pour bénéficier de toutes les possibilités offertes par le plugin Saisies ainsi que des vérifications offertes par le plugin Vérifier, il est nécessaire de décrire la noisette au format YAML.

Le fichier de configuration sera nommé de la même manière que la noisette. Seule son extension sera modifiée en .yaml.

Exemple :

nom: '<:aveline:nom_menu:>'
description: '<:aveline:description_menu:>'
icon: 'images/menus-24.png'
necessite:
  - 'menus'
contexte:
  - 'id_rubrique'
  - 'page'
parametres:
  -
    saisie: 'menu'
    options:
      nom: 'identifiant'
      label: '<:aveline:label_identifiant_menu:>'
      cacher_option_intro: 'oui'
      obligatoire: 'oui'
  -
    saisie: 'oui_non'
    options:
      nom: 'afficher_titre_menu'
      label: '<:aveline:label_afficher_titre_menu:>'
      defaut: 'on'

nom est obligatoire. Il indique le nom de la noisette à afficher dans l’interface de configuration. Peut être une chaîne de langue.

description est facultatif. Permet de détailler ce que fait la noisette. Peut être une chaîne de langue.

icon est facultatif. Il s’agit du chemin relatif à une image qui sera utilisée comme icône de la noisette.

parametres est optionnel et permet de spécifier les paramètres configurables que l’on souhaite passer à la noisette.

Les paramètres sont dès lors décrits en suivant les spécifications du plugin Saisies. Il est alors possible de décrire finement un formulaire de configuration de la noisette.

Il est possible d’ajouter des vérifications à effectuer sur les valeurs des paramètres. Exemple :

-
  saisie: 'input'
  options:
    nom: 'pas_pagination'
    label: '<:aveline:label_pas_pagination:>'
    defaut: 5
  verifier:
    type: 'entier'
    options:
      min: 1

contexte permet de spécifier les variables de contexte à transmettre à la noisette. Si l’on ne doit transmettre qu’une seule variable, on pourra écrire
contexte: 'une_variable' [2]. Si plusieurs variables doivent être transmises, on optera pour l’écriture suivante :

contexte:
  - 'variable_1'
  - 'variable_2'
  - 'variable_3'

Si contexte n’est pas spécifié, toutes les variables d’environnement seront transmises à la noisette. Il est également possible de spécifier explicitement que toutes les variables d’environnement doivent être transmises avec contexte: 'env'.

Si aucune variable d’environnement ne doit être transmise à la noisette, on indiquera contexte: 'aucun'.

necessite est facultatif et permet de spécifier que cette noisette ne doit être proposée que si un plugin spécifique est activé. Cela peut être utilisé pour des noisettes fournies par un squelette compatible avec certains plugins sans les imposer.

Récupérer les paramètres de la noisette

Lors de l’inclusion de la noisette, le noiZetier transmet les paramètres en tant que variable d’environnement. Ceux-ci se récupèrent donc très facilement avec #ENV{param}.

Le noiZetier transmet systématiquement à la noisette les variables d’environnement bloc, type et composition.

Inclusion AJAX

Le noiZetier inclut les noisettes avec le critère {ajax}. Il est donc possible d’utiliser des liens avec la classe ajax. Voir la documentation de SPIP pour plus de détails.

Il est possible de spécifier au noiZetier qu’une noisette ne doit pas être inclue en AJAX. Pour cela, il suffit d’ajouter au YAML de la noisette la ligne suivante :

ajax: 'non'

Inclusion dynamique

Le noiZetier inclut par défaut les noisettes de manière statique. Elles n’ont donc pas de cache autonome mais le cache de la page englobante.

À partir de la version 0.12.0, il est cependant possible d’inclure dynamiquement une noisette. Cette dernière aura alors sa propre durée de cache définie avec la balise #CACHE au début du fichier HTML de la noisette. Cela est notamment utilise pour des noisettes nécessitant un cache nul.

Pour indiquer au noiZetier d’inclure dynamiquement la noisette, il faut ajouter la ligne suivante au YAML de la noisette :

inclusion: 'dynamique'

Utilisation des noisettes en dehors du noiZetier

Une noisette restant un squelette inclus, elle peut être utilisée par simple inclusion dans un squelette : <INCLURE{fond=noisettes/nom-complet-noisette}{param=val}>.

Le cache des noisettes

Afin d’améliorer la rapidité du noiZetier, les descriptions des noisettes, des variables de contexte à transmettre aux noisettes et l’inclusion en AJAX ou non sont mises en cache.

De fait, lorsque vous développez une noisette et testez en même temps comment se présente le formulaire de configuration dans le noiZetier, il est possible que vos dernières modifications ne soient pas affichées à moins que vous ne rajoutiez &var_mode=recalcul dans l’URL de la page.

Aperçu de la noisette

À partir de la version 2 du noizetier, vous pouvez définir un aperçu de la noisette. Il s’agit d’un squelette nommé noisettes/nom_noisette-preview.html qui recevra les paramètres de la noisette et qui permettra de produire un résumé de ce que fera la noisette.

Voici par exemple le contenu du fichier noisettes/article-filariane-preview.html du plugin Aveline :

[(#SET{ariane_separateur, #ENV{ariane_separateur}|is_null|non|?{#ENV{ariane_separateur},'&gt;'}})]
[(#SET{longueur_max_titres, #ENV{longueur_max_titres}|sinon{80}})]
[(#ENV{afficher_lien_accueil}|oui)<:accueil_site:>]
[(#ENV{afficher_secteur}|oui) [(#GET{ariane_separateur})] <:aveline:secteur:>]
[(#GET{ariane_separateur})] <:rubriques:> [(#ENV{afficher_secteur}|non) (<:aveline:secteur_exclu:>)]
[(#ENV{afficher_titre_article}|oui) [(#GET{ariane_separateur})] <:article:>]

Notes

[1Avant la version 0.8, le noiZetier acceptait de décrire des noisettes au format XML. Pour faciliter la maintenance, seul le format YAML est maintenant accepté.

[2L’écriture

contexte:
  - 'une_variable'

est également valide.

Discussion

14 discussions

  • Bonjour,
    J’essaie (en vain) de passer une chaine de langue avec variable dans le label d’une saisie :

        label: '<:plugin:chaine{variable=toto}:>'

    Les accolades ne passent pas, normal, mais y a t’il un moyen d’y remédier.
    J’ai essayé les solutions proposées ici https://symfony.com/doc/current/components/yaml/yaml_format.html
    ou là https://stackoverflow.com/questions/11301650/how-to-escape-indicator-characters-i-e-or-in-yaml, sans succès.

    Une idée ?

    Cordialement

    Répondre à ce message

  • Hello,

    j’aimerais créer une noisette permettant de charger un fichier (une image en l’occurence, mais cela pourrait être n’importe quoi : pdf, etc.).
    Avec le plugin CVT Upload et la déclaration YAML suivante…

    nom: 'Icon + Titre'
    description: 'Une icone avec ou sans titre'
    icon: 'article-24.png'
    contexte: 'aucun'
    ajax: 'non'
    parametres:
    	-
    		saisie: 'fichiers'
    		options:
    			nom: 'icontext_img'
    			label: 'Un fichier de type image web (jpg, png, gif)'
    			nb_fichiers: 1
    		verifier:
    				type: fichiers
    				options:
    					mime: image_web
    	-
    		saisie: 'input'
    		options:
    			nom: 'icontext_titre'
    			label: 'Titre'

    …j’ai bien un formulaire d’upload de fichier qui apparait, mais rien ne s’enregistre en BdD.
    Une idée ?

    Répondre à ce message

  • 3

    Bonjour,

    Dans un yaml construisant le formulaire de paramétrage d’une noisette, dans mon cas présent l’objet grappe, je conditionne l’affichage d’une saisie avec l’option afficher_si, je n’arrive pas a récupérer ou transmettre le résultat de ma saisie 1 a ma saisie 2 , pourtant d’après les docs que j’ai pu trouver il me semble que cela devrait fonctionner non ?

    exemple :

    nom: "Grappe d'objets"
    description: 'Afficher une grappe listant des objets'
    icon: 'prive/themes/spip/images/grappe-24.png'
    contexte:
      - 'identifiant'
      - 'id_grappe'
    parametres:
      -
        saisie: 'grappe'
        options:
          nom: 'identifiant'
          label: 'Identifiant'
          cacher_option_intro: 'non'
          option_intro: 'Sélectionnez une grappe'
          defaut: ''
      -
        saisie: 'selection_grappe_liaisons'
        options:
          nom: 'liaison'
          label: 'liaison'
          cacher_option_intro: 'oui'
          afficher_si: '@identifiant@ != ""'
          identifiant: '@identifiant@'

    Merci de vos idées ou explications

    • Je ne comprends pas la dernière ligne ?

      identifiant: '@identifiant@'

      On peut en effet conditionner l’affichage d’une saisie en fonction des valeurs des autres saisies (en fait cela génère un javascript pour afficher/masquer la saisie en fonction des autres valeurs). Par contre, on ne peut pas récupérer la valeur d’une saisie comme paramètre d’une autre saisie.

    • Justement donc, ça repond a ma question : ce n’est pas possible.

      En fait ma première saisie devrait lister les grappes et retourner l’identifiant

      la seconde quand a elle devrait en fonction de l’identifiant lister les objets LIAISONS de la grappe en question.

      en fait il faut que je fasse une saisie qui fasse les deux en une pour que ça fonctionne il me semble.

    • tout à fait

    Répondre à ce message

  • 11
    Benoît Labourdette

    Question toute bête : le titre et le descriptif de mes noisettes n’apparaissent pas dans le back-office. Le logo, lui apparaît. J’ai eu beau tout retourner, et vider et re-vider le cache, quelque chose m’échappe.

    Voici le yaml :

    nom: 'Module de lecture audio'
    description: 'Affiche un player audio si fichier MP3 joint à l'article'
    icon: 'noisettes/icones/mp3.png'
    contexte:
     - 'id_article'
    ajax: 'non'

    Et en image jointe, ce qui s’affiche dans le back-office.

    Merci !!

    • Dans la description, il y a une apostrophe alors que l’apostrophe est utilisée pour délimiter le texte. Essayez d’utilisez des guillemets doubles : "Affiche un player audio si fichier MP3 joint à l'article"

    • Benoît Labourdette

      J’ai mis des guillemets typographiques, voici mon fichier yaml :

      nom: «Player audio»
      description: «Player audio»
      icon: 'noisettes/icones/mp3.png'
      contexte:
       - 'id_article'
      ajax: 'non'

      Mais ça n’y change rien...

    • Euhhh vous avez utilisez des guillemets typographiques français ou de simples guillemets doubles droits ? ("). Seuls les guillemets droits sont reconnus comme délimiteurs de texte.

      Par aileurs, combien d’espaces avez avant - 'id_article' en début de ligne ? YAML est très strict en matière d’identation. Il doit y avoir exactement 2 espaces.

    • Benoît Labourdette

      Merci !
      Alors, les guillemets doubles ne changent rien. Concernant l’espace double, il est à mettre en début de ligne, j’ai fait ceci :

      nom: "Player audio"
      description: "Player audio"
      icon: 'noisettes/icones/mp3.png'
      contexte:
        - 'id_article'
      ajax: 'non'

      Pour le moment, ça ne change rien. Mais je sens que vous avez raison, cela doit être dans la rédaction du YAML.

    • Attention : il y a un cache du descriptif des noisettes. Il faut mettre ce cache à jour après mise à jour du YAML d’une noisette. Trois possibilités :

      • sur une des pages du noizetier, ajoutez &var_mode=recalcul à l’URL ;
      • se rendre sur la page de gestion du cache et vider le cache ;
      • se rendre sur la page de gestion des plugins (ce qui a pour effet de vider le cache des noisettes).

      Bien cordialement

    • Benoît Labourdette

      Merci !
      J’ai fait ces trois opérations, mais toujours pas de titre à mes noisettes....
      Je précise que mes noisettes sont dans le dossier squelettes, dans un sous-dossier noisettes.
      J’ai mis le fichier YAML ici : http://we.tl/paF8QeZL69, si vous voulez aller voir l’original...

    • Benoît Labourdette

      J’ai quasiment réglé le problème : je créais mes fichiers de noisettes en encodage UTF-8 (croyant bien faire), et, en regardant les autres noisettes, j’ai constaté que les fichiers étaient encodés en ANSI. j’ai donc encodé en ANSI mes fichiers de noisettes, et, ô miracle, les titres apparaissent ! (les caractères accentués ne passent pas, c’est un détail)
      Mais, par contre, les descriptifs n’apparaissent pas (c’est un peu embêtant), et je ne me l’explique pas non plus. Voici le code :

      nom: "Player audio"
      description: "Si un ou plusieurs fichiers MP3 sont en documents joints de l'article, alors cela affiche un ou plusieurs players audio avec le titre du document."
      icon: 'noisettes/icones/mp3.png'
      contexte:
        - 'id_article'
      ajax: 'non'
    • Avez-vous essayé l’encodage « UTF-8 sans BOM » ? De mémoire, je crois que ça doit passer (à vérifier).

      Vous avez toujours la solution de passer par des chaînes de langue personnalisées. (ce qui est utiliser pour Aveline même si c’est un peut lourd pour des noisettes perso).

      Concernant le descriptif, il n’est visible que dans la colonne de gauche (en haut) des pages de configuration d’une noisette (exec=noisette_edit). Sur exec=page qui liste les noisettes installées sur une page donnée, les descriptions des noisettes ne sont pas affichées. Par contre, si la noisette dispose d’un aperçu (voir ci-dessus) alors l’aperçu sera affiché.

    • Benoît Labourdette

      Je vais essayer UTF8 sans bom. L’aperçu, qu’est-ce ?
      En fait, quand je parlais de descriptif, je voulais évoquer ce texte là (image jointe). Mais, en fait, ça doit venir de la configuration. Mais comment fait-on pour faire apparaître un petit texte à cet endroit là ?

    • Ce texte correspond à l’aperçu de la noisette. Voir la fin de l’article ci-dessus. Il est généré à partir d’un petit squelette qui reçoit en variables d’environnement les paramètres de la noisette, ce qui lui permet d’afficher un texte différent selon la configuration de la noisette.

      On peut aussi faire un petit squelette simple avec un texte fixe. Il doit être nommé noisettes/nom_noisette-preview.html.

      Cordialement

    • Benoît Labourdette

      Bonjour,
      C’est parfait !
      Ca marche !
      Merci beaucoup.
      Benoît

    Répondre à ce message

  • 4

    Bonjour,

    J’ai besoin d’aide SVP. J’utilise :

    SPIP 3.0.5 [19905]
    Aveline 2.2.7 - test
    noiZetier 2.1.0 - test
    YAML 1.5.0 - stable
    Zpip-dist v1 1.7.21 - stable
    Zpip-vide 2.1.0 - test

    Toutes les fonctionnalités sont utilisables sans problème. Cela se complique lorsque je souhaite ajouter des noisettes. J’utilise en effet un fichier planchecontact.html chargé de récupérer une image au hasard pour les 5 derniers articles modifiés et les afficher en très petites vignettes. Ce code fonctionne très bien dans un squelette complet. Je souhaite ici l’utiliser comme une noisette.

    <BOUCLE_arts_cacher (ARTICLES){titre_mot=cacher}{doublons art}>
    </BOUCLE_arts_cacher> <!-- Pointe dans 'doublons art' tous les articles à cacher avec le mot clé 'cacher'-->
    <BOUCLE_rub_cacher (RUBRIQUES){titre_mot=cacher}{doublons rub}>
        <BOUCLE_arts_rub_cacher (ARTICLES){id_rubrique}{doublons art}>
        </BOUCLE_arts_rub_cacher>
    </BOUCLE_rub_cacher> 
    <BOUCLE_art (ARTICLES){0,5}{par date_modif}{inverse}{doublons art}>
    <BOUCLE_img(DOCUMENTS){extension==jpg|png|gif}{id_article}{mode=document}{0,1}{par hasard}>
        [(#REM) document lie a un article ?]
        <BOUCLE_lien_a(spip_documents_liens){id_document=#ID_DOCUMENT}{id_objet=#ID_ARTICLE}{objet=article}>
             <BOUCLE_lien_article(ARTICLES){id_article=#ID_OBJET}>
             <a href="#URL_ARTICLE">[(#_img:FICHIER|image_reduire{40})]</a>
             </BOUCLE_lien_article>
        </BOUCLE_lien_a>
    </BOUCLE_img>
    </BOUCLE_art>

    Ensuite je définie le fichier planchecontact.yaml de la manière suivante :

    nom: 'Planche contact mini photos'
    description: 'Noisette d affichage d'une planche contact des photos issues des derniers articles modifiés'
    icon: 'contenu-24.png'
    ajax: 'non'

    Dans ce cas, j’obtiens bien la noisette dans le noizetier.

    Mais :

    1) si le fichier contient le caractère ’_’ comme par exemple planche_contact, impossible de récupérer le fichier dans le noizetier. D’ailleurs la mise à jour des noizettes (qu’on ajoute ou qu’on modifie) n’est pas faite par l’interface même avec le &var=recalcul ou le cache désactivé. Il est nécessaire de vider le cache complètement par ftp pour l’obtenir.

    2) lorsque je souhaite paramétrer le code html pour choisir le nombre de vignettes à afficher en modifiant :

    <BOUCLE_art (ARTICLES){0,5}{par date_modif}{inverse}{doublons art}>
    par
    <BOUCLE_art (ARTICLES){0,#ENV{param}}{par date_modif}{inverse}{doublons art}>

    Avec le fichier yaml suivant, rien ne va plus.

    nom: 'Planche contact mini photos'
    description: 'Noisette d affichage d'une planche contact des photos issues des derniers articles modifiés'
    icon: 'contenu-24.png'
    ajax: 'non'
    parametres:
      -
    	saisie: 'input'
        options:
          nom: 'nb_vignettes'
          label: 'Nombre de vignettes'
          defaut: 5

    Dès lors que j’ajoute les parametres dans le fichier yaml, la noisette disparaît du noizetier.

    J’avoue qu’un peu d’aide à ce niveau me rendrait des couleurs. Ou peut on trouver des informations sur la syntaxe des paramètres des fichiers yaml ?

    Merci d’avance

    • Je me réponds à la question 2)

      Yaml étant sensible aux tabulations, il est important d’utiliser un éditeur de texte qui permette de les visualiser (notepad++ par exemple). C’était la cause de mes ennuis.

      Attention aussi à utiliser le nom du parametre dans #ENV{param}, dans l’exemple ce sera donc #ENV{nb_vignettes}

      pour la question 1) , la mise à jour des noisettes reste toujours subordonnée à la suppression totale du cache par ftp.

    • Bonjour,

      YAML est effectivement très sensible à l’indentation (utiliser des espaces et non des tabulations).

      Le nom du paramètre doit bien sur correspondre entre le YAML et le squelette.

      Le caractère _ (underscore) est bien autorisé dans les noms de noisette. Attention néanmoins à ce que les noms des fichiers .html et .yaml soient bien identiques. Surtout, il ne faut pas confondre avec - (tiret) qui lui sert à indiquer qu’une noisette ne peut être utilisée que sur certaines pages.

      Pour recalculer le descriptif des noisettes, il faut ajouter &var_mode=recalcul et non &var=recalcul à l’URL.

      Sachez également que le cache des noisettes est également vidé à chaque passage sur la page de gestion des plugins.

      Bien cordialement

    • Pour information, la désactivation du cache des squelettes ne désactive pas le cache du descriptif des noisettes. Il faut donc bien passer par var_mode=recalcul ou par la page ?exec=admin_plugin ou par vidage du cache.

    Répondre à ce message

  • 1
    Stéphane Santon

    Bonjour,

    A partir du moment où les noisettes sont présentes sur le site public, ne peut-on pas imaginer (quand un admin est connecté sur le site public) des petites icônes en haut de chaque bloc pour simplement déplacer la noisette dans un autre bloc, de Navigation à Extra par exemple ? Comme avec Moodle...

    • Si vous savez le programmer en javascript, c’est tout à fait envisageable. Pour ma part, c’est en dehors de mon domaine de compétence. Mais je suis persuadé qu’il y a aurait beaucoup à faire pour améliorer l’interface tant privée que publique du noizetier.

      Bien cordialement

    Répondre à ce message

  • 2
    Stéphane Santon

    Bonjour,

    Comment passe-t-on les apostrophes dans les nom et description de noisettes ?
    Merci

    • Stéphane Santon

      Simplement on met des guillemets doubles autour de la chaine.

    • Salut,

      Et avec de vrais apostrophes : &#039;

      Cela ne serait pas mieux ?

       ;)

    Répondre à ce message

  • 1

    Bonjour à toutes et tous,
    Je viens de migrer de SPIP 1.9 avec Maguzine à Spip 2.1 et je découvre Aveline et le noiZetier.
    Excellent travail. Le principe est un peu le même entre Maguzine et les noisettes du couple Aveline-noiZetier. Je m’étais frotté à la personnalisation de certains blocs à l’époque et je me dis que je ferais bien de même avec certaines noisettes. Et en particulier la création d’une qui pourrait s’installer n’importe où (mais surtout sur la page-sommaire, ...) et qui afficherait une image prise au hasard dans pièces joints des articles d’une rubrique bien précise.

    Croyez-vous que le travail soit compliqué ? Pour ne pas ré-inventer la roue complètement il vaudrait mieux partir de quel base dans la collection de noisettes existantes ?

    Bonne nuit ou bonne journée, je ne sais pas quand vous me lirez.
    Nicolas

    • Bonjour,

      il y a une certaine parentalité entre magusine et le noizteier, même si le squelette initial à la réflexion de ce long projet est en fait BliP.

      La difficulté pour créer une noisette dépend du niveau de sophistication recherché. Celles d’Aveline comportent de nombreux paramètres et leurs propres surcouches de balises filtres et inclusions dédiées ce qui ne le rends pas facile à comprendre.

      Concernant la noisette qui que vous souhaitez faire, il n’y a pas encore de noisette équivalente, mais elle peut être facilement réalisée si vous avez déjà une connaissance de la syntaxe des squelettes SPIP et que vous avez compris le format YAML et la description de saisies.

      Grosso modo, votre noisette ne nécessite qu’un seul paramètre, la rubrique dans laquelle chercher l’image. Il faut ensuite construire la bonne boucle pour sélectionner l’image voulue.

      Cordialement

    Répondre à ce message

  • 4
    triton

    Bonjour,
    je continue mon apprentissage de ce nouveau dispositif, et c est vraiment très chouette...
    Je rencontre une petite difficulté, je n arrive pas a faire fonctionner un formulaire CVT à partir d une noisette...
    dans mon dossier « noisettes » j ai :
    monform.html
    monform.yaml
    qui me permet d afficher et d administrer le formulaire en tant que noisette
    Par contre, je ne sais ou coller le fichier :
    monform.php pour qu il effectue les traitements... En toute logique spip les fichiers monform.html et php devrait se situer dans un dossier « formulaires ».
    L idée c est de pouvoir configurer les champs du formulaire CVT a partir du fichier yaml, je ne peux donc pas faire juste une noisette avec dedans un appel a #MONFORM (comme pour le form de rechercce aveline par ex)... bref, je ne sais pas trop comment organiser la structure des repertoires..
    Merci bien
    triton

    • On est dans un contexte particulier. Pour fonctionner correctement, il faut que ton formulaire soit déclaré comme un formulaire classique, donc dans le répertoire formulaires. Attention : un formulaire s’appelle avec la balise #FORMULAIRE_MONFORM et non #MONFORM.

      Par contre tu souhaites que ton formulaire soit paramétrable. Ce qui est possible (voir http://programmer.spip.org/Passage-...).

      Tu auras donc un formulaire qui doit être appelé avec différents paramètres : #FORMULAIRE_MONFORM{parma1, param21, param3}.

      Dans un premier temps, créer ton formulaire de manière classique en le testant dans un squelette classique où tu lui passeras les paramètres en dur.

      Ensuite, une fois ton formulaire finalisé, tu peux créer une noisette qui proposera les différents paramètres. Et le code html de la noisette contiendra : #FORMULAIRE_MONFORM{#ENV{param1},#ENV{param2},#ENV{param3}}.

    • triton

      ok... j ai compris.... je vais tester....
      Merci beaucoup

    • triton

      j ai testé... ca marche, mais alors c est un petit peu monstrueusement lourd a mettre en place... bon, faut dire que j ai une vingtaine de valeurs a faire transiter entre le .yaml le .html de la noisette, la fonction charger du .php jusqu au html du formulaire.... le tout dans le bon ordre et sans se rater sur un espace..
      J ai vu qu il y avait une contrib sur les formulaires CVT en YAML :
      http://www.spip-contrib.net/Un-formulaire-C-V-T-avec-Saisies-par-l-exemple
      peut etre qu il y a quelque chose a faire avec ca....
      triton

    • Il faut distinguer la description du formulaire (qui peut être fait en YAML avec Saisies) des paramètres de personnalisation du formulaire (ce qui est moins fréquent et forcément plus lourd à mettre en place). De toute façon, dès lors que l’on a de nombreuses personnalisations possibles, les choses sont plus lourdes à gérer.

    Répondre à ce message

  • 1

    Bonjour,
    J ai crée une nouvelle noisette assez simple, qui semble fonctionner sauf que...
    si je mets plusieurs fois cette noisette sur une même page, lorsque j administre la configuration d’une noisette, cela modifie également la configuration des autres (en administration et en affichage site public)... Ce n’est pas systématique, c est assez difficile a reproduire, tous les champs de la noisette ne sont pas concernés, c est assez déroutant....
    Noizetier Version : 0.10.1 [46170]
    le contenu du yaml :
    /////////////////////////
    nom : ’encart cliquable’
    description : ’un encart avec titre logo descriptif lien’
    icon : ’img/ic_article.png’
    contexte : ’aucun’
    parametres :

    -
    saisie : ’selecteur_rubrique_article’
    options :
    nom : ’id_objet_01’
    label : ’rubrique article’
    obligatoire : ’oui’
    -
    saisie : ’input’
    options :
    nom : ’largeur_logo’
    label : ’largeur_logo’
    obligatoire : ’non’
    -
    saisie : ’input’
    options :
    nom : ’hauteur_logo’
    label : ’hauteur_logo’
    obligatoire : ’non’
    -
    saisie : ’input’
    options :
    nom : ’squelette_destination’
    label : ’squelette_destination’
    obligatoire : ’non’
    -
    saisie : ’selecteur_rubrique_article’
    options :
    nom : ’id_objet_destination’
    label : ’Objet (article, rubrique...) affiché par defaut’
    obligatoire : ’non’
    ///////
    Ca fait pareil avec un input a la place du selecteur_rubrique_article (c est bien chouette ce truc)...
    Merci beaucoup
    triton

    Répondre à ce message

  • 3

    Bonjour, j’aimerai pouvoir créer une sorte de filtre de test dans une noizette pour modifier l’apparence de celle-ci en fonction du bloc dans laquelle elle se trouve (il s’agit de modifier le redimensionnement d’un logo d’article en fonction de la largeur du bloc.).

    Existe t’il une sorte de balise #ID_BLOC que l’on puisse insérer dans une noizette ?

    Cela m’embêterait de modifier le redimensionnement par CSS....

    • Normalement, vous devriez avoir accès au nom du bloc avec #ENV{bloc}.

      Cordialement

    • Merci pour la réponse.

      Malheureusement, cette variable n’est pas passée.

    • Normalement, la variable bloc est bien passée à l’environnement sauf si dans le YAML de la noisettes vous avez spécifié une liste restreinte de variables d’environnement et que bloc n’en fait pas partie.

    Répondre à ce message

  • 6

    Je continue mon exploration du noiZetier...

    N’ayant pas pu faire de manière satisfaisante l’appel des pages uniques (faut dire je suis pas doué en codage non plus...), j’ai contourné la difficulté en faisant des modèles et en les appelant via une noiZette « contenu textuel libre ». C’est pas la panacée, mais ça marche :D

    J’avais une question, car impossible de trouver la réponse : y a t il moyen de faire un gabarit spécifique à une série d’articles comme on pouvait avoir avant un squelette unique pour tous les articles de la rubrique X ? Car autant on peut faire un gabarit pour une rubrique, ou un article, autant je n’ai pas trouvé comment faire un gabarit pour les articles d’une rubrique. Je prend le cas d’une rubrique « News » (rubrique que j’ai déclinée depuis le gabarit rubrique du noiZetier) qui regroupe bien sûr toutes les « news ». Or les news ne sont pas des articles comme les autres et nécéssitent donc une présentation spéciale (notamment les zones navigation et exta). Or là je suis obligé de créer un contenu article-news que je dois appliqué à chaque news... ça risque d’être fastidieux...

    Enfin, j’ai remarqué un bug, je sais pas si je suis le seul :
    Quand j’appelle une page spécifique (comme login, contact, plan...), j’ai un redoublement des infos contenues dans la zone « extras » (il me double tout ce qui est dans Pre extras et Post extra)...

    • Concernant un gabarit différent pour certains objets, il s’agit des Compositions. Aucunement le rôle du noiZetier, même si le noiZetier peut être utilisé pour définir différentes compositions.

      La lecture de http://joseph.larmarange.net/A-prop... pourra vous être utile.

      A toute fin utile, je rappelle qu’une noisette n’est qu’un morceau de contenu s’insérant dans un bloc.

      Ensuite, le noiZetier ne fournit pas de noisettes. Voulez-vous dire l’utilisation du noiZetier avec le squelette Aveline ?

      Concernant le bug rencontré, je peux essayer de regarder ça demain. Question : utilisez-vous la toute dernière version du noiZetier ?

    • Je voulais parler du noizetier avec Aveline oui.

      Aveline version 0.6.1 [42303]
      NoiZetier version 0.8.1 [42302]

      Je vais jeter un oeil sur l’article en lien merci.

    • Je me permet de relancer car malgrè mes recherches je n’ai pas trouvé pourquoi j’avais un redoublement de « avant extra » et « après extra » quand j’appelle une page du tupe page=plan, page=contact, etc...

    • Up... toujours pas trouvé pourquoi j’avais un redoublement des infos avant-extra et apres-extra dans les pages du style « page-contact », « page-plan », etc...

    • Bonjour,

      cela se produit-il en utilisant en même temps le squelette Aveline ?

      Si oui, ce problème est normalement réglé dans la dernière version (0.6.5) d’Aveline.

      Voir http://zone.spip.org/trac/spip-zone....

      Cordialement

    • Yes !!! Merci.

    Répondre à ce message

  • 12

    Bonjour,

    Je souhaiterai ajouter au noizetier une noisette qui afficherait le contenu d’un article dont je pourrais définir l’id.

    J’ai créé un fichier article_specifique.html et un fichier article_specifique.yaml que j’ai placés dans /plugins/auto/noiZetier/noisettes, mais elle n’apparait pas dans la liste lorsque je veux l’ajouter au contenu de ma page d’accueil.

    Je patauge un peu. Est-ce qu’une bonne âme pourrait me guider dans la démarche ?

    • Bonjour,

      le noiZetier, pour des raisons de performance, utilise un cache de la description des noisettes (ficher tmp/cache/noisettes_descriptions.php. Dès lors, lorsque vous créez ou modifiez le fichier yaml d’une noisette, vous devez vider le cache de SPIP. Vous pouvez également ajouter &var_mode=recalcul à l’url de configuration du noiZetier pour reclaculer ce cache. Votre noisette devrait dès lors être disponible.

      Par ailleurs, si vous créez votre propre noisette, il est préférable que vous la placiez dans le répertoire squelettes/noisettes plutôt que dans le répertoire du plugin. En effet, les modifications effectuées dans le répertoire du plugin seront perdues en cas de mise à jour du plugin.

      Bien cordialement

    • Bonsoir et merci pour votre réactivité !
      Mais rien à faire, je dois mal faire quelque chose, ma noisette n’apparaît pas même avec un cache vide.
      D’autre part, je ne sais pas si c’est un comportement normal, mais la page de config du noizetier est pleine de triangles, ce qui rend difficile la lecture des textes... Je joins une copie d’écran.

    • Il ne devrait pas y avoir tous ces triangles. Il y a un souci CSS. Quel navigateur ? Quel version de SPIP et quels plugins installés ?

      Tout d’abord, utilisez-vous bien la dernière version du plugin ?

      Concernant votre fichier de description yaml, avez-vous vérifiez qu’il est correctement écrit ? qu’il n’y a pas d’erreurs d’indexation (espace en trop par exemple) ? Les deux fichiers (html et yaml) portent-ils bien le même nom ? (parfois on peut tourner en rond plusieurs heures pour une simple faute de frappe).

      Cordialement

    • Bon, tout est rentré dans l’ordre, après deux vidages de cache. Je suis très fier de voir ma noisette, et je n’ai plus les affreux triangles.
      Par contre, je ne vois pas bien quoi mettre dans mon fichier html pour afficher le texte de mon article dont je peux choisir l’id dans la page de config de ma noisette...
      Pour l’instant, j’ai ça, mais je ne suis carrément pas sur de moi (et ça marche pas, ça n’affiche rien ;-))

      article_specifique.html

      nom: 'Article spécifique'
      
      description: 'Affiche un article spécifique'
      
      icon: 'img/ic_bloctexte.png'
      
      parametres:
      
        -
      
          saisie: 'input'
      
          options:
      
            nom: 'id_article_specifique'
      
            label: 'ID de l''article'
      
      contexte: aucun

      article_specifique.html

      <div class="noisette_article_pecifique">
      <B_articles>
          <BOUCLE_articles(ARTICLES){id_article=[(#GET{id_article_specifique})]}>
                      <div class="texte">#TEXTE</div>
              </BOUCLE_articles>
      </B_articles>
      </div>
    • Bon, problème réglé : il manquait le contexte à la fin du yaml, et il fallait utiliser #ENV dans le html. Conclusion, c’est finalement plus simple que ce que je pensais, terriblement puissant et modulable cette petite chose :-) MERCI !

      article_specifique.yaml

      nom: 'Article spécifique'
      
      description: 'Affiche un article spécifique'
      
      icon: 'img/ic_bloctexte.png'
      
      parametres:
      
        -
      
          saisie: 'input'
      
          options:
      
            nom: 'id_article_specifique'
      
            label: 'ID de l''article'
      
      contexte: 'id_article_specifique'

      article_specifique.html

      <div class="noisette_article_pecifique">
      <BOUCLE_articles(ARTICLES){id_article=#ENV{id_article_specifique}}>
      	<h2 class="h2 #EDIT{titre}">#TITRE</h2>
      	<div class="#EDIT{texte} texte">#TEXTE</div>
      </BOUCLE_articles>
      </div>
    • Bonjour,
      effectivement il faut utiliser #ENV et non #GET. Par contre, il est inutile de spécifier contexte: id_article_specifique. En effet, id_article_specifique n’est pas une variable récupérée dans le contexte au-dessus de la noisette mais un paramètre transmis systématiquement à la noisette. Autrement dit, vous pouvez garder contexte: aucun.

      En fait, contexte sert à spécifier des variables de contexte (autres que les paramètres de la noisette toujours transmis) à transmettre à la noisette, par exemple un id_rubrique pour une noisette affichant les articles de la rubrique.

      Bien cordialement

    • Petite précision, normalement vous devez pouvoir utiliser la saisie selecteur_article à la place de la saisie input pour profiter du sélecteur d’article de Bonux.

      Attention, vous devez utiliser une des dernières versions de saisies pour que le javascript s’exécute correctement.

    • J’ai essayé d’utiliser le script « Article Spécifique », mais apparemment on ne peut l’utiliser qu’une seule fois dans le site, après il balance une erreur.

    • Re,

      en fait, une fois installé un « ArticleSpecifique », j’ai un plantage si j’essaye de mettre une autre noizette.

      Le message d’erreur est :

      Fatal error : Call to undefined function : array_intersect_key() in /homepages/38/d141572498/htdocs/newsite/plugins/noiZetier/inc/noizetier.php on line 532

      ce qui correspond dans le fichier à :

      if ($contexte_noisette) {
      		return array_intersect_key($contexte_entrant, $contexte_noisette);
      	}
    • Vous fonctionnez avec quelle version de PHP ?

      array_intersect_key n’est disponible qu’à partir de la version 5.1

    • Je suis chez 1and1.fr et apparemment les serveurs sont en mysql 5.0 :(

    • je parlais de la version de PHP et non de celle de MySQL.

      je vais essayer de faire une compatibilité en PHP 4 mais pas avant un mois (je pars en voyage demain)

    Répondre à ce message

  • 20

    Bonjour,

    ce noiZetier a l’air méchamment puissant ! Je l’ai installé et commence à m’enservir avec les nombreuses noisettes natives, mais j’aimerais bien en coder une ou deux spécifiques. Le soucis est que je ne sais pas trop par ou démarrer. par exempe, j’aimerais faire une noisette pour inclure un lecteur mp3 dans mes pages, que ce soit la page sommaire (en allant piocher dans tous les mp3 dispos sur le site, en faisant mon marché quoi) ou alors dans les pages rubriques ou articles en pouvant soit faire mon marché soit décider de mettre en liste tous les mp3 de la rubrique / article. De même je souhaite créer une noizette permettant de lancer un genre de ticker d’articles (un peu comme sur la page d’accueil de plugins.spip.net) pour mettre en avant certaines news ou n’importe quel article. Je me doute que celà est possible à réaliser, mais par ou commencer ??? Merci en tout cas pour ce plugin fabuleux.

    • Bonjour,
      les noisettes sont des morceaux de squelettes SPIP comme les autres.

      Questions préalables :

      • connaissez-vous le HTML ?
      • connaissez-vous les boucles et les balises de SPIP ?

      Bien cordialement

    • Oui, je connais ça, je fais des sites SPIP depuis un petit moment, mais là j’avoue que le noiZetier / ZSpip / Aveline, autant ça a l’air puissant, autant je patauge méchamment :D. J’ai quand même réussi à faire une déclinaison de squelette avec Compositions, mais c’est parce que je n’ai pas trouvé le moyen de faire via le noiZetier un affichage conditionnel « si un seul article dans la rubrique, afficher directement l’article »... à moins que celà soit configurable dans le menu, mais j’ai pas trouvé.

      Pour dire, je n’arrive pas à modifier l’affichage de certains élements de mon site (par exemple, faire apparaitre le logo du document devant les docs téléchargeables, ou mettre le forum de l’article dans un bloc depliable)... Alors pour faire des noiZettes, c’est carrément la folie :P

    • D’accord. C’était juste pour situer votre niveau.

      Dans le cadre d’Aveline, les noisettes fournies par défaut sont complexes car elles proposent une multitude de paramètres ce qui rend leur code difficile à saisir.

      Mais dans le cadre d’une personnalisation d’un site particulier, il est possible de faire des noisettes avec très peu de paramètres.

      Prenons l’exemple d’une noisette qui affiche directement le contenu d’un article dans une page rubrique si jamais il y a un seul article dans la rubrique.

      Nous allons donc créer un fichier rubrique-article_complet_si_seul.html dans le répertoire squelettes/noisettes/. Le début du nom de la noisette commence par rubrique- pour indiquer que cette noisette ne doit être proposée que sur les pages du type rubrique.

      On fera tout d’abord une noisette sans paramètres de personnalisation. C’est plus simple. On remarquera qu’on aura besoin de connaître la variable d’environnement id_rubrique pour savoir où on se trouve.

      Pour le code de la noisette, on va s’inspirer de http://www.guiderdoni.net/Afficher-....

      Voilà le code de la noisette :

      <BOUCLE_deux(ARTICLES){id_rubrique}{1,1}>
      <BOUCLE_sommaire(ARTICLES){id_rubrique}{par date}{inverse}{"<br />"}>
      <a href="#URL_ARTICLE">#TITRE</a>
      </BOUCLE_sommaire>
      </BOUCLE_deux>
      <BOUCLE_unseul(ARTICLES){id_rubrique}>
      <h1>#TITRE</h1>
      #TEXTE
      </BOUCLE_unseul>
      <//B_deux>

      Il faut ensuite faire le fichier de description de la noisette au format YAML. Il va être simple car on n’a pas de paramètres de personnalisation. Il va s’appeler rubrique-article_complet_si_seul.yaml et sera rangé dans le même répertoire que précédemment.

      nom: 'Articles de la rubrique (affichage personnalisé)'
      description: "S'il y a un seul article dans la rubrique, affiche le texte de l'article, sinon liste les articles de la rubrique."
      contexte:
        - 'id_rubrique'

      Il ne reste plus qu’à aller dans le noizetier ajouter notre noisette sur la page rubrique. Il faut penser au préalable à vider le cache puisque le noizetier utilise un cache poru la liste des noisettes.

      On vérifie que tout marche bien.

      Ensuite, on peut améliorer notre noisette pour reproduire la syntaxe HTML de notre site. Ajout de css, ajout du chapo, de sliens hyeprtextes, éventuellement des auteurs, etc... en fonction de ce que l’on veut faire.

      Si on souhaite pouvoir paramétrer plus finement la noisette, on viendra alors complexifier la noisette en déclarant les paramètres désirés dans le fichier YAML. Ces paramètres seront récupérables dans la noisette avec #ENV. Il faudra alors faire des tests sur la valeur des paramètres pour afficher non tel ou tel élément.

      Dans un premier temps, je vous déconseille vivement d’essayer de surcharger la noisette liste_article du squelette Aveline car elle est vraiment très complexe, son YAML de description faisant 606 lignes.

      J’ai bien en projet d’améliorer le code des noisettes d’Aveline en regroupant des ensembles de paramètres et en créant des critères et des balises dédiées, mais je n’ai pas encore eu le temps de me lancer dans ce chantier.

      Bien cordialement

    • Ok merci pour ces précisions.
      En fait ça ne fait qu’augmenter mes questions :D
      En effet, l’idéal serait que la rubrique embranche directement sur l’article s’il n’y en a qu’un, et donc qu’on se retrouve directement au niveau Article afin de beneficier du contexte de l’article et non de la rubrique (et du coup récupérer les réglages par défaut de l’article dans le noizetier...).

    • Cela se joue à un autre niveau.

      Dans ce cas là, s’il n’y a qu’un seul article dans une rubrique, il s’agirait de rediriger directement vers l’article.

      Ca ne se passe plus au niveau du noiZetier mais au niveau du squelette rubrique.html racine. On teste la présence d’un ou plusieurs articles dans la rubrique, et on redirige.

      A vue de nez, créez un fichier rubrique.html dans squelettes (je suppose que vous utilisez Zpip et/ou Aveline :

      <BOUCLE_principale_rubrique(RUBRIQUES){id_rubrique}>
      	<BOUCLE_deux(ARTICLES){id_rubrique}{1,1}>
      		<INCLURE{fond=structure}{env}{id_secteur=#ID_SECTEUR}{type=rubrique}{composition} />
      	</BOUCLE_deux>
      		<BOUCLE_article_unique(ARTICLES){id_rubrique}>
      			<?php header("Location: [(#URL_ARTICLE|url_absolue)]");
      			exit; ?>
      		</BOUCLE_article_unique>
      			[(#REM) cas où aucun article ]
      			<INCLURE{fond=structure}{env}{id_secteur=#ID_SECTEUR}{type=rubrique}{composition} />
      		<//B_article_unique>
      	<//B_deux>
      </BOUCLE_principale_rubrique>
    • Ok merci ça marche nickel :D

      A noter que j’ai remarqué un bug, mais je sais pas si ça vient du noiZetier, ou du squelette Aveline. Quand on fait la liste des rubriques et qu’on affiche « Lire la suite » via la noiZette dédiée, le lien généré est faux. On obtient un truc, toujours le même, qui est « spip.php ?rubriqure0 ». Cela ne se fait qu’avec le lien « lire la suite » des sous rubriques.

      Bon maintenant je vais essayer de faire une noiZette pour faire un lecteur multimedia en donnant l’ID d’un article (qui contniendra les mp3).

    • Une simple erreur de frappe dans Aveline. Merci pour le coup d’oeil.

      C’est corrigé en version 0.6.1 (Aveline). Le zip devrait être disponible d’ici moins d’une heure.

      Cordialement

    • De rien :D

      Question bête : comment appeler un article spécifique dans une page ?
      Je pose la quetion car j’ai commencé à réfléchir à mon envie d’appeler notamment dans la page sommaire des éléments « hors menu » avec des contenus spéciaux. Pour celà j’ai installé le pugin « pages uniques » qui permet de créer des articles situés hors de toute rubrique pour ne pas les avoir dans le menu, et aussi pour pouvoir faire des modèles de page (car lors de la création de ces articles hors menu, on remplit un champ « page ») comme autant d’objets spécifiques. L’idée etant d’appeler ces « pages » via une noiZette intégrable dans n’importe quel page du site.

      D’après l’exemple fourni plus haut, j’ai comme dans l’idée qu’il faut que je crée une noiZette du style slider.html dans laquelle je collerais un truc du genre

      <BOUCLE_slider(ARTICLES){page=slider}>
      #MON CODE D'AFFICHAGE
      </BOUCLE_legal>

      et son pendant slider.yaml

      nom: 'Slider'
      description: "Afficher un slider"
      contexte:
        - 'page'

      J’ai bon ou je me gourre total ?

      Ca c’est dans un premier temps car cette technique ne permet de faire qu’un seul slider et oblige à créer une noisette pour chaque nouveau slider. De plus on ne peut paramétrer les slides qu’une seule fois pour toute, vu que les parametres se trouvent dans le squelette du slide, en dur (parametres du plugin « imagerotator »), mais disons que ce serait un debut...

    • Tout d’abord, le contexte : ’page’ est inutile.

      Si on veut une noisette plus générique, on va ajouter un paramètre slider à la noisette. Dans le YAML :

      nom: 'Slider'
      description: "Afficher un slider"
      contexte: 'aucun'
      parametres:
        -
          saisie: 'input'
          options:
            nom: 'slider'
            label: 'Quel slider voulez-vous afficher ?'

      et dans le HTML :

      <BOUCLE_slider(ARTICLES){page=#ENV{slider}}>
      #MON CODE D'AFFICHAGE
      </BOUCLE_legal>

      Maintenant, si on veut améliorer le formulaire de saisies de la noisette, il faudrait une saisie qui propose la liste des pages uniques.

      On va donc créer un fichier squelettes/saisies/pages_uniques.html pour créer notre saisie et cette saisie va contenir :

      [(#REM) 
        Saisie permettant de sélectionner une page unique par son nom de page
        
        Parametres :
        - option_intro : chaine de langue de la premiere ligne vide ? (defaut:"")
        - cacher_option_intro : pas de premier option vide  (defaut:"")
        - class : classe(s) css ajoutes au select
        
        Exemple d'appel :
      	[(#SAISIE{pages_uniques,nom,
      		label=<:plugin:label:>,
      	})] 
      ]
      
      <select name="#ENV{nom}" id="champ_#ENV{nom}"[ class="(#ENV{class})"][ disabled="(#ENV{disable})"][ readonly="(#ENV{readonly})"]>
      [(#ENV{cacher_option_intro}|non)<option value="">[(#ENV{option_intro})]</option>]
      <BOUCLE_selection(ARTICLES){par titre}{id_rubrique<0>
      	<option value="#PAGE" [(#PAGE|=={#ENV{valeur,#ENV{defaut}}}|oui) selected="selected"]>#TITRE (#PAGE)</option>
      </BOUCLE_selection>
      </select>

      Il faut aussi prévoir une vue pour cette saisie, soit un fichier squelettes/saisies-vues/pages_uniques.html contenant :

      <BOUCLE_article(ARTICLES){page=#ENV{valeur}}>
      <p>#TITRE (#PAGE)</p>
      </BOUCLE_article>
      <p><:saisies:vue_sans_reponse:></p>
      <//B_article>

      Deux petites remarques :

      • Il faut bien vérifier au préalable que les pages uniques ont un id_rubrique négatif (jsute faire un test)
      • Idéalement, la saisie pages_uniques pourrait directement intégrer le plugin pages.

      Il ne reste plus qu’à modifier notre fichier YAML :

      nom: 'Slider'
      description: "Afficher un slider"
      contexte: 'aucun'
      parametres:
        -
          saisie: 'pages_uniques'
          options:
            nom: 'slider'
            label: 'Quel slider voulez-vous afficher ?'
    • La saisie pages_uniques a été ajoutée au plugin pages.

      Cela sera disponible en Zip après le passage de 16h

    • Ok ok... bon là ça commence à etre rude pour moi qui suit quand meme que graphiste au départ :P Mais bon, si j’arrive bien à suivre ton exemple, je dirais que le fichier yaml final devrait plutot contenir :

      nom : « Page unique »
      description : « Afficher un contenu Page Unique »
      contexte : ’aucun’
      parametres :
      -
      saisie : ’pages_uniques’
      options :
      nom : ’page unique’
      label : ’Quelle type de page unique voulez-vous afficher ?’

      car du coup, d’après le code que tu as fourni, on peut choisir n’importe quelle page unique (que ce soit le slider, ou le jukebox) non ?

    • Ben c’est génial, je vais tester ça ce week end tranquille alors :P

    • Oui oui tout à fait

    • Bonjour,

      j’ai installé la nouvelle version de « Pages Uniques », mais il n’apparait toujours pas dans le noiZetier. J’ai vidé le cache plusieurs fois pourtant :(

    • re,

      bon en fait je dois manquer une étape car je ne comprend pas comment faire apparaitre « Pages Uniques » dans le noiZetier, et qu’il me propose la liste des pages uniques à ma disposition.

      -  J’ai installé le plugin mis à jour « Pages Uniques ».
      -  J’ai créé deux pages uniques dans mon site : slider et jukebox
      -  J’ai un squelette pour chacun d’eux : slider.html et jukebox.html (en fait des bouts de page puisqu’ils ne font qu’une fonction bien précise... des noisettes ?)

      Et voilà.. j’ai rien dans l’admin du noiZetier :D

      J’ai bien essayé de mettre slider.html et jukebox.html dans le sous dossier noisettes de mon dossier squelettes, en créant en même temps les fichiers yaml correspondants, mais même si j’arrive à faire apparaitre slider et jukebox dans le noiZetier, ils ne se retrouvent pas dans une noiZette « Page uniques », seulement en vrac, et surtout inutilisables...

      Je me dis qu’il faut en fait faire un noiZette pages_uniques.html / pages_uniques.yaml (et garder slider.html ainsi que jukebox.html au niveau des squelettes comme n’importe quelle page), mais autant je vois quoi mettre dans le fichier yaml (ce que j’ai écris plus haut), autant je ne vois pas ce que je peux mettre dans le fichier html...

      Bref je patauge grave :P

    • Bonjour,

      seule la saisie pages_uniques a été ajouté au plugin pages uniques.

      Il faut encore que vous fassiez votre noisette.

      Cordialement

    • Euh oui, d’accord :D
      Mais c’est une noisette pages_uniques ou slider que je dois faire au final ??? Je suis largué total :P
      Car l’idée c’est bien de lister dans une noiZette « pages_uniques » les différentes pages uniques du site et de choisir laquelle appeler non ?
      Donc au final, mon fichier pages_uniques.html devrait contenir qu’un appel du fond choisi ?
      Un truc du genre

      <INCLURE{fond=page{#ENV{nom}}}>

      Ou je me gourre ?

    • La réponse est plus haut dans la discussion :

      un YAML pour la noisette :

      nom: 'Page Unique'
      description: "Afficher une page unique"
      contexte: 'aucun'
      parametres:
        -
          saisie: 'pages_uniques'
          options:
            nom: 'page'
            label: 'Quel page voulez-vous afficher ?'

      et le HTML de la noisette

      <BOUCLE_page(ARTICLES){page=#ENV{page}>
      Le contenu de la page mis en forme
      </BOUCLE_page>

      Ensuite, a vous de voir ce que vous souhaitez afficher, juste le titre et l’introduction, l’article complet, etc.

    • Oui j’avais déjà essayé mais ça ne marche pas. J’ai bien Pages Uniques qui apparait dans le noiZetier, mais il ne se charge qu’une fois sur deux quand on le selectionne, et une fois chargé, je n’ai aucune valeur dans le menu déroulant pour choisir la page unique voulue :(

      De plus, avec la noisette « pages_uniques.html » créée renvoie forcément le contenu formaté de la meme façon quelle que soit la page unique appelée, alors que chaque page unique a son propre gabarit (l’un renvoie du texte, l’autre un player, ect...". D’ou mon idée evoquée plus haut de passer par un inclure...

    • Encore moi,

      ça viendrait pas d’un probleme dans saisies/pages_uniques.html ?

      En effet on peut y trouver ça :

      <cadre class='spip'>
      <BOUCLE_selection(ARTICLES){par titre}{id_rubrique<0>
      	<option value="#PAGE" [(#PAGE|=={#ENV{valeur,#ENV{defaut}}}|oui) selected="selected"]>#TITRE (#PAGE)</option>
      </BOUCLE_selection>
      </cadre>

      Or les articles de page unique n’ont pas un id_rubrique inférieur à 0, ils n’ont pas de rubrique attachée du tout ! Donc la aleur devrait etre null non ?

    Répondre à ce message

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

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

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom