Développement plugin simple (affichage d'info supplémentaires en backoffice)

krockroc Member
7 juin modifié dans Plugins

Bonjour,

J'envisage depuis qq temps de coder un plugin simple qui me permettrait d'afficher certaines champs supplémentaires directement dans la liste des articles en backoffice : meta, description etc.
Est-ce que ça vous paraît très simple à réaliser ?
J'ai peur de me lancer dans une machine à gaz pour pas grand chose.
L'idée de développer un plugin pour cela serait de pouvoir conserver ce fonctionnement à chaque mise à jour de PluXml (en espérant qu'il y en ai…) et éviter de modifier les fichiers de bases.
Merci !

Réponses

  • 7 juin modifié

    Bonjour,

    Si l'idée est d'ajouter des cellules au tableau de la listes des articles et d'y afficher des champs déjà existant, tu peux te servir du hook AdminIndexTop pour modifier ce tableau et le remplacer.

    exemple théorique

    function à greffer au hook à partir du plugin :


    //... code base plugin class construct ... public function AdminIndexTop() { // copie du code de index.php aprés le hook <?php eval($plxAdmin->plxPlugins->callHook('AdminIndexTop')) # Hook Plugins ?> echo ' <form action="index.php" method="post" id="form_articles">'; // ... jusqu'au tableau echo '<div class="scrollable-table"> <table id="articles-table" class="full-width">'; // ici les modif à inclure dans thead si besoin, puis dans tbody pour y ajouter les champs et cellules supplementaire //... # Hook Plugins eval($plxAdmin->plxPlugins->callHook('AdminIndexFoot')); # On inclut le footer include __DIR__ .'/foot.php'; exit; // pour ne pas recharger le tableau d'origine }

    C'est apparemment un plugin assez simple à réalisé si il ne s'agit que de modifier le tableau des articles.

    Si tu veut créer de nouveaux champs, cela va être beaucoup plus compliqué.

    Cdt

    ♣♣♣♣ <°(((((-{ ~ Mon site avec PluXml: https://re7net.com | Mes plugins : https://github.com/gcyrillus PluXml 5.8.7 sur free ? oui c'est possible : http://gccyrillus.free.fr/plxSingle/PluXml/ }-))))°> ♣♣♣♣

  • krockroc Member

    Merci beaucoup pour ton aide, ça me fait une bonne base !
    Oui, je souhaite juste afficher des champs déjà existants !
    Je vais avancer et je partagerai mon code ici. Merci !

  • krockroc Member

    Quand tu indiques :
    // copie du code de index.php aprés le hook <?php eval($plxAdmin->plxPlugins->callHook('AdminIndexTop')) # Hook Plugins ?>
    ça veut dire qu'il faut que je reprenne tout le code existant et que je transforme tout le code html avec "echo" ?

  • 7 juin modifié

    Heu, c'est pas aussi simple en réalité, c'est bien là , mais pas forcement en echo et il va falloir s'assurer que les tableaux de données sont accessible.
    Si tu veut, je peut te faire la base ou tenter d'injecter la modif que tu as déjà faites si j'en croit ce post : https://forum.pluxml.org/discussion/6765/theme-admin ;)

    cdt

    ♣♣♣♣ <°(((((-{ ~ Mon site avec PluXml: https://re7net.com | Mes plugins : https://github.com/gcyrillus PluXml 5.8.7 sur free ? oui c'est possible : http://gccyrillus.free.fr/plxSingle/PluXml/ }-))))°> ♣♣♣♣

  • krockroc Member
    7 juin modifié

    Hihi, oui, j'ai voulu refaire les modifications que j'avais fait à l'époque mais que j'ai finalement perdues en faisant une mise à jour il y a quelques temps…
    En fait, je voudrais afficher une colonne avec les deux champs "meta title" et "meta description" dans la liste des articles (c'est ce que j'avais fait à l'époque de ce post :) ) - et aussi masquer les colonnes de commentaires qui ne me sont pas utiles en effet.
    Ben si tu te sens le courage de faire la base, je veux bien, car ça risque de me prendre… un certain temps :)
    Merci beaucoup :)

  • 7 juin modifié

    oki, voici un exemple à reprendre à ta sauce si pas tout à fait ce que tu voulais faire :
    https://github.com/gcyrillus/adminIndex

    oups, pour les coms, il faut retirer le th et le td qui affiche la colonne.
    Cdt

    ♣♣♣♣ <°(((((-{ ~ Mon site avec PluXml: https://re7net.com | Mes plugins : https://github.com/gcyrillus PluXml 5.8.7 sur free ? oui c'est possible : http://gccyrillus.free.fr/plxSingle/PluXml/ }-))))°> ♣♣♣♣

  • krockroc Member

    Merci beaucoup !
    J'ai testé et malheureusement, quand j'active le plugin dans le backoffice, la liste des articles n'affiche plus rien :)
    Je suis sur PluXml 5.8.5

  • 7 juin modifié

    ?? sous php 8 et 7 et une archive toute neuve de pluxml 5.8.5 ( https://github.com/pluxml/PluXml/releases/tag/v5.8.5 ) , cela fonctionne pour moi, le seul bug qu'il y a c'est l'histoire des champ thumbnail manquant dans l'article de démo qui se règlent en réenregistrant cet article, sans réel incidence. J'ai pensée qu'il y aurait peut-être a y faire une Maj, apparemment non, il passe tel quel.

    Quelle est ta version de PHP et quels autres plugins utilises tu ? Cela peut-être une incompatibilité ou télescopage avec un autre plugin simplement a repositionné dans l'ordre de ceux ci.

    Cdt

    ♣♣♣♣ <°(((((-{ ~ Mon site avec PluXml: https://re7net.com | Mes plugins : https://github.com/gcyrillus PluXml 5.8.7 sur free ? oui c'est possible : http://gccyrillus.free.fr/plxSingle/PluXml/ }-))))°> ♣♣♣♣

  • krockroc Member

    Autant pour moi, j'avais mal nommé le dossier du plugin, ça fonctionne parfaitement ! Mille mercis !
    Je garde précieusement ce code pour d'autres aventures pluginesques futures :)

  • krockroc Member
    9 juin modifié

    Il y a juste un ptit bug sur l'affichage des filtres de catégories : elles ne s'affichent plus dans le menu déroulant :)
    Une idée sur la question ? J'ai cherché mais je sais pas comment m'y prendre…

  • Bonjour,

    bon bah voila, d'un truc simple , j'en ai fait un truc qui marche pô bien.

    Je te fais une mise à jour du plugin en réinjectant le tableau modifié de façon plus PluXmlienne :)

    ♣♣♣♣ <°(((((-{ ~ Mon site avec PluXml: https://re7net.com | Mes plugins : https://github.com/gcyrillus PluXml 5.8.7 sur free ? oui c'est possible : http://gccyrillus.free.fr/plxSingle/PluXml/ }-))))°> ♣♣♣♣

  • 9 juin modifié

    @kroc voici l'archive modifiée : https://github.com/gcyrillus/adminIndex/archive/refs/heads/main.zip

    Le tableau est maintenant dans le fichier article.php du plugin. tu peux l'éditer à nouveau à ta sauce (copie/colle celui que tu as si différent) , ne touche qu'au tableau:
    En fait , les parties à ne pas modifier sont:

    <form action="index.php" method="post" id="form_articles">
    <div class="inline-form action-bar">
        <h2><?php echo L_ARTICLES_LIST ?></h2>
        <ul class="menu">
            <li><a <?php echo ($_SESSION['sel_get']=='all')?'class="selected" ':'' ?>href="index.php?sel=all&amp;page=1"><?php echo L_ALL ?></a><?php echo '&nbsp;('.$plxAdmin->nbArticles('all', "$userId").')' ?></li>
            <li><a <?php echo ($_SESSION['sel_get']=='published')?'class="selected" ':'' ?>href="index.php?sel=published&amp;page=1"><?php echo L_ALL_PUBLISHED ?></a><?php echo '&nbsp;('.$plxAdmin->nbArticles('published', $userId, '').')' ?></li>
            <li><a <?php echo ($_SESSION['sel_get']=='draft')?'class="selected" ':'' ?>href="index.php?sel=draft&amp;page=1"><?php echo L_ALL_DRAFTS ?></a><?php echo '&nbsp;('.$plxAdmin->nbArticles('draft', $userId).')' ?></li>
            <li><a <?php echo ($_SESSION['sel_get']=='mod')?'class="selected" ':'' ?>href="index.php?sel=mod&amp;page=1"><?php echo L_ALL_AWAITING_MODERATION ?></a><?php echo '&nbsp;('.$plxAdmin->nbArticles('all', $userId, '_').')' ?></li>
        </ul>
        <?php
        echo plxToken::getTokenPostMethod();
        if($_SESSION['profil']<=PROFIL_MODERATOR) {
            plxUtils::printSelect('selection', array( '' => L_FOR_SELECTION, 'delete' => L_DELETE), '', false, false, 'id_selection');
            echo '<input name="sel" type="submit" value="'.L_OK.'" onclick="return confirmAction(this.form, \'id_selection\', \'delete\', \'idArt[]\', \''.L_CONFIRM_DELETE.'\')" /><span class="sml-hide med-show">&nbsp;&nbsp;&nbsp;</span>';
        }
        ?>
        <?php plxUtils::printInput('page',1,'hidden'); ?>
    </div>
    
    <div class="grid">
        <div class="col sml-6">
            <?php plxUtils::printSelect('sel_cat', $aFilterCat, $_SESSION['sel_cat']) ?>
            <input class="<?php echo $_SESSION['sel_cat']!='all'?' select':'' ?>" type="submit" value="<?php echo L_ARTICLES_FILTER_BUTTON ?>" />
        </div>
        <div class="col sml-6 text-right">
            <input id="index-search" placeholder="<?php echo L_SEARCH_PLACEHOLDER ?>" type="text" name="artTitle" value="<?php echo plxUtils::strCheck($_GET['artTitle']) ?>" />
            <input class="<?php echo (!empty($_GET['artTitle'])?' select':'') ?>" type="submit" value="<?php echo L_SEARCH ?>" />
        </div>
    </div>
    
    <div class="scrollable-table">
    

    Ici, entre les deux, se trouve le tableau modifiable que tu veut modifié.

    </div>
    
    </form>
    
    <p id="pagination">
        <?php
        # Hook Plugins
        eval($plxAdmin->plxPlugins->callHook('AdminIndexPagination'));
        # Affichage de la pagination
        if($arts) { # Si on a des articles (hors page)
            # Calcul des pages
            $last_page = ceil($nbArtPagination/$plxAdmin->bypage);
            $stop = $plxAdmin->page + 2;
            if($stop<5) $stop=5;
            if($stop>$last_page) $stop=$last_page;
            $start = $stop - 4;
            if($start<1) $start=1;
            # Génération des URLs
            $artTitle = (!empty($_GET['artTitle'])?'&amp;artTitle='.urlencode($_GET['artTitle']):'');
            $p_url = 'index.php?page='.($plxAdmin->page-1).$artTitle;
            $n_url = 'index.php?page='.($plxAdmin->page+1).$artTitle;
            $l_url = 'index.php?page='.$last_page.$artTitle;
            $f_url = 'index.php?page=1'.$artTitle;
            # Affichage des liens de pagination
            printf('<span class="p_page">'.L_PAGINATION.'</span>', '<input style="text-align:right;width:35px" onchange="window.location.href=\'index.php?page=\'+this.value+\''.$artTitle.'\'" value="'.$plxAdmin->page.'" />', $last_page);
            $s = $plxAdmin->page>2 ? '<a href="'.$f_url.'" title="'.L_PAGINATION_FIRST_TITLE.'">&laquo;</a>' : '&laquo;';
            echo '<span class="p_first">'.$s.'</span>';
            $s = $plxAdmin->page>1 ? '<a href="'.$p_url.'" title="'.L_PAGINATION_PREVIOUS_TITLE.'">&lsaquo;</a>' : '&lsaquo;';
            echo '<span class="p_prev">'.$s.'</span>';
            for($i=$start;$i<=$stop;$i++) {
                $s = $i==$plxAdmin->page ? $i : '<a href="'.('index.php?page='.$i.$artTitle).'" title="'.$i.'">'.$i.'</a>';
                echo '<span class="p_current">'.$s.'</span>';
            }
            $s = $plxAdmin->page<$last_page ? '<a href="'.$n_url.'" title="'.L_PAGINATION_NEXT_TITLE.'">&rsaquo;</a>' : '&rsaquo;';
            echo '<span class="p_next">'.$s.'</span>';
            $s = $plxAdmin->page<($last_page-1) ? '<a href="'.$l_url.'" title="'.L_PAGINATION_LAST_TITLE.'">&raquo;</a>' : '&raquo;';
            echo '<span class="p_last">'.$s.'</span>';
        }
        ?>
    </p>
    
    <?php
    # Hook Plugins
    eval($plxAdmin->plxPlugins->callHook('AdminIndexFoot'));
    # On inclut le footer
    include PLX_ROOT.'core/admin/foot.php';
    exit;
    ?>
    

    Cdt

    ♣♣♣♣ <°(((((-{ ~ Mon site avec PluXml: https://re7net.com | Mes plugins : https://github.com/gcyrillus PluXml 5.8.7 sur free ? oui c'est possible : http://gccyrillus.free.fr/plxSingle/PluXml/ }-))))°> ♣♣♣♣

  • krockroc Member

    Eheh, merci beaucoup :) Je regarde ça ce soir :)

  • krockroc Member

    Merci beaucoup, ça fonctionne bien :)

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