Jump to content

Utilisation d'une surcharge de classe pour nouvelle variable smarty


Recommended Posts

Bonjour, je suis entrain de faire une class dans le dossier overide afin d'utiliser une variable smarty supplémentaire pour être appellé dans header.tpl
En gros je tente de redéfinir une partie de la class tools en ajoutant une nouvelle fonction mais sans toucher au core.
Donc j'ai créer un fichier CMSSeoController.php dans le dossier overide et j'ai placer :

<?php
class CMSSeoController extends FrontControllerCore{
   static function getMeta(){
           if ($id_cms = Tools::getValue('id_cms')){
               $row = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow('
               SELECT `meta_title`, `meta_description`, `meta_keywords`
               FROM `'._DB_PREFIX_.'cms_lang`
               WHERE id_lang = '.(int)($id_lang).' AND id_cms = '.(int)($id_cms));
               if ($row)
               {
                   $row['meta_keywords'] = $row['meta_keywords'].' - '.Configuration::get('PS_SHOP_NAME');
                   return $row['meta_keywords'];
               }
           }
   }
   public function process()
   {
       //parent::process();

       self::$smarty->assign('metas_cms_title',self::getMeta());
   }
}


J'ai donc ajouter dans head.tpl de mon template {$metas_cms_title} pour voir si sa fonctionne mais rien du tout.
Que doit on faire pour accéder à cette variable ?

EDIT :
J'ai également essayer avec une méthode plus direct en créant dans le dossier override un fichier FrontController.php avec la redéfinission de la fonction display Header en ajoutant ma variable juste pour tester mais rien ne se passe :

<?php
class FrontController extends FrontControllerCore{

   static function getMeta(){
           if ($id_cms = Tools::getValue('id_cms')){
               $row = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow('
               SELECT `meta_title`, `meta_description`, `meta_keywords`
               FROM `'._DB_PREFIX_.'cms_lang`
               WHERE id_lang = '.(int)($id_lang).' AND id_cms = '.(int)($id_cms));
               if ($row)
               {
                   $row['meta_keywords'] = $row['meta_keywords'].' - '.Configuration::get('PS_SHOP_NAME');
                   return $row['meta_keywords'];
               }
           }
   }
       //Copie de la fonction displayHeader située dans /classes/FrontController.php, mais avec le "surfooter" en +
       //C’est la copie qui prendra la main sur la fonction d’origine appelée dans /footer.php
   public function displayHeader(){
       global $css_files, $js_files;

       if (!self::$initialized)
           $this->init();

       // P3P Policies (http://www.w3.org/TR/2002/REC-P3P-20020416/#compact_policies)
       header('P3P: CP="IDC DSP COR CURa ADMa OUR IND PHY ONL COM STA"');

       /* Hooks are volontary out the initialize array (need those variables already assigned) */
       self::$smarty->assign(array(
           'time' => time(),
           'img_update_time' => Configuration::get('PS_IMG_UPDATE_TIME'),
           'static_token' => Tools::getToken(false),
           'token' => Tools::getToken(),
           'logo_image_width' => Configuration::get('SHOP_LOGO_WIDTH'),
           'logo_image_height' => Configuration::get('SHOP_LOGO_HEIGHT'),
           'priceDisplayPrecision' => _PS_PRICE_DISPLAY_PRECISION_,
           'content_only' => (int)Tools::getValue('content_only'),
           'metas_cms_title','test'
       ));
       self::$smarty->assign(array(
           'HOOK_HEADER' => Module::hookExec('header'),
           'HOOK_TOP' => Module::hookExec('top'),
           'HOOK_LEFT_COLUMN' => Module::hookExec('leftColumn')
       ));

       if ((Configuration::get('PS_CSS_THEME_CACHE') OR Configuration::get('PS_JS_THEME_CACHE')) AND is_writable(_PS_THEME_DIR_.'cache'))
       {
           // CSS compressor management
           if (Configuration::get('PS_CSS_THEME_CACHE'))
               Tools::cccCss();

           //JS compressor management
           if (Configuration::get('PS_JS_THEME_CACHE'))
               Tools::cccJs();
       }

       self::$smarty->assign('css_files', $css_files);
       self::$smarty->assign('js_files', array_unique($js_files));
       self::$smarty->display(_PS_THEME_DIR_.'header.tpl');
   }
}
?>

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...