Smarty Forum Index Smarty
WARNING: All discussion is moving to https://reddit.com/r/smarty, please go there! This forum will be closing soon.

definir un nommage perso pour plugins

 
This forum is locked: you cannot post, reply to, or edit topics.   This topic is locked: you cannot edit posts or make replies.    Smarty Forum Index -> Language: French
View previous topic :: View next topic  
Author Message
gtraxx
Smarty Regular


Joined: 08 Jan 2008
Posts: 56

PostPosted: Fri Dec 11, 2009 9:18 pm    Post subject: definir un nommage perso pour plugins Reply with quote

Bonsoir, j'ai une question très particulière.
Je créer une série de plugin pour smarty 3, j'en ai une bonne trentaine Laughing .
MAis je souhaite pourvoir redéfinir le nom des fonctions (templates) plugins perso.
Comme vous le savez, un plugin de base se nomme:
Code:
function smarty_function_monplug

Je souhaite avoir un dossier perso avec des plugins pour smarty mais nommé à ma sauce du genre :
Code:
function machin_function_monplug

Est il possible de réaliser ce genre de chose sachant que je souhaite continuer à pouvoir définir des plugins de manière classique.
en bref j'ai un dossier contenant tous mes plugins avec la syntaxe par défaut et un autre pouvant contenir les personnalisés.
Back to top
View user's profile Send private message
Gowser
Smarty Pro


Joined: 19 Feb 2008
Posts: 104
Location: Nantes (France)

PostPosted: Sun Dec 13, 2009 10:38 am    Post subject: Reply with quote

Bonjour,

Il suffit d'autopsier le fichier Smarty.class.php, plus précisément la fonction loadPlugin :

Code:

public function loadPlugin($plugin_name)
{
   // if class exists, exit silently (already loaded)
   if (class_exists($plugin_name, false))
      return true;
   // if callable as function, exit silently (already loaded)
   if (is_callable($plugin_name))
      return true;
   // Plugin name is expected to be: Smarty_[Type]_[Name]
   $_plugin_name = strtolower($plugin_name);
   $_name_parts = explode('_', $_plugin_name, 3);
   // class name must have three parts to be valid plugin
   if (count($_name_parts) < 3 || $_name_parts[0] !== 'smarty') {
      throw new Exception("plugin {$plugin_name} is not a valid name format");
      return false;
   }
   // if type is "internal", get plugin from sysplugins
   if ($_name_parts[1] == 'internal') {
      if (file_exists(SMARTY_SYSPLUGINS_DIR . $_plugin_name . '.php')) {
         require_once(SMARTY_SYSPLUGINS_DIR . $_plugin_name . '.php');
         return true;
      } else {
         return false;
      }
   }
   // plugin filename is expected to be: [type].[name].php
   $_plugin_filename = "{$_name_parts[1]}.{$_name_parts[2]}.php";
   // loop through plugin dirs and find the plugin
   foreach((array)$this->plugins_dir as $_plugin_dir) {
      if (strpos('/\\', substr($_plugin_dir, -1)) === false) {
         $_plugin_dir .= DS;
      }

      if (file_exists($_plugin_dir . $_plugin_filename)) {
         require_once($_plugin_dir . $_plugin_filename);
         return true;
      }
   }
   // no plugin loaded
   return false;
}


On y voit dès le début qu'on a pas trop le choix :
Code:

// Plugin name is expected to be: Smarty_[Type]_[Name]
$_plugin_name = strtolower($plugin_name);
$_name_parts = explode('_', $_plugin_name, 3);
// class name must have three parts to be valid plugin
if (count($_name_parts) < 3 || $_name_parts[0] !== 'smarty') {
   throw new Exception("plugin {$plugin_name} is not a valid name format");
   return false;
}


Voilou, on a pas besoin d'épiloguer du coup

Cordialement Wink


Last edited by Gowser on Sun Dec 13, 2009 10:57 am; edited 1 time in total
Back to top
View user's profile Send private message Send e-mail
gtraxx
Smarty Regular


Joined: 08 Jan 2008
Posts: 56

PostPosted: Sun Dec 13, 2009 10:56 am    Post subject: Reply with quote

Merci,
et si je fais une extension de la class smarty en reprenant la fonction loadplugin et en y ajoutant ma propre fonction de nommage avec un dossier défini, ben j'ai une petite idée mais je ne sais pas si c'est possible.
En gros j'ajoute une fonction supplémentaire afin de charger les plugin qui on un nom comme monplug_function_...
Back to top
View user's profile Send private message
Display posts from previous:   
This forum is locked: you cannot post, reply to, or edit topics.   This topic is locked: you cannot edit posts or make replies.    Smarty Forum Index -> Language: French All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group
Protected by Anti-Spam ACP