如何在prestashop中将模块挂钩到新页面?

时间:2011-09-19 07:38:31

标签: prestashop

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

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

你能以任何方式提供帮助吗?

由于

2 个答案:

答案 0 :(得分:5)

要将模块挂钩到新页面,您可以按照以下步骤操作:

在我的示例中,钩子被命名为 topSearch

创建一个新的

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}

答案 1 :(得分:2)

您可以在此处阅读如何在某个地方挂钩模块以及如何创建新挂钩。请注意,应该为该特定挂钩安装模块。

http://www.programmingtunes.com/creating-new-prestashop-hook/