osCommerce France : Accueil Forum Portail osCommerce France Réponses aux questions Foire aux contributions

Bienvenue invité ( Connexion | Inscription )

 
Reply to this topicStart new topic
> Customizer les tags {value}, Template Engine d'oscommerce 3.
FoxP2
posté 18 Aug 2012, 14:54
Message #1


Ceinture marron OSC
Icône de groupe

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 ... sad.gif

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.
Go to the top of the page
 

Reply to this topicStart new topic
1 utilisateur(s) sur ce sujet (1 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



RSS Version bas débit Nous sommes le : 28th March 2024 - 13:39
Ce site est déclaré auprès de la commision Nationale
de l'Informatique et des Libertés (déclaration n°: 1043896)