Plugin Content

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

  • Plugin Content

    Bonjour,

    Je me suis mis récemment à Joomla 1.5, et je souhaite installer des plugins permettant certains raccourcis html dans l'éditeur.
    En essayant de m'inspirer des tutoriels suivants :
    http://docs.joomla.org/How_to_create_a_content_plugin
    http://developer.joomla.org/tutorial...la-plugin.html , j'en suis arrivé là :

    Code PHP:
    <?php
    defined
    '_JEXEC' ) or die( 'Restricted access' );

    jimport'joomla.plugin.plugin' );

    $mainframe->registerEvent'onPrepareContent''plgContentMien' );

    function 
    plgContentMien$published, &$row, &$params$page=) {
        global 
    $mosConfig_absolute_path;

        
    // define the regular expression for the bot
        
    $regex "#{RACCOURCIS}(.*?){/RACCOURCIS}#s";

        if ( !
    $published ) {
            
    $row->text preg_replace$regex''$row->text );
            return;
        }


        
    // Remplacement
        
    $row->text preg_replace_callback$regex'plgContentMien_replacer'$row->text );

        return 
    true;
    }

    function 
    plgContentMien_replacer ( &$matches ) {
        global 
    $mosConfig_absolute_path$mosConfig_live_site;
        
    $text 'CODE HTML DE REMPLACEMENT' ;
        return 
    $text;
    }
    ?>
    Evidemment, ça ne marche pas , et j'imagine que le problème se situe au niveau du
    Code PHP:
    (!published
    , ou des variables globales...

    Une idée ?

    Merci d'avance
    Dernière édition par eaque à 28/07/2008, 11h57

  • #2
    Il semblerait que le problème soit à moitié résolu, en enlevant une partie du code.
    C'était bien la variable
    Code PHP:
    $published 
    qui posait problème :

    Code PHP:
    <?php
    defined
    '_JEXEC' ) or die( 'Restricted access' );

    jimport'joomla.plugin.plugin' );

    $mainframe->registerEvent'onPrepareContent''plgContentMien' );

    function 
    plgContentMien$published, &$row, &$params$page=) {
        global 
    $mosConfig_absolute_path;

        
    // define the regular expression for the bot
        
    $regex "#{RACCOURCIS}(.*?){/RACCOURCIS}#s";

        
    // Remplacement
        
    $row->text preg_replace_callback$regex'plgContentMien_replacer'$row->text );

        return 
    true;
    }

    function 
    plgContentMien_replacer ( &$matches ) {
        global 
    $mosConfig_absolute_path$mosConfig_live_site;
        
    $text 'CODE HTML DE REMPLACEMENT' ;
        return 
    $text;
    }
    ?>
    Du coup il n'y a pas de traitement si il l'article n'est pas publié...
    Pour poser la question simplement, quelle variable remplace
    Code PHP:
    $published 
    ?

    Merci

    Commentaire


    • #3
      Peut-être plutôt quelque chose comme ça?

      Code PHP:
      <?php
      defined
      '_JEXEC' ) or die( 'Restricted access' );

      jimport'joomla.plugin.plugin' );

      $mainframe->registerEvent'onPrepareContent''plgContentMien' );

      function 
      plgContentMien( &$row, &$params$page=) {
          
      $db =& JFactory::getDBO();

      // simple performance check to determine whether bot should process further
          
      if ( JString::strpos$row->text'wrap' ) === false ) {
              return 
      true;
          }    

          
      // Get plugin info
          
      $plugin =& JPluginHelper::getPlugin('content''mien');
          
      $regex "#{RACCOURCIS}(.*?){/RACCOURCIS}#s";
          
      $pluginParams = new JParameter$plugin->params );
          
      // check whether plugin has been unpublished
          
      if ( !$pluginParams->get'enabled') ) {
          
      $row->text preg_replace$regex''$row->text );
          return 
      true;
           }

          
      // Remplacement
          
      $row->text preg_replace_callback$regex'plgContentMien_replacer'$row->text );

          return 
      true;
      }

      function 
      plgContentMien_replacer ( &$matches ) {
         global 
      $mainframe;

         
      $text=matches[1];
         if 
      $text=1;{
          
      $text 'CODE HTML DE REMPLACEMENT 1' ;}
         else if 
      $text=2;{
          
      $text 'CODE HTML DE REMPLACEMENT 2' ;}
         else if 
      $text=3;{
      etc.

          return 
      $text;
      }
      ?>
      Jean-Marie Simonet / infograf768
      Joomla co-fondateur. Joomla Production Working Group.
      Sauf demande explicite de ma part, merci de ne pas utiliser de Message Privé pour poser des questions. Le forum est là pour ça.

      Commentaire


      • #4
        Bonjour et merci de la proposition

        Désolé de la réponse tardive, vacances obligent...

        En essayant le code ci-dessus, en mode debug je n'obtient aucune erreur, donc il est propre.
        Par contre, c'est comme si il le plugin n'était pas lancé : je n'obtiens aucun résultat. J'ai bien tenté de mettre des echo pour connaitre les valeurs des variables intermédiaires, mais rien, d'où ma conclusion précédente.

        Merci encore

        Commentaire


        • #5
          J'avais fait ça vite...

          Voici un code qui fonctionne.
          Tapez {raccourcis}1{/raccourcis} dans le texte de l'article.
          Code PHP:
          <?php
          defined
          '_JEXEC' ) or die( 'Restricted access' );

          jimport'joomla.plugin.plugin' );

          $mainframe->registerEvent'onPrepareContent''plgContentMien' );

          function 
          plgContentMien( &$row, &$params$page=) {
              
          $db =& JFactory::getDBO();

          // simple performance check to determine whether bot should process further
              
          if ( JString::strpos$row->text'raccourcis' ) === false ) {
                  return 
          true;
              }    

              
          // Get plugin info
              
          $plugin =& JPluginHelper::getPlugin('content''mien');
              
          $regex "#{raccourcis}(.*?){/raccourcis}#s";
              
          $pluginParams = new JParameter$plugin->params );
              
          // check whether plugin has been unpublished
              
          if ( !$pluginParams->get'enabled') ) {
              
          $row->text preg_replace$regex''$row->text );
              return 
          true;
               }

              
          // Remplacement
              
          $row->text preg_replace_callback$regex'plgContentMien_replacer'$row->text );

              return 
          true;
          }

          function 
          plgContentMien_replacer ( &$matches ) {
             global 
          $mainframe;

             
          $text=$matches[1];
             if (
          $text=1){
            
              
          $text '<strong>CODE HTML DE REMPLACEMENT 1</strong>' ;
              }
             else if (
          $text=2) {
              
          $text 'CODE HTML DE REMPLACEMENT 2' ;}
             

              return 
          $text;
          }
          ?>
          Jean-Marie Simonet / infograf768
          Joomla co-fondateur. Joomla Production Working Group.
          Sauf demande explicite de ma part, merci de ne pas utiliser de Message Privé pour poser des questions. Le forum est là pour ça.

          Commentaire


          • #6
            Oui effectivement, cette fois-ci cela fonctionne, merci beaucoup

            En mode debug, j'ai un message :

            Code PHP:
            NoticeTrying to get property of non-object 
            qui concerne la ligne :

            Code PHP:
            $pluginParams = new JParameter$plugin->params ); 
            mais apparemment cela ne gêne pas l'exécution du plugin.

            Commentaire


            • #7
              Pas de notice ici, mais je suis en J! 1.5.5
              Jean-Marie Simonet / infograf768
              Joomla co-fondateur. Joomla Production Working Group.
              Sauf demande explicite de ma part, merci de ne pas utiliser de Message Privé pour poser des questions. Le forum est là pour ça.

              Commentaire


              • #8
                Ok, merci

                Commentaire


                • #9
                  Re : Plugin Content

                  Salut,

                  j'ai suivi votre discutions avec attention, je serai vivement intérressé par l'équivalent pour Joomla!1.6

                  Merci d'avance.

                  Commentaire

                  Annonce

                  Réduire
                  1 sur 2 < >

                  C'est [Réglé] et on n'en parle plus ?

                  A quoi ça sert ?
                  La mention [Réglé] permet aux visiteurs d'identifier rapidement les messages qui ont trouvé une solution.

                  Merci donc d'utiliser cette fonctionnalité afin de faciliter la navigation et la recherche d'informations de tous sur le forum.

                  Si vous deviez oublier de porter cette mention, nous nous permettrons de le faire à votre place... mais seulement une fois
                  Comment ajouter la mention [Réglé] à votre discussion ?
                  1 - Aller sur votre discussion et éditer votre premier message :


                  2 - Cliquer sur la liste déroulante Préfixe.

                  3 - Choisir le préfixe [Réglé].


                  4 - Et voilà… votre discussion est désormais identifiée comme réglée.

                  2 sur 2 < >

                  Assistance au forum - Outil de publication d'infos de votre site

                  Compatibilité: PHP 4.1,PHP4, 5, 6DEV MySQL 3.2 - 5.5 MySQLi from 4.1 ( @ >=PHP 4.4.9)

                  Support Version de Joomla! : | J!3.0 | J!2.5.xx | J!1.7.xx | J!1.6.xx | J1.5.xx | J!1.0.xx |

                  Version française (FR) D'autres versions sont disponibles depuis la version originale de FPA

                  UTILISER À VOS PROPRES RISQUES :
                  L'exactitude et l'exhaustivité de ce script ainsi que la documentation ne sont pas garanties et aucune responsabilité ne sera acceptée pour tout dommage, questions ou confusion provoquée par l'utilisation de ce script.

                  Problèmes connus :
                  FPA n'est actuellement pas compatible avec des sites Joomla qui ont eu leur fichier configuration.php déplacé en dehors du répertoire public_html.

                  Installation :

                  1. Téléchargez l'archive souhaitée : http://afuj.github.io/FPA/

                  Archive zip : https://github.com/AFUJ/FPA/zipball/master

                  2. Décompressez le fichier de package téléchargé sur votre propre ordinateur (à l'aide de WinZip ou d'un outil de décompression natif).

                  3. Lisez le fichier LISEZMOI inclus pour toutes les notes de versions spécifiques.

                  4. LIRE le fichier de documentation inclus pour obtenir des instructions d'utilisation détaillées.

                  5. Téléchargez le script fpa-fr.php à la racine de votre site Joomla!. C'est l'endroit que vous avez installé Joomla et ce n'est pas la racine principale de votre serveur. Voir les exemples ci-dessous.

                  6. Exécutez le script via votre navigateur en tapant: http:// www. votresite .com/ fpa-fr.php
                  et remplacer www. votresite .com par votre nom de domaine


                  Exemples:
                  Joomla! est installé dans votre répertoire web et vous avez installé la version française du fichier FPA:
                  Télécharger le script fpa-fr.php dans: /public_html/
                  Pour executer le script: http://www..com/fpa-fr.php

                  Joomla! est installé dans un sous-répertoire nommé "cms" et vous avez installé la version française du fichier FPA:
                  Télécharger le script fpa-fr.php dans: /public_html/cms/
                  Pour executer le script: http://www..com/cms/fpa-fr.php

                  En raison de la nature très sensible de l'information affichée par le script FPA, il doit être retiré immédiatement du serveur après son utilisation.

                  Pour supprimer le script de votre site, utilisez le lien de script de suppression fourni en haut de la page du script. Si le lien de suppression échoue pour supprimer le script, utilisez votre programme FTP pour le supprimer manuellement ou changer le nom une fois que le script a généré les données du site et le message publié sur le forum. Si le script est toujours présent sur le site, il peut être utilisé pour recueillir suffisamment d'informations pour pirater votre site. Le retrait du script empêche des étrangers de l'utiliser pour jeter un oeil à la façon dont votre site est structuré et de détecter les défauts qui peuvent être utilisé à vos dépends.
                  Voir plus
                  Voir moins
                  Travaille ...
                  X