[Plugin] ChamPlus ou comment rajouter des champs

bazooka07bazooka07 PluXml Lead Developer, Moderator
novembre 2019 modifié dans Plugins
Bonjour,

Ce plugin permet de rajouter des champs aux articles et aux pages statiques.
Les nouveaux champs sont définis dans le panneau de configuration : nom, libellé, groupe, type bloc-texte ou non, page statique ou non.
Les nouveaux champs apparaissent ensuite avec leur libellé dans les pages d'édition des articles et des pages statiques.
Ensuite un seul hook "champArt" pour les articles et les pages statiques, avec chaine de formatage en option.
Plus d'infos en cliquant sur le bouton aide du panneau de config.

Une petite démo pour un article : http://jeveuxpartir.free.fr/pluxml/index.php?article57/test-du-plugin-champlus-dans-un-article
Une petite démo pour une page statique : http://jeveuxpartir.free.fr/pluxml/index.php?static20/champlus-demo
Une petite démo pour une catégorie qui affiche les vignettes à côté du chapô des articles : http://jeveuxpartir.free.fr/pluxml/index.php?categorie14/demo-champlus
démo du hook chamPlusArticle : http://jeveuxpartir.free.fr/pluxml/index.php?categorie16/demo-champlus-article

Pour télécharger la dernière version du plugin, on clique toujours ici
Et pour l'entrepôt de plugins, c'est comme d'hab : http://www.kazimentou.fr/pluxml-plugins2/

Abonnez vous au flux RSS de mon entrepôt pour être informé des dernières mises à jour:
rss.pnghttp://kazimentou.fr/pluxml-plugins2/index.php?rss

2019-11-10: version 2.0.0 - ajout de la page admin.php
2017-01-03: version 0.88 - correction bug dans _get_fields_art_loop() (concaténation avec une chaine qui n'existe pas) billet #62
[del]2016-05-01: version 0.87 - correction bug mineur à l'activation du plugin (billet #57)[/del]
[del]2016-04-03: version 0.86 - mise à jour doc pour récupérer valeur du champ[/del]
[del]2016-04-02: version 0.85[/del]
[list=*]
[*]correction des coquilles dans l'aide. [/*]
[*]ajout d'un 3ème paramètre optionnel à utiliser si le champ est vide. Si absent, on affiche rien quand le champ est vide[/*]
[*]pour les champs 1 ligne, possibilité de choisir l'emplacement dans la sidebar ou dans le panneau principal pour un aricle[/*]
[*]bouton pour afficher l'aperçu d'un champ media[/*]
[/list]

2016-01-14: version 0.81 - fix mineur pour #art_chapo
2016-01-11: version 0.80 - ajout du hook plxShowLastArtListContent et intégration médias
2016-01-08: version 0.77 - correction erreur de frappe pour lastArtList - résolution conflit avec image accroche dans Pluxml 5.5
2015-12.24: version 0.75 - version du conflit avec le plugin TinyMCE losqu'on utlise les Iframes. Amélioration de l'affichage de l'air - Gestion de la valeur des champs selon "méthode Pluxml"
2015-12-12: version 0.7 - ajout du hook chamPlusArticle()
2015-12-08: version 0.62 - correction pour être compatible avec PHP version 5.4.45 (Debian Wheezy).
Inutile de faire la mise à jour si vous êtes en php version 5.6.0 et au delà.
2015-12-05: version 0.61- correction sur le motif de recherche dans le hook plxShowLastArtList.
2015-12-02: version 0.6 - gestion des médias et du hook plxShowLastArtList
2015-11-25: version 0.51 - correction dans l'affichage de l'aide
2015-11-23: version 0.5 - version initiale

N.B. : Toute ressemblance avec le plugin champArt est fortuite et vraiment très approximative.

Cordialement
Mots clés:
«13

Réponses

  • Bonjour,

    Avant même que je puisse activer le plugin, lorsque je clique sur le menu plugin du panneau d'administration j'ai ce message d'erreur:

    Notice: Undefined variable: plxShow in E:\htdocs\mySitesTesting\plx-2015-11-19\plugins\chamPlus\lang\fr.php on line 33

    Notice: Trying to get property of non-object in E:\htdocs\mySitesTesting\plx-2015-11-19\plugins\chamPlus\lang\fr.php on line 33

    Notice: Undefined variable: plxShow in E:\htdocs\mySitesTesting\plx-2015-11-19\plugins\chamPlus\lang\fr.php on line 61

    Notice: Trying to get property of non-object in E:\htdocs\mySitesTesting\plx-2015-11-19\plugins\chamPlus\lang\fr.php on line 61

    Cordialement
  • cpalocpalo Member
    novembre 2015 modifié
    Oups!! toutes mes excuses.
    Je le testais en utilisant la version de développement de Pluxml.
    Avec la version 5.4 je n'ai pas ces messages d'erreur et pas de problème pour l'installer.

    Par contre il m'affiche tout le temps : plugin non configuré

    Egalement petit problème de mise en page: lorsqu'on affiche l'aide, on ne peut pas voir le début car c'est caché par le bandeau horizontal du panneau d'administration. Par contre en mode "largeur réduite" on voit tout car la hauteur du bandeau menu est plus petite.
  • bazooka07bazooka07 PluXml Lead Developer, Moderator
    novembre 2015 modifié
    @cpalo

    Effectivement quelques bugs mineurs dans l'aide. L'aide est le dernier que j'ai fait avec quelques exemples. J'avais pas trop testé.

    Dans les exemples de code que je donne, je suis obligé de transformer tous les caractères "<" et "$" en leur entités HTML correspondantes même si le code est encadré par une paire de baises HTML "code" , sinon php cherche à interpréter le code. Juste pénible cette histoire.
    J'ai corrigé également vis à vis du bandeau.

    Recharge la dernière version en cliquant sur l'icône dans le dépôt.

    Merci de ton retour.
  • J'ai du zappé quelque chose car je n'ai aucun changement.
    J'ai même supprimé completement supprimer le plugin pour le réinstaller proprement, mais même résultat.
  • bazooka07bazooka07 PluXml Lead Developer, Moderator
    novembre 2015 modifié
    Dans le fichier lang.fr.php, tu ne dois pas trouver de caractère "$" ou d'expression "<?php". Tapez Ctrl-F dans n'importe quel éditeur de texte pour le voir.
    Dans le fichier css/admin.css, il y a la règle "top: 115px;".

    Comment as-tu "supprimé" le plugin ? Avec l'explorateur de fichiers de Window$. Cela ne marche pas !
    Dans le back-office, aller sur le panneau de config des plugins, sélectionner chamPlus, désactiver le plugin, sélectionner le plugin, activer le plugin pour forcer Pluxml à mettre son cache CSS à jour.
  • Bonjour,
    J'utilise actuellement le plugin "ChampArt".
    Quel est la différence avec le tien ?
    Jol5926
  • bazooka07bazooka07 PluXml Lead Developer, Moderator
    Bonjour,

    ChamPlus apporte quelques fonctionnalités supplémentaires :
    [list=*]
    [*]Il permet d'ajouter des champs supplémentaires dans les pages statiques[/*]
    [*]Dans l'édition des articles, les champs peuvent être soit dans le panneau latéral droit, soit en bas de page[/*]
    [*]Côté site, on peut passer une chaine de formatage au hook[/*]
    [*]on utilise le même hook pour les pages statiques et les articles[/*]
    [*]Dans un thème, on peut récupérer l'ensemble des champs supplémentaires d'un article ou d'une page statique[/*]
    [/list]

    A++
  • Ca a l'air pas mal ... Je vais voir pour remplacer Champart par celui-ci.
    J'utilise champart en ce moment pour afficher des métadonnées supplémentaires dans certaines pages particulières
    Je teste rapidement, merci !
  • bazooka07bazooka07 PluXml Lead Developer, Moderator
    Ok.
    N'hésiste pas à faire un retour. Toute critique est bonne à prendre.
  • bazooka07bazooka07 PluXml Lead Developer, Moderator
    décembre 2015 modifié
    Bonjour,

    Nouvelle évolution du plugin chamPlus (version 0.6) :

    Jusqu'à présent les champs supplémentaires étaient de type ligne ou bloc de texte. Il y a maintenant un nouveau type: media.
    On utilise le gestionnaire de médias de Pluxml, plutôt que de réinventer la roue, dans un iframe de la page html, pour contrer les bloqueurs de popups.
    L'intégration des médias est automatique par défaut dans la page pour une image ou ouvre un nouvel onglet pour les autres types de médias.

    Autre nouveauté: le comportement original plxShowLastArtList de Pluxml peut être modifié pour afficher les champs supplémentaires des articles, qu'il soit de type ligne, bloc de texte ou média. Le cas échéant une image sera affichée (vignette). Pour cela, il faut passer une chaine de format au hook plxShowLastArtList dans le gabarit (sidebar.php) du thème. Cette option n'est pas activée par défaut, voir le panneau de config du plugin

    L'aide est affichée dans la panneau de config du plugin.

    Des liens vers quelques démos sont affichés au début du fil de discussion.

    Toute ressemblance avec un plugin existant affichant un champ supplémentaire ou une vignette est bien sûr fortuite ;)

    Merci pour vos retours
  • FrancisFrancis Member
    décembre 2015 modifié
    Merci Bazooka07, depuis la reconversion de DanielSan, champArt était en déshérence...
    Ton plugin chamPlus permet de le ressuciter en plus puissant encore, avec en bonus l'intégration du plugin Vignette !

    Bravo aussi pour l'ajout de champs dans les pages statiques, c'est une fonction bien utile qui manquait jusqu'ici :)

    Je m'en vais tester ce chamPlus dès que possible.
  • bazooka07bazooka07 PluXml Lead Developer, Moderator
    Merci pour le retour.

    Correction d'un petit bug sur le motif de recherche des articles dans le hook plxShowLastArtList.
    Utilisez la version 0.61 pour que la liste des derniers articles soit correcte.

    A++
  • Bonjour bazooka07,

    Si j'ai bien compris avec ce plugin on peut ajouter des champs aux articles ou bien aux pages statiques.
    Ces champs peuvent être ajoutés à la fonction "lastArtList"?
    J'essaye de l'installer sur la dernière version de pluxml sans succès.
    J'ai bien le plugin actif, mais quand j'entre des données (nom, intitulé, type de champ, groupe) et que j'enregistre il ne se passe rien !
    Merci
  • bazooka07bazooka07 PluXml Lead Developer, Moderator
    @jeronicoz,

    Oui tu peux utiliser les champs des articles que tu veux avec lastArtList.

    Supposons que tu saisis un champ avec le nom vignette, par hasard.
    Si tu ouvres avec ton éditeur préféré, le fichier xml d'un article récent, tu trouveras une balise "cps_vignette".
    Pour utiliser ce champ avec lastAtrList, tu dois lui préciser une chaine de format dans le fichier sidebar.php de ton thème :
    [== PHP ==]
    <ul>
        <?php $plxShow->lastArtList('<li>#cps_vignette<a class="#art_status" href="#art_url">#art_title</a></li>'."\n"); ?>
    </ul>
    

    Bien pensez à mettre le préfixe cps_ devant le nom de ton champ dans la chaine de format

    C'est quoi "il ne se passe rien" ?
    Tu retrouves pas tes saisies dans les champs supplémentaires quand tu sauvegardes un article ou une page statique

    A++
  • @bazooka07,

    Pour le moment je n 'arrive pas à voir les champs personnalisés dans la configuration.
    Je les renseigne, les enregistres mais les champs ne sont pas sauvegardés.
    Je suis en version de php : 5.4.45, pluxml 5.4
    Si mon thème n'utilise pas le fichier sidebar.php cela fonctionnera-t-il ?
    Merci
  • bazooka07bazooka07 PluXml Lead Developer, Moderator
    @jeronicoz,

    Tu utilises une version obsolète de PHP (elle n'est plus téléchargeable sur php.net)
    Et sa fonction array_filter n'accepte que 2 paramètres au lieu de 3 pour PHP version 5.6.0 et se plante en silence.

    Télécharge la version 0.62 du plugin, j'ai testé sous Debain Wheezy et ça marche maintenant.

    A++
  • bazooka07 a écrit:

    Oui tu peux utiliser les champs des articles que tu veux avec lastArtList.

    Supposons que tu saisis un champ avec le nom vignette, par hasard.
    Si tu ouvres avec ton éditeur préféré, le fichier xml d'un article récent, tu trouveras une balise "cps_vignette".
    Pour utiliser ce champ avec lastAtrList, tu dois lui préciser une chaine de format dans le fichier sidebar.php de ton thème :
    [== PHP ==]
    <ul>
        <?php $plxShow->lastArtList('<li>#cps_vignette<a class="#art_status" href="#art_url">#art_title</a></li>'."\n"); ?>
    </ul>
    
    A++
    bonjour @bazooka
    en reprenant ce code, au lieux de l'afficher dans la sidebar.php on peux le mettre dans une page static-events.php?
    si oui comment dois je choisir les otions dans l admin?
    merci pour ton explications
    A++
  • @bazooka,

    En effet avec la version 0.62 j'ai bien l'enregistrement du champs.
    Je n'arrive toujours pas à afficher les valeurs dans un article mais je persiste et reviens vers toi.
    Merci
  • bazooka07bazooka07 PluXml Lead Developer, Moderator
    décembre 2015 modifié
    @jeronicoz,

    As tu bien coché la case Activer le hook plxShowLastArtList ?
    Par défaut, elle n'est pas cochée car il faut court-circuiter totalement la fonction PlxShow::lastArtList(...) de Pluxml. Il manque un hook juste avant l'affichage.
    Panneau de config
    Site
    Phpinfo()

    A++
  • bazooka07bazooka07 PluXml Lead Developer, Moderator
    décembre 2015 modifié
    @Dudy,

    Je pense qu'on ne peut pas utiliser une boucle sur une liste d'articles dans une page statique.
    Pluxml a plusieurs modes de fonctionnement pour l'affichage du site : home, categorie, tags, article, static
    Quand dans le menu on clique sur le lien d'une page statique, on passe en mode static. Et dans ce mode, on ne fait aucune recherche d'articles.

    L'astuce est d'utiliser une catégorie events et d'afficher le lien pour cette catégorie dans la barre de menu à la place de la sidebar.
    Il y a quelques années, Stéphane a publié une astuce pour placer une catégorie dans la barre de menus :
    http://pluxopolis.net/article28/afficher-le-menu-d-une-categorie-dans-la-barre-des-menus-des-pages-statiques

    Cela mériterait une réflexion pour savoir si on doit intégrer cette astuce dans le panneau de config des catégories. :(

    Bon courage
  • @bazooka07
    merci pour tes conseils,
    je vais voir ton lien

    belle journée
  • plxShowLastArtList est une fonction indispensable pour dynamiser un site mais je trouve le nombre de champs limités.
    L'idée ne serait-ce pas d'avoir des champs supplémentaires à ceux déjà existant :

    #art_id : affiche l'ID de l'article
    #art_url : affiche l'URL de l'article
    #art_status : affiche le status de l'article (active / noactive)
    #art_author : affiche l'auteur de l'article
    #art_title : affiche le titre de l'article
    #art_chapo : affiche le chapô de l'article
    #art_content : affiche un extrait du contenu de l'article
    #art_content(num) : affiche un extrait du contenu de l'article en précisant le nom de caractère affichés
    #art_date : affiche la date de publication de l'article au format court (jj/mm/aaaa)
    #art_hour : affiche l'heure de publication de l'article au format court (hh:mm)
    #cat_list : affiche les catégories auxquelles appartient l'article sous forme d'un lien
    #art_nbcoms : affiche le nombre de commentaires pour chaque article
    #cps_vignette : Champlus d'une vignette
    #cps_lien : Champlus d'un lien vers une page
    etc....

    Peut-être cette fonction existe déjà sans toucher au core ?
    Merci
  • bazooka07bazooka07 PluXml Lead Developer, Moderator
    Bonjour,

    J'ai l'impression que beaucoup d'entre vous utilisent plxShowLastArtList() à toutes les sauces. Même pour afficher une liste d'articles pour une catégorie donnée. Ce n'est pas super car cela demande un filtrage et un tri supplémentaire alors que c'est le rôle des catégories. De plus, il n'est plus possible d'utiliser la pagination et vous risquez d'afficher une longue liste d'articles sur une seule page.
    Je pense que cela est dû à l'absence d'une fonction qui pourrait afficher une sélection de champs, y compris non standards, en lui précisant une chaine de format.

    J'ai donc rajouter un hook chamPlusArticle() au plugin chamPlus version 0.70 à qui on peut passer une chaîne $format, comme pour lastArtList,
    Il suffit d'inclure les articles désirés dans une catégorie particulière. Rappelons que dans une catégorie, on peut trier les articles selon leur titre.

    Un lien vers une démo figure au début du fil de discussion.

    Merci de vos retours.
  • Bonjour bazooka07,

    Tout d'abord merci pour tes réponses et tes mises à jour ultra-rapides :-)
    Dans mon cas, mais je pense que d'autres personnes ont la même problématique j'ai besoin de contenu hiérarchisé.
    Je sais bien que pluxml est plus orienté blog qu'autre chose mais sa légèreté et la facilité de sa prise en font un candidat sérieux pour des sites internets tout aussi sérieux.
    Si on a des niveaux dans un site, parties/sous-parties je ne vois pas comment nous passer de plxShowLastArtList().
    En effet j'utilise une partie des champs disponibles de chaque article pour alimenter la page de catégorie et le reste pour le contenu de l'article.
    Par exemple dans une page statique on appelle les chapos de tous les articles concernés par plxShowLastArtList() de la catégorie concernée et le reste des champs pour l'article en lui même. Voilà pourquoi des champs supplémentaires seraient utiles.
    C'est aussi pour faciliter la mise à jour du site par des personnes non expertes qu'avoir des noms de champs plus explicites est utile, "chapo" c'est moins parlant que "texte d'introduction" ou vignette pour le lien....etc
    S'il existe une autre manipulation alors je ne l'ai pas encore trouvé.
    Merci
  • danielsandanielsan Member
    décembre 2015 modifié
    hello bazooka,

    merci pour ce plugin qui m'évite de me replonger dans le dev ... sauf que je n'arrive pas à l'utiliser ! :D
    je vais continuer à essayer toutes les possibilités.

    Il y a cependant un petit pb d'affichage pour les champs lignes dans les articles, le champ est trop grand, j'imagine qu'il serait bien de le caler en fonction du panel admin

    d'autre part, dans l'aide ça serait bien d'indiquer dans quel template utiliser tel appel de fonction

    merci
  • bazooka07bazooka07 PluXml Lead Developer, Moderator
    Bonjour @danielsan,

    Dans le panneau de config du plugin, il faut cliquer sur le bouton aide et lire la doc.
    Il y a quelques exemples de code (snippets), en particulier un exemple de template pour le hook champlusArticle() qui permet d'afficher n'importe quels champs d'un article en paramétrant la chaine de format. C'est une fonction assez puissante pour résoudre pas mal de probèmes d'affichage. En particulier le hook détecte pour un champ supplémentaire s'il est du type média pour afficher une image.
    Quelques exemples valent souvent mieux qu'un long discours :
    [list=*]
    [*]http://jeveuxpartir.free.fr/pluxml/index.php?article57/test-du-plugin-champlus-dans-un-article[/*]
    [*]http://jeveuxpartir.free.fr/pluxml/index.php?static20/champlus-demo[/*]
    [/list]

    Concernant le petit problème d'affichage, ce n'est pas un bug du plugin, mais une fonctionnalité non documenté de Pluxml :mad:
    En effet, la longueur d'affichage du champ est codé en dur dans article.php. Alors que le paramètrage d'affichage est dévolu aux feuilles de style. C'est une mauvaise pratique. Si un designer veut ajuster veut modifier l'affichage, il est bloqué s'il ne veut pas mettre les mains dans le cambouis. En attendant, j'ai modifié le plugin pour prendre en compte ce bug.

    Nouvelle publication du plugin ce jour. Voir lien en début du fil de discussion.

    A++
  • ah c'est mieux là, merci.

    j'avais bien lu l'aide, j'ai finalement trouvé la bonne méthode :)
  • hello,

    petite erreur dans l'aide :
    [== PHP ==]
    <pre><?php print_r(
      eval($plxShow->callHook('chamPlusList'));
    ); ?></pre>
    
    il y a un point-virgule de trop (j'avais fait la même avec champArt :D )
    [== PHP ==]
    <pre><?php print_r(
      eval($plxShow->callHook('chamPlusList'))
    ); ?></pre>
    
    c'est mieux
    (d'ailleurs pourquoi avoir embarqué la feuille d'aide dans la page config' au lieu d'utiliser la fonction "aide" native ? )

    sinon je comprends toujours pas comment récupérer la valeur d'un champ. Je passe obligatoirement par le tableau ?
    [== PHP ==]
    eval($plxShow->callHook('chamPlusList')));
    

    je cherche à afficher ça :
    [== PHP ==]
    $format = '<a href="#art_url" title="#art_title">#art_title<span class="label">#cps_prix&nbsp;&euro;</span></a>';
    eval($plxShow->callHook('chamPlusArticle', $format));
    

    un truc simple quoi :P
  • Bonjour,

    Je comptais utiliser ChamPlus pour ajouter des champs mais en fait les champs supplémentaires sont vides.
    Comme danielsan je n'arrive pas à afficher les champs supplémentaires (lien et vignette).
    Dans ce cas cette fonction est dans une page statique qui appelle tous les articles de la catégorie 1
    Quelle est mon erreur ?
    Merci
    [== Indéfini ==]
    <?php $plxShow->lastArtList('<a href=#art_url>
    	<h1>#art_title</h1>
    	<p>#art_chapo(150)</p>
    	<p>#cps_lien</p>
            <p>#cps_vignette</p>
    	</a>',0,'1','','sort'); ?>
    

    Jeronicoz
  • bazooka07bazooka07 PluXml Lead Developer, Moderator
    Bonjour,

    As-tu coché la case ci-dessous:

    Les%20Fables%20de%20la%20Fontaine%20et%C2%A0autres%C2%A0trucs%20-%20Administration%20-%20Mozilla%20Firefox_026.jpg

    Ensuite en mettant $max à zéro, tu devrais rien afficher normalement
    [== PHP ==]
    public function lastArtList($format='<li><a href="#art_url" title="#art_title">#art_title</a></li>',$max=5,$cat_id='',$ending='', $sort='rsort')
    

    A++
Connectez-vous ou Inscrivez-vous pour répondre.