Customizer les tags {value}, Template Engine d'oscommerce 3. |
Bienvenue invité ( Connexion | Inscription )
Customizer les tags {value}, Template Engine d'oscommerce 3. |
18 Aug 2012, 14:54
Message
#1
|
|
Ceinture marron OSC Groupe : Membres Messages : 1665 Inscrit : 3-June 09 Membre no 25501 |
le code tag value est défini comme tel dans la classe Value:
-1 va chercher la valeur dans Application/Module/Template/Value/ {lavaleur} /Controller si elle existe : cool, on peut définir dans nos applications nos propres tags -2 va chercher la valeur dans Module/Template/Value/ {lavaleur} / Controller : ce sont tout les tags natifs. Bien, et si je veux créer mes propres tags value ou modifier ceux du core ? Bah c'est pas prévu ... Un exemple typique illustrant la chose : le menu du back-office (qui n'est pas une application, donc soit on modifie la classe apps_link , soit on code la sienne). Seulement, il existe une règle immuable : interdiction de modifier/d'ajouter des fichiers dans le Core. Alors dans ce cas, la classe \osCommerce\OM\Core\Template\Tag\value.php aurait dû l'intégrer ainsi : Code <?php /** * osCommerce Online Merchant * * @copyright Copyright (c) 2012 osCommerce; http://www.oscommerce.com * @copyright Copyright (c) 2012 FoxP2; * @license BSD License; http://www.oscommerce.com/bsdlicense.txt */ namespace osCommerce\OM\Core\Template\Tag; use osCommerce\OM\Core\OSCOM; use osCommerce\OM\Core\Registry; class value extends \osCommerce\OM\Core\Template\TagAbstract { static protected $_parse_result = false; static public function execute($string) { $OSCOM_Template = Registry::get('Template'); if ( !$OSCOM_Template->valueExists($string) ) { if ( class_exists('osCommerce\\OM\\Core\\Site\\' . OSCOM::getSite() . '\\Application\\' . OSCOM::getSiteApplication() . '\\Module\\Template\\Value\\' . $string . '\\Controller') && is_subclass_of('osCommerce\\OM\\Core\\Site\\' . OSCOM::getSite() . '\\Application\\' . OSCOM::getSiteApplication() . '\\Module\\Template\\Value\\' . $string . '\\Controller', 'osCommerce\\OM\\Core\\Template\\ValueAbstract') ) { call_user_func(array('osCommerce\\OM\\Core\\Site\\' . OSCOM::getSite() . '\\Application\\' . OSCOM::getSiteApplication() . '\\Module\\Template\\Value\\' . $string . '\\Controller', 'initialize')); } elseif ( class_exists('osCommerce\\OM\\Core\\Site\\' . OSCOM::getSite() . '\\Module\\Template\\Value\\' . $string . '\\Controller') && is_subclass_of('osCommerce\\OM\\Core\\Site\\' . OSCOM::getSite() . '\\Module\\Template\\Value\\' . $string . '\\Controller', 'osCommerce\\OM\\Core\\Template\\ValueAbstract') ) { call_user_func(array('osCommerce\\OM\\Core\\Site\\' . OSCOM::getSite() . '\\Module\\Template\\Value\\' . $string . '\\Controller', 'initialize')); // foxp2 : override value tag or call new tag in custom directory } elseif ( class_exists('osCommerce\\OM\\Custom\\Site\\' . OSCOM::getSite() . '\\Module\\Template\\Value\\' . $string . '\\Controller') && is_subclass_of('osCommerce\\OM\\Custom\\Site\\' . OSCOM::getSite() . '\\Module\\Template\\Value\\' . $string . '\\Controller', 'osCommerce\\OM\\Core\\Template\\ValueAbstract') ){ call_user_func(array('osCommerce\\OM\\Custom\\Site\\' . OSCOM::getSite() . '\\Module\\Template\\Value\\' . $string . '\\Controller', 'initialize')); } } return $OSCOM_Template->getValue($string); } } ?> c'est la dernière conditionnelle elseif qui ajoute cette possibilité. Ensuite y'a plus qu'a coder ses propres tags. C'est ainsi qu'un menu pas pratique : devient : (le ruban Application n'est qu'un nouveau tag enregistré dans le dossier \osCommerce\OM\Custom\Site\Admin\Module\Template\Value) A vous de faire les vôtres. |
|
Version bas débit | Nous sommes le : 30th March 2024 - 08:04 |
Ce site est déclaré auprès de la commision Nationale de l'Informatique et des Libertés (déclaration n°: 1043896) |