如何在prestashop中将模块插入产品页面

时间:2016-01-19 08:15:22

标签: hook prestashop prestashop-1.6

我在Prestashop 1.6中创建了一个新模块,它在信息框的产品页面上显示了一些数据。我在模块的install方法中创建了一个新的钩子,如下所示:$this->registerHook('combinationDescription')并创建了hookDisplayCombinationDescription函数,用于分配一些智能变量并使用tpl文件显示它们。 安装我的模块后,钩子被注册到数据库中,因此它可以使用。 我可以手动将代码插入到product.tpl文件中,就像:{hook h="hookDisplayCombinationDescription"}一样,我认为它正常工作,但是我希望在安装模块时自动执行此步骤。我怎样才能做到这一点? 我的猜测是从模块的安装方法编辑product.tpl文件,但这对我来说有点脏。还有其他一些不错的方法吗?

3 个答案:

答案 0 :(得分:0)

如果您创建了自定义hook,则需要手动将其执行插入:.tpl或覆盖ProductController.php(如果它是动作挂钩)。 Prestashop无法自动执行它,因为它不知道你想在哪里执行它。

但您可以使用默认的Prestashop 1.6挂钩,让您在安装模块后将代码的一部分挂钩并准备就绪。对于产品页面是:

displayLeftColumnProduct
displayRightColumnProduct
displayProductTab
displayProductTabContent
displayFooterProduct
displayProductButtons
displayProductPriceBlock
actionProductOutOfStock

您可以使用其中一个钩子,并使用css(或javascript - 将内容放置到页面的任何部分。

Product page hooks.

答案 1 :(得分:0)

如果你制作任何自定义钩子,那么你必须首先使它成为可执行文件.Prestashop不能自动执行自定义钩子。但是为了在产品页面上显示一些数据,你可以使用预定义的prestashop钩子。有些人正在关注

displayProductButtons
displayProductTab 

要使用这些钩子,首先必须在安装功能中注册钩子,如

     public function install()
        {
           if (!parent::install() || !$this->registerHook('displayProductButtons')){

           }
        }

并且在同一个文件中你必须创建一个像

这样的函数
     public function hookDisplayProductButtons($params)
        {


        }

现在,在该功能中,您可以指定一些您想要访问或显示在tpl文件中的智能变量,如

    public function hookDisplayProductButtons($params)
        {
             $this->smarty->assign(array(
                    'product_name' => 'abc'
                ));
        }

现在在您的tpl文件中,您可以访问

答案 2 :(得分:0)

如果要添加新的自定义挂钩并在特定模块处于活动状态或已安装时执行它们。

请按照以下步骤操作:

  1. 在您要执行操作的任何位置添加新的自定义挂钩代码。
  2. 然后,您可以在安装模块时将该新自定义挂钩的条目插入到数据库中。
  3. 现在,您的钩子将根据您的需要执行。
  4. 在卸载模块时从数据库中删除相同的挂钩条目,以便在卸载模块后无法执行挂钩。
  5. 我不确定,是否有其他解决方案可以满足您在prestashop的需求?

相关问题