Remplacer une partie d'un article avec onContentPrepare ?

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • [RÉGLÉ] Remplacer une partie d'un article avec onContentPrepare ?

    Bonjour,

    je souhaite créer un plugin qui permettra aux auteurs en front de coller des balises comme ceci {docs cat-1}, ce qui affichera une liste des documents de la catégorie 1 de mon composant perso de gestion de documents.

    Voici le code de mon plugin :
    Code PHP:
    <?php
    defined
    ('_JEXEC') or die;

    class 
    plgContentGixdocs extends JPlugin
    {
      function 
    onContentPrepare($context, &$article, &$params$page 0){

        if(
    preg_match('#{docs cat-([0-9]+)}#'$article->introtext$match_intro)){

          
    $article->introtext preg_replace('#{docs cat-[0-9]+}#''documents'$article->introtext);

        }

    }

    }
    Bien sur avant de créer le html de la liste de document j'ai juste mis le mot "documents" pour tester l'affichage, mais voilà, si je fais echo $article->introtext, le remplacement est bien fait, mais tout s'affiche en haut de page, et l'article en dessous reste intact.

    Tous les exemples que j'ai vu n'en mettent pas plus, pourtant moi, ca ne fonctionne pas, j'ai même essayé avec ob-start(), etc,
    J'ai aussi testé avec onContentBeforeDisplay, ca s'affiche bien juste avant l'article cette fois, mais l'article initial reste présent, donc je bloque, si quelqu'un a une idée ca serait formidable !

    Merci beaucoup d'avance

  • #2
    Salut

    Code PHP:
    if(preg_match('#{docs cat-([0-9]+)}#'$article->introtext$match_intro)) 
    es tu sur que la fonction preg_match return "true" pour faire l'interieur de ton if?

    ++
    Wis

    Commentaire


    • #3
      Salut.

      +1 avec Wismer , il faut tester ta condition.

      Met ton mot $article->introtext = "document" après le if pour tester ton masque.

      Voir : https://www.php.net/manual/fr/refere....modifiers.php
      Dernière édition par roland_d_alsace à 21/10/2020, 20h28
      A tous les utilisateurs de Joomla du très Grand Est de la France et du Jura suisse
      Rejoignez le Joomla Users Groupe Alsace...
      roland_d_alsace va-t-il devenir roland_du_grand_est ?

      Commentaire


      • #4
        Oups, j'avais mal lu ton explication.

        Quand le plugin reçoit l'information,le rendu de contenu (le code html à publier) est déjà préparé dans la propriétés text.

        Il faut donc faire ton traitement sur $article->text
        Dernière édition par roland_d_alsace à 21/10/2020, 20h31
        Minie aime ceci.
        A tous les utilisateurs de Joomla du très Grand Est de la France et du Jura suisse
        Rejoignez le Joomla Users Groupe Alsace...
        roland_d_alsace va-t-il devenir roland_du_grand_est ?

        Commentaire


        • #5
          Oh super !

          Merci beaucoup c'est génial !

          En effet je suis passée à coté d'un indice énorme sur la doc (https://docs.joomla.org/Plugin/Events/Content) qui dit :
          Paramètres
          &article Une référence à l'article qui est rendu par la vue (Par exemple: le texte d'un article com_content peut être trouvé avec $ article-> text).
          Je viens donc d'aller voir le fichier components/com_content/views/article/view.html.php, et en effet j'y ai trouvé à partir de la ligne 170 la définition de la propriété $article->text.

          Merci beaucoup

          Commentaire

          Annonce

          Réduire
          Aucune annonce pour le moment.

          Partenaire de l'association

          Réduire

          Hébergeur Web PlanetHoster
          Travaille ...
          X