2016-01-19 129 views
1

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

+0

如果你想“自动添加”,你需要选择一个现有的HOOKS,并为其准备... :-)例如: 'displayProductButtons',真的只是希望主题开发人员聪明,不要删除默认钩子:-) –

回答

0

如果你做了一个自定义的hook你需要的地方手动插入其执行:为.tpl或进入overrided ProductController.php(如果它是一个行动挂钩)。 Prestashop不能自动执行它,因为它不知道你想在哪里执行它。

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

displayLeftColumnProduct 
displayRightColumnProduct 
displayProductTab 
displayProductTabContent 
displayFooterProduct 
displayProductButtons 
displayProductPriceBlock 
actionProductOutOfStock 

您可以使用这些挂钩之一,您的内容与css位置(或javascript - 到页面的任何部分)。

Product page hooks.

+0

在我的情况下,现在我必须在产品信息框中显示内容(价格,标题,社交按钮等。 )被显示)。这部分没有挂钩。我怎样才能把我的钩子放在那里? – Ervin

1

如果你做任何自定义挂钩,那么你必须使其可执行first.Prestashop不能为产品页面上显示的一些数据执行自定义挂钩automatically.But您可以使用预定义的Prestashop hooks.Some是以下

displayProductButtons 
displayProductTab 

要使用这些挂钩,首先你必须在注册钩安装功能一样

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

      } 
     } 

的d在同一文件中,你必须做出这样

 public function hookDisplayProductButtons($params) 
     { 


     } 

功能现在该功能可以在指定您的TPL文件,你要访问一些Smarty的变量或节目喜欢

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

现在您可以访问的tpl文件

0

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

请按照下列步骤操作:

  1. 要执行你的行动任何你添加新的自定义hook代码。
  2. 然后,您可以在安装模块时将新的自定义挂接条目插入到数据库中。
  3. 现在,您的钩子将根据您的需要执行。
  4. 在卸载模块时删除与数据库相同的钩子条目,以便卸载模块后无法执行挂钩。

我不确定,是否有其他解决方案可以满足您在prestashop中的需求?

相关问题