2011-09-19 50 views
4

我尝试将一个静态页面作为prestashop中的主页。我能想到的唯一方法就是创建一个新页面(即shop.php),然后将目前在主页上挂钩的模型挂接到新的shop.php。如何将模块挂接到prestashop中的新页面?

我试图按照这个http://alvinjiang.blogspot.com/2011/01/prestashop-tips-how-to-create-complete.html创建一个新页面,它确实工作到显示静态文本的地步,例如“hello world” - 但我不知道要将homefeatured模块(例如)挂接到它。

你能以任何方式帮助吗?

感谢

回答

5

挂钩一个模块到一个新的页面,您可以使遵循此步骤:

在我的例子钩被评为

创建一个新的钩

INSERT INTO `ps_hook` (`id_hook`, `name`, `title`, `description`, `position`) VALUES ("", "topSearch", "Top search block", "Description top search block", "1") 

允许你的模块这种新的钩链接

您只需编辑您的module.php增加一个与钩,例如命名函数:

public function hookTopSearch($params){ 
    global $smarty; 
    $smarty->assign('test', 'it works !'); 
    return $this->display(__FILE__, 'viewfile.tpl'); 
} 

然后链接对应模块,以新的钩

后台办公室 - >模块 - >位置 - >嫁接模块

执行你的钩子在.tpl文件

您已创建一个新的page.php,它包含include(dirname(_ FILE _)。'/ header.php');因此通过创建一个名为FrontController.php覆盖/ classes/来覆盖您的FrontController.php。

那么你的钩子添加到displayHeader功能

<?php 
    class FrontController extends FrontControllerCore{ 
    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'), 
     'exclude_page' => array('category','manufacturer') 
    )); 
    self::$smarty->assign(array(
     'HOOK_HEADER' => Module::hookExec('header'), 
     'HOOK_TOP' => Module::hookExec('top'), 
     'HOOK_TOP_SEARCH' => Module::hookExec('topSearch'), 
     'HOOK_BUTTON_BRAND' => Module::hookExec('buttonBrand'), 
     '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'); 
    } 
    } 

要完成对应Smarty的VAR添加到您的模板文件

{$HOOK_TOP_SEARCH} 
+0

,谢谢,我会做了一下后,当我得到的时间,但只是一个简单的问题:我将能够添加{$ HOOK_TOP_SEARCH}是我创建的页面使用我上面链接的教程? – aurel

+0

是的,因为你包含header.php和header.php,所以调用函数displayHeader(),以便你可以在你想要的地方使用你的钩子:) – Awea

相关问题