FORUM SPX

Aide au projet spx : plugins pour pluxml - Forums pluxml

Vous n'êtes pas identifié(e).

#1 2014-06-13 12:00:52

je-evrard
Responsable du projet
Lieu : Pau
Inscription : 2014-01-24
Messages : 206
Site Web

[plxplugin] appel plugin depuis une page

Je me permets de déposer le premier shortcode (créé par francis)

Ce shortcode permet d'appeler n'importe quel plugin actif à l'intérieur d'une page, en écrivant un code du type :

[== Indéfini ==]
[plxplugin plugin="nom_du_plugin" param1="..." param2="..." param3="..."]

Code a insérer dans config.php du thème :

[== PHP ==]
<?php


/* ---------------------------- FONCTION SHORTCODE plxplugin ---------------------------------*/
        
// Ce shortcode permet d'appeler n'importe quel plugin actif à l'intérieur d'une page,
// en écrivant un code du type :
//                     [plxplugin plugin="nom_du_plugin" param1="..." param2="..." param3="..."]
//
// Si le plugin affiche un contenu avec echo, celui-ci est récupéré et retourné par le shortcode
// Sinon, si le plugin renvoie une valeur, celle-ci est retournée directement
//      => pour différencier ce dernier cas (moins courant), écrire plugin="val-nomduplugin" au lieu de plugin="nomduplugin"
function plxplugin_func($tab_atts) {
  $atts = shortcode_atts(array("plugin" =>"", "txtdebut"=>"", "txtfin"=>""), $tab_atts);
  extract($atts, EXTR_OVERWRITE);
  
  unset($tab_atts["plugin"], $tab_atts["txtdebut"], $tab_atts["txtfin"]); // attributs inutiles à transmettre au plugin
  $plxShow = plxShow::getInstance(); // pour appeler les fonctions de la classe plxShow
  
  // Si le nom du plugin est précédé de "val-", c'est qu'il renvoie une valeur qui sera retournée directement
  // Sinon, le plugin affiche lui-même le contenu, qu'il faut intercepter pour pouvoir la retourner
  if (substr($plugin, 0, 4)=="val-") {
        $plugin_retourne_valeur = true;
        $plugin = substr($plugin, 4); // suppression des 4 premiers caractères "val-" qui précèdent le nom du plugin
  }
  else { $plugin_retourne_valeur = false; }
  
  // Vérification de l'existence du plugin, avant de l'appeler, pour éviter tout message d'erreur 
  if ( ! empty($plxShow->plxMotor->plxPlugins->aPlugins[$plugin]) ) {
      // Appel de la fonction du plugin par son nom $plugin avec transfert du tableau de paramètres $tab_atts
      if ($plugin_retourne_valeur) { // Si le plugin renvoie le contenu sous forme de variable
          $resultplugin = $plxShow->plxMotor->plxPlugins->aPlugins[$plugin]->$plugin($tab_atts);
          return $txtdebut . $resultplugin . $txtfin;
      }
      else { // Si le plugin affiche directement le contenu avec "echo"
          ob_start();
          $plxShow->plxMotor->plxPlugins->aPlugins[$plugin]->$plugin($tab_atts);
          $resultplugin = ob_get_clean();
          return $txtdebut . $resultplugin . $txtfin;
      }
  }
  else { return ""; } // Fin du if ... else ... testant l'existence ou non du plugin

}

add_shortcode( 'plxplugin', 'plxplugin_func' );

/*
Exemple d'utilisation :
          [plxplugin plugin="monplugin" param1="..." param2="..."]
Les noms des paramètres param1, param2, ... sont à remplacer par ceux utlisés dans le plugin.

Il est possible de fournir un texte à afficher, avant et après : paramètres txtdebut="..." et txtfin="..."

Si le plugin renvoie un contenu au lieu de l'afficher, il est possible d'afficher ce contenu avec echo,
en ajoutant "echo-" avant le nom du plugin, comme par exemple pour le plugin "test" :
          [plxplugin plugin="echo-test" param1="..." param2="..."]
/* -----------------------------------------------------------------------------------------------*/


?>

Pour le tester depuis n'importe quelle page :

Exemple d'utilisation :

[== Indéfini ==]
[plxplugin plugin="monplugin" param1="..." param2="..."]

Les noms des paramètres param1, param2, ... sont à remplacer par ceux utlisés dans le plugin.

Il est possible de fournir un texte à afficher, avant et après : paramètres txtdebut="..." et txtfin="..."

Si le plugin renvoie un contenu au lieu de l'afficher, il est possible d'afficher ce contenu avec echo,
en ajoutant "val-" avant le nom du plugin, comme par exemple pour le plugin "test" :

[plxplugin plugin="val-test" param1="..." param2="..."]


Petit à petit l'oiseau fait son nid.
creation de site web : http://secretsitebox.fr/ - création artistique : http://art.je-evrard.net

Hors ligne

Pied de page des forums