Prestashop:如何在模块中包含一个块?

Prestashop: How to include a block in a module?

我有一个模块,我想显示其中的 "blocknewproducts"。什么是最佳选择?

谢谢!

好的,我们缺少更多信息,但我会在 Prestashop 1 中分享一种方法。6.x:

您的模块:

鉴于您在模块 install 方法中有一个名为 displayMyModule 的自定义挂钩:

public function install() {
    if (!parent::install() || !$this->registerHook('displayMyModule')) {
        return false;
    } else {
        return true;
    }
}

现在,您要在何处显示此挂钩的内容由您决定。例如,如果它位于类别页面上,则在 category.tpl 中添加

{hook::exec('displayMyModule')}

阻止新产品

现在要显示 blocknewproducts 我们将创建一个 override 这个核心模块并注册 displayMyModule 挂钩 :

/override/modules/blocknewproducts/blocknewproducts.php:

if (!defined('_PS_VERSION_'))
    exit;

class BlockNewProductsOverride extends BlockNewProducts
{

    public function install()
    {
        $success = (parent::install() 
            && $this->registerHook('displayMyModule'));

        return $success;
    }

    public function hookDisplayMyModule($params)
    {
        return $this->hookRightColumn($params);
    }
}

hookDisplayMyModule中我们只是return hookRightColumn 方法不重写代码。

不要忘记进入 back-office/modules 并重新初始化 blocknewproducts 模块

仅此而已...但请记住,您也可以 覆盖 blocknewproducts 模块以注册 已经存在的钩子 如上所示。

TLDR: 如果您只是想在其他地方展示块状新产品,也许您不需要模块。