[Plugin] kzChamPlus: Des champs en plus dans: articles, pages, catégories, users - Gestion mots-clés

2»

Réponses

  • FoggFogg Member

    Bonjour j'ai le même souci que GZYG je n'arrive pas à ajouter de champs supplémentaire, c'est le dernier qui est écrasé.

    Egalement le souci avec le placeholder, quand je clique sur "afficher" rien ne se passe. A noter que pour un champs affiché, si j'appuie sur "cacher" rien ne se passe non plus...

    Pluxml 5.8.1 avec plugin 2.2.2

    Note: j'utilise aussi Firefox.

  • Bonjour,

    Le passage de PluXml à la version 5.8 a vu la suppression de la fonction toggleDiv() en javascript et a été remplacé par un hack en CSS3.

    Pour conserver la compatibilité avec les versions précèdentes de PluXml, j'ai préféré renommer cette fonction et l'insérer dans le plugin.

    Les champs avec bloc de texte peuvent afficher/masquer avec la version 5.8.x de PluXml.

    Pour le champ supplémentaire qui en écrase un autre, il y avait parfois un problème d'indice dans les champs en tableau en Javascript. J'ai repris le script pour être plus fiable.

    Télécharger la version 2.2.3 du plugin

    P.S. : Il y a un bug dans core/admin/article.php : "unchecked" n'est pas un attribut HTML valide (ligne 345). Conséquence : Quand le chapô n'est pas vide, il ne s'affiche plus automatiquement comme avant. Sniff .... 😢

  • TomekTomek Member
    3 mars modifié

    J'ai un souci d'intégration avec les pages statiques pour un champ simple (ligne), alors que c'est ok dans les articles. Si j'insère <?php eval($plxShow->callHook('chamPlus','montitre')); ?> avec montitre = le nom du champ, j'ai une erreur fatale :

    PHP Fatal error: Uncaught Error: Call to a member function f() on null in /monsite/plugins/kzChamPlus/kzChamPlus.php:705

    Je précise que le nom du champ est en minuscule et ne comporte aucun espace ni caractère non autorisé.

    plugin version 2.2.3 / PluXml 5.8.2

  • bazooka07bazooka07 Member

    Effectivement un bug s'est introduit au fil des évolutions du plugin.

    Dans le fichier kzChamPlus/ksChamplus.php dans la fonction kzChamPlus(), à la ligne 700 il faut remplacer 'place' par 'static' pour obtenir ceci :

          $nameField = self::PREFIX . $name;
          if ($plxMotor->mode == 'static') {
             $static_id = $plxMotor->cible;
             $value = plxUtils::strCheck($plxMotor->aStats[$static_id][$nameField]);
          }
          else
             $value = $plxMotor->plxRecord_arts->f($nameField);
    

    Normalement, cela devrait fonctionner.

    P.S.: En principe le hook à appeler à le nom du plugin, il vaut donc mieux faire :

    <?php eval($plxShow->callHook('kzChamPlus','montitre')); ?>
    

    J'avais laissé le hook 'chamPlus' pour être compatible avec l'ancien plugin chamPlus.

    Et pour être encore plus efficace, on peut faire cela aussi :

    <?php eval($this->callHook('kzChamPlus','montitre')); ?>
    

    Je publierai une mise à jour plus tard. Je veux vérifier la doc avant.

  • TomekTomek Member
    3 mars modifié

    Alors effectivement il n'y a plus d'erreur fatale php et ça s'affiche comme attendu !

    Bon, par contre j'ai un gros problème de mise en cache, je ne comprends pas pourquoi. Il faut que je rafraichisse beaucoup, que je change de page pour que les modifs du gabarit soient prises en compte.

  • TomekTomek Member

    Feature request : pourrait-on envisager d'avoir également les champs utilisés dans des pages statiques listés dans la page "Champs suppl." ?

  • bazooka07bazooka07 Member

    Publication de la version 2.2.4 qui corrige le bug pour les pages statiques évoqué ci-avant. Améliore la présentation de l'aide.

    Télécharger la dernière mise à jour de ce magnifique plugin

    @Tomek,

    C'est envisageable. Il faut que je trouve un peu de temps pour le faire.

    Le filtrage pour les articles est assez sophistiqué pour faire face à des milliers d'articles. Je n'envisage pas de mettre un filtrage si élaboré pour les pages statiques. Peut-être limité aux groupes. Pour avoir une idée, tu utilises combien de pages statiques ?

    L'autre souci est que PluXml ne permet pas aux plugins d'avoir plusieurs entrées dans le menu admin. Cela m'oblige à tout mettre dans le fichier admin.php. C'est pas cool !

  • TomekTomek Member

    "Pour avoir une idée, tu utilises combien de pages statiques ?"

    Quelques-unes, du coup je pense que ce n'est pas la peine de trop se prendre la tête sur le filtre. Après il faut voir si d'autres en utilisent beaucoup plus…

  • flipflipflipflip Member
    20 mai modifié

    Bonjour à tous,

    Un nouveau projet, un nouveau besoin. Jusqu'à présent j'utilisais l'antique ChamPlus et j'ai eu besoin d'ajouter des champs dans les catégories... Mince il le propose pas. Tout fier je modifie le code avec l'idée de le rendre plus proche de la dernière version de PluXml et je m’apprêtais à le publier lorsque je découvre kzChamPlus... Bazooka l'a déjà ré-écrit. Je test ton plugin et côté admin c'est même encore mieux que la version initiale. J'oublie très vite ma modification et transfert la config de chamPlus sur kzChamPlus.

    Côté thème j'utilise la fonction $plxShow->lastArtList pour choisir quoi afficher et où, un exemple :

    <div class="newsSlide">
       <?php $plxShow->lastArtList('<div class="item">
        <div>
          #cps_artImgBackground
        </div></div>',
        5, 9, '', 'sort'); ?>
    </div>
    

    Côté admin artImgBackground est un champ de type média affiché dans le pied de l'article. J'ajoute une image à un article et je rafraîchi côté site. Malheureusement l'image ne s'affiche pas mais à la place j'ai #cps_artImgBackground d'afficher :

    <div class="newsSlide ysslider">
      <div class="item animated" style="display: grid;">
        <div>
          #cps_artImgBackground
        </div>
      </div>
    </div>
    

    Dans les logs d'apache je n'ai pas d'erreur.

    • PluXml version 5.8.2 (encodage UTF-8)
    • Version de PHP : 7.2.17-0ubuntu0.18.04.1
    • Apache/2.4.29 (Ubuntu)

    Fichier xml de config de kzChamPlus

    <?xml version='1.0' encoding='UTF-8'?>
    <document>
        <parameter name="entry1" type="numeric">2</parameter>
        <parameter name="label1" type="cdata"><![CDATA[Image de fond]]></parameter>
        <parameter name="name1" type="string">artImgBackground</parameter>
        <parameter name="place1" type="numeric">3</parameter>
        <parameter name="entry2" type="numeric">3</parameter>
        <parameter name="label2" type="cdata"><![CDATA[Identifiant catégorie à lier]]></parameter>
        <parameter name="name2" type="string">artToCatId</parameter>
        <parameter name="place2" type="numeric">3</parameter>
        <parameter name="entry3" type="numeric">3</parameter>
        <parameter name="label3" type="cdata"><![CDATA[Url vers un site extérieur]]></parameter>
        <parameter name="name3" type="string">catExtUrl</parameter>
        <parameter name="place3" type="numeric">7</parameter>
    </document>
    

    Article de test

    <?xml version='1.0' encoding='UTF-8'?>
    <document>
        <title><![CDATA[TEst]]></title>
        <allow_com></allow_com>
        <template><![CDATA[article.php]]></template>
        <chapo><![CDATA[]]></chapo>
        <content><![CDATA[]]></content>
        <tags><![CDATA[]]></tags>
        <meta_description><![CDATA[]]></meta_description>
        <meta_keywords><![CDATA[]]></meta_keywords>
        <title_htmltag><![CDATA[]]></title_htmltag>
        <thumbnail><![CDATA[]]></thumbnail>
        <thumbnail_alt><![CDATA[]]></thumbnail_alt>
        <thumbnail_title><![CDATA[]]></thumbnail_title>
        <date_creation><![CDATA[202005070854]]></date_creation>
        <date_update><![CDATA[202005200948]]></date_update>
        <mv2articles_mp4><![CDATA[]]></mv2articles_mp4>
        <mv2articles_ogg><![CDATA[]]></mv2articles_ogg>
        <mv2articles_webm><![CDATA[]]></mv2articles_webm>
        <mv2articles_default><![CDATA[]]></mv2articles_default>
        <mv2articles_background><![CDATA[]]></mv2articles_background>
        <mv2articles_autoplay><![CDATA[]]></mv2articles_autoplay>
        <mv2articles_controls><![CDATA[]]></mv2articles_controls>
        <mv2articles_loop><![CDATA[]]></mv2articles_loop>
        <galerie><![CDATA[]]></galerie>
        <cps_artImgBackground><![CDATA[data/medias/05-2020-2048px.png]]></cps_artImgBackground>
        <cps_artToCatId><![CDATA[]]></cps_artToCatId>
    </document>
    

    En effectuant d'autres tests aucun des champ supplémentaires fonctionne côté template.

    Exemple avec une catégorie

        <div>
          <?php
            $params = array(
              'catExtUrl',
              '<a href="#value">Site officiel</a>',
              '');
            eval($plxShow->callHook('kzChamPlus', $params));
          ?>
        </div>
    

    Partie XML de la catégorie issue du fichier categories.xml

    <categorie number="010" active="1" homepage="0" tri="desc" bypage="10" menu="oui" url="url" template="categorie.php"><name><![CDATA[MaCat]]></name><description><![CDATA[]]></description><meta_description><![CDATA[]]></meta_description><meta_keywords><![CDATA[]]></meta_keywords><title_htmltag><![CDATA[]]></title_htmltag><thumbnail><![CDATA[data/medias/logo.png]]></thumbnail><thumbnail_alt><![CDATA[]]></thumbnail_alt><thumbnail_title><![CDATA[]]></thumbnail_title><cps_catLogo1><![CDATA[data/medias/range.png]]></cps_catLogo1><cps_catLogo2><![CDATA[]]></cps_catLogo2><cps_catExtUrl><![CDATA[https://nourl.fr/]]></cps_catExtUrl></categorie>
    

    Rien ne s'affiche

    J'ai un string de l'array

  • bazooka07bazooka07 Member

    Bonjour,
    Effectivement quelques bugs sont apparus dans le passage de chamPlus à kzChamPlus.
    J'ai passé cela en revue pour fixer ces erreurs.
    J'ai ajouté également quelques astuces dans la page d'aide
    Télécharger la dernière version 2.3.0

  • flipflipflipflip Member

    Cool merci pour la nouvelle version mais j'ai encore un problème avec.

    Avec la même configuration qu'avant, du côté public cela force l'affichage de la valeur du champ :

    <div class="newsSlide">
           http://nosite/data/medias/05-2020-2048px.png<div class="item animated" style="display: grid;">
          <div>
          </div></div>
    </div>
    

    Code php

    <div class="newsSlide">
       <?php $plxShow->lastArtList('<div class="item">
        <div>
          #cps_artImgBackground
        </div></div>',
        5, 9, '', 'sort'); ?>
    </div>
    

    J'ai essayé ce code aussi

    <div class="newsSlide">
       <?php $plxShow->lastArtList('<div class="item">
        <div>
          <img src="#cps_artImgBackground" />
        </div></div>',
        5, 9, '', 'sort'); ?>
    </div>
    

    Mais j'obtiens

    <div class="newsSlide ysslider">
           http://nosite/data/medias/05-2020-2048px.png<div class="item animated" style="display: grid;">
          <div>
            <img src="">
          </div></div>
    </div>
    

    J'ai un string de l'array

  • bazooka07bazooka07 Member
    25 mai modifié

    Effectivement il y a un petit bug :
    J'ai confondu $plxShow->urlRewrite() avec $plxShow-plxMotor->urlRewrite()
    La 1ère méthode imprime son résultat à l'écran, la 2ème retourne son résultat sous forme de string.
    D'où l'expression http://... qui n'est plus dans l'attribut src.

    Pense à mettre un champ alternatif à la balise <img> :

    <div class="newsSlide">
       <?php $plxShow->lastArtList('<div class="item"><div>
          <img src="#cps_artImgBackground" alt="Fonds article #art_id" />
        </div></div>',
        5, 9, '', 'sort'); ?>
    </div>
    

    Télécharger le plugin version 2.3.1

  • flipflipflipflip Member

    Nikel ça marche avec la version 2.3.1.

    Merci

    J'ai un string de l'array

  • flipflipflipflip Member

    Bonjour,

    C'est encore moi ;) J'ai de nouveau un problème.

    J'ai créé un template pour les catégories qui liste les articles pour afficher la vignette, un bout de texte et des champs provenant de ton plugin renseigné dans chaque articles. Malheureusement les valeurs issues du plugin ne s'affiche pas.

    Bout de template où je souhaite les afficher

      <?php while($plxShow->plxMotor->plxRecord_arts->loop()): ?>
      <article class="grid-1 border" id="post-<?php echo $plxShow->artId(); ?>">
        <?php $a = $plxShow->callHook('kzChamPlus', array('artTitle', true)); ?> // <--- 
        <div class="txtcenter uppercase margin-bottom-1 bggrey-1 txtgrey2"><strong><?php echo $a; ?></strong></div>
        <div class="margin-bottom-1 center"><?php $plxShow->artThumbnail('<img src="#img_url" alt="#img_alt" title="#img_title" />'); ?></div>
    
        <?php
          $fiche_prod = $plxShow->callHook('kzChamPlus', array('artFicheProduit', true));
          $fiche_data = $plxShow->callHook('kzChamPlus', array('artFicheDonnees', true));
          $link_youtube = $plxShow->callHook('kzChamPlus', array('artLinkVideo', true));
        ?>
        <div class="large-visible medium-hidden small-hidden tiny-hidden center has-gutter">
          <div class="grid-2 has-gutter padding-left-1 padding-right-1 margin-bottom-1">
            <div class="bggrey-1 txtcenter padding-1"><a href="<?php echo $fiche_prod; ?>" title="Télécharger la fiche produit">Fiche produit</a></div>
            <div class="bggrey-1 txtcenter padding-1"><button id="opener">Photos</button></div>
          </div>
          <div class="grid-2 has-gutter padding-left-1 padding-right-1 ">
            <div class="bggrey-1 txtcenter padding-1"><a href="<?php echo $fiche_data; ?>" title="Télécharger la fiche données">Fiche données</a></div>
            <div class="bggrey-1 txtcenter padding-1"><a href="#">Vidéos</a></div>
          </div>
        </div>
      </article>
      <?php endwhile; ?>
    

    Les champs attendu sont :

    • artTitle;
    • artFicheProduit;
    • artFicheDonnes;
    • artLinkVideo.

    Dans tout cas rien n'est renvoyé comme valeur alors qu'il y a bien du contenu à afficher. J'ai pas de trace dans les logs apache (mise à part des undefined index ;) ).

    J'ai un string de l'array

  • bazooka07bazooka07 Member

    Comme tu travaillles avec un template pour catégorie, PluXml est en mode categorie. Et donc le plugin va chercher le champ dans le fichier des catégories.
    Il y a 2 solutions pour résoudre le problème :
    La plus directe, mais pas facile à comprendre pour ceux qui ne connaissent pas bien le fonctionnement de PluXml.
    Mais c'est grosso modo un copier-coller de plxShow::artDate() avec le formatage de la date en moins.

    // $fiche_prod = $plxShow->callHook('kzChamPlus', array('artFicheProduit', true));
    $fiche_prod = $plxShow->plxMotor->plxRecord_arts->f(kzChamPlus::PREFIX . 'artFicheProduit');
    

    La deuxième où il faut modifier légèrement le code du plugin. Dans le fichier kzChamPlus, faire un test supplémentaire dans le "switch" pour le mode catégorie dans la méthode kzChamPlus() :

    switch($plxMotor->mode) {
        case 'static':
            $value = plxUtils::strCheck($plxMotor->aStats[$id][$nameField]);
            break;
        case 'categorie':
            if(array_key_exists($nameField, $plxMotor->aCats[$id])) {
                $value = plxUtils::strCheck($plxMotor->aCats[$id][$nameField]);
            }
            break;
    }
    

    Je ferai une mis à jour du plugin prochainement

  • krockroc Member
    29 mai modifié

    Je viens d'installer ce plugin en remplacement de mon vieux ChampArt : bravo, c'est vraiment génial.
    J’apprécie de pouvoir voir d'un coup tous les champs supplémentaires de mes articles. Par contre, j'ai tenté d'en modifier un depuis l'interface "Champs supplémentaires", et je n'y suis pas parvenu. Pourriez-vous indiquer la procédure exacte ?
    Cette dernière fonction serait vraiment à intégrer de façon plus globale à mon avis (pouvoir modifier des champs "primaires" de nombreux articles à la fois).

    Mes sites propulsés par ce cher PluXml : www.krocui.com - www.lucasdebruyn.com - www.coolraool-publishing.com

  • flipflipflipflip Member

    Nikel ça marche avec :

    $fiche_prod = $plxShow->plxMotor->plxRecord_arts->f(kzChamPlus::PREFIX . 'artFicheProduit');
    

    Et pour le reste je fais la modification à la main en attendant que tu publie une autre version.
    Merci

    J'ai un string de l'array

  • bazooka07bazooka07 Member

    Version 2.4.0

    • Corrige le problème évoqué dans les posts précèdents
    • Ajout d'un 4ème paramètre dans le hook pour cibler un champ particulier quelque soit le contexte (categorie, statique, tags, ..) Voir "utilisation avancée" dans l'aide.
  • flipflipflipflip Member

    Encore bravo pour cette version 2.4 ;)

    Je rencontre un bug mais je n'arrive pas a identifier si c'est un problème avec le plugin ou bien pluxml.

    Imaginons : j'ai cinq catégories créées dans un ordre au hasard. J'ajoute des champs en pied de catégorie via le plugin. Je commence à remplir mes catégories et ajouter des valeurs dans les champs complémentaires. Puis je me rend compte que l'ordre d'affichage des catégories n'est pas le bon et je décide de le changer. Depuis la page de gestion des catégories je fais un glissé/déposé et je rafraîchi côté visiteur.

    Et soudain c'est le drame ! Toutes les valeurs des champs du plugin on disparu.

    J'ai fais plusieurs fois le test et c'est bien le changement d'ordre que se soit en glissé/déposé ou bien en modifiant la valeur dans la colonne ordre qui fait disparaître toutes les valeurs.

    J'ai un string de l'array

  • skensken Member

    Par contre le champs peut être dans Users, mais pas dans Profil, parce que le rédacteur à pas accès normalement à User, donc il peut pas remplir les autres champs qui sont proposé. possible d'y remédier ?

    Le temps nous le dira, un jour ou l'autre, le temps nous le dira
    https://thebookglobal.com/
    Ovh/7.3/pluxml 5.8.2

  • flipflipflipflip Member
    22 juin modifié

    Salut,
    @bazooka07 est-ce que tu as une idée pour le bug de suppression des infos dans les catégories lorsqu'on change l'ordre ?

    Edit :
    J'ai continué à chercher la cause du problème. En fait il n'y a pas besoin de changer l'ordre des catégories, il suffit de cliquer sur le bouton "Modifier la liste des catégories" pour que toutes les valeurs enregistrées dans les champs du plugin soient effacées sur toutes les catégories. En creusant encore j'ai l'impression que lorsqu'on se trouve sur la page categories.php le hook plxAdminEditCategoriesUpdate n'est pas pris en compte à le clic sur le bouton "Modifier la liste des catégories".

    Edit 2:
    Je continue les investigations. Il s'avère que plxAdminEditCategoriesUpdate est bien exécuté mais c'est _plxAdminEditXml qui est tout "simplement" sauté lors du clic sur le bouton "Modifier la liste des catégories". Pour tester j'ai ajouté une petite écriture dans un fichier texte (sans bug ;) ) et rien ne se passe. Le même code dans _process ajoute bien des données au fichier txt. Pour confirmer j'ai remplacer la fonction plxAdminEditCategoriesXml par

        public function plxAdminEditCategoriesXml()     {
            $fp = fopen ('/var/www/html/5.0/compteur.txt', 'a');
            fwrite ($fp, '--- _plxAdminEditXml ---'."\n");      
            fclose($fp);
        }
    

    Et toujours rien dans mon fichier. Dans le doute dans le fichier class.plx.admin.php j'ai ajouté ce code dans la fonction editCategorie

                    # Hook plugins
                    $fp = fopen ('/var/www/html/5.0/compteur.txt', 'a');
                    fwrite ($fp, '--- before plxAdminEditCategoriesXml ---'."\n");
                    fclose($fp);
                    eval($this->plxPlugins->callHook('plxAdminEditCategoriesXml'));
                    $fp = fopen ('/var/www/html/5.0/compteur.txt', 'a');
                    fwrite ($fp, '--- after plxAdminEditCategoriesXml ---'."\n");
                    fclose($fp);
    

    Les données sont bien écrites dans mon fichier. Ce qui est encore plus dingue est que lorsque j'édite la catégorie (categorie.php) la mise à jour est bien prise en compte. Et pourtant que se soit depuis categories.php ou categorie.php cela passe par le hook plxAdminEditCategoriesXml. Ce bug va me faire devenir chèvre !

    Imaginons : j'ai cinq catégories créées dans un ordre au hasard. J'ajoute des champs en pied de catégorie via le plugin. Je commence à remplir mes catégories et ajouter des valeurs dans les champs complémentaires. Puis je me rend compte que l'ordre d'affichage des catégories n'est pas le bon et je décide de le changer. Depuis la page de gestion des catégories je fais un glissé/déposé et je rafraîchi côté visiteur.

    Et soudain c'est le drame ! Toutes les valeurs des champs du plugin on disparu.

    J'ai fais plusieurs fois le test et c'est bien le changement d'ordre que se soit en glissé/déposé ou bien en modifiant la valeur dans la colonne ordre qui fait disparaître toutes les valeurs.

    J'ai un string de l'array

  • flipflipflipflip Member

    Bingo ! J'ai trouvé.

    Dans la constante HOOK il faut ajouter

            'categorie' => array(
                'plxAdminEditCategorie',
                'plxAdminEditCategoriesUpdate',
                'plxAdminEditCategoriesXml',
                'AdminCategoryTop',
                'AdminCategory',
            ),
            'categories'    => array(
                'plxAdminEditCategoriesUpdate',
                'plxAdminEditCategoriesXml'
            ),
    [...]
    

    Afin que la variable la variable $myScript soit correctement renseigné.

    $myScript = basename($_SERVER['PHP_SELF'], '.php');
    

    J'ai un string de l'array

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