我想更改现有的prestashop模块而不复制它并创建新模块。我知道可以重写prestashop中的.tpl文件,但是可以用php类做同样的事情吗?例如,我想更改blockcart,以便它可以挂在上面。由于原始版本没有那个钩子,我需要更改install()函数!我不能改变原始的源代码(这是不好的主意不是它...)文件我需要通过继承blockcart模块来重写install()函数。有没有可能这样做,我可以找到例子?Prestashop - 现有prestashop模块中的覆盖功能
8
A
回答
11
我使用我自己的覆盖到FrontController类,以允许在tpl文件中的任意点显示模块输出 - 这意味着模块不需要支持特定的钩子。它通过一个智者插件实现的,所以你可以例如使用:
{plugin module='blockcart' hook='rightColumn'}
以上将强制模块输出什么,如果钩到上面的标签插在右列会显示(可任何tpl文件中的任何地方)。您可以从右栏中“解除”模块,以便它仅显示您希望使用此技术的位置。我已经在生产网站上使用它,取得了巨大的成功。
有说明它是如何工作(与所需的代码)提供了一系列的文章:
3
在Prestashop 1.4中,您可以覆盖核心类和模块模板 今天,这是不可能覆盖模块的php文件,但我们正在努力。
1
由于的PrestaShop 1.6.0.11版本中,有一个新的功能,允许开发人员重写模块的实例类。
通过 扩展它要覆盖一个模块的实例类重写模块的实例类,你必须把它扩大,从而扩展的类相同的名称和增加覆盖后缀:
<?php
if (!defined('_PS_VERSION_'))
exit;
class BlockUserInfoOverride extends BlockUserInfo
{
public function hookDisplayNav($params)
{
return '<div class="header_user_info"><a>Test</a></div>';
// return $this->display(__FILE__, 'nav.tpl');
}
}
来源:http://build.prestashop.com/howtos/module/how-to-override-modules/
相关问题
- 1. Prestashop模块的CSS覆盖
- 2. Prestashop支付模块覆盖
- 3. 覆盖Prestashop模块更改不可见
- 4. Prestashop钩子和覆盖模块
- 5. 覆盖prestashop模块翻译缺失
- 6. Prestashop:覆盖核心模块类
- 7. PrestaShop - 覆盖模块CSS文件
- 8. 覆盖MyAccountController Prestashop
- 9. 覆盖的Prestashop 1.6.1.4
- 10. 使用prestashop模块中的现有类
- 11. 在prestashop中覆盖paypal模块模板文件
- 12. 模块prestashop
- 13. Prestashop模块API
- 14. 覆盖prestashop管理员TPL
- 15. Prestashop 1.6覆盖feature.php类
- 16. 在Prestashop上安装模块时覆盖模板
- 17. Prestashop - 如何覆盖自己的模块中的另一个模块
- 18. Git的Prestashop模块
- 19. 覆盖Prestashop模块控制器:放置php文件的位置?
- 20. 如何覆盖prestashop 1.5中的FrontController?
- 21. Prestashop - 用模块更改核心函数(不是覆盖目录)
- 22. Prestashop传真模块
- 23. Prestashop支付模块
- 24. 扩展Prestashop功能
- 25. Prestashop 1.6 addJS和andCss不能在功能模块getContent()中为admin
- 26. nodejs覆盖模块中的功能
- 27. 创建prestashop模块试图在PrestaShop模块上显示错误
- 28. 的Prestashop不能访问模块
- 29. 的Prestashop覆盖店铺等级
- 30. 的Prestashop模块调试
Wow伟大的解决方案保罗! – 2011-09-07 10:30:09
我一直觉得虽然Modules和hooks系统在很多情况下都有效,但有些时候它太僵化了。很高兴你发现它很有用。 – 2011-09-08 18:02:29
优秀的保罗!顺便说一下,我可以传递一些参数到模块的钩子?谢谢! – 2013-12-06 06:19:42