将变量从自定义挂钩传递到 TPL 文件

Pass variable from custom hook to TPL file

我创建了一个自定义模块。里面简单的注册了一个钩子,它的唯一作用就是获取特定类别的产品列表。

挂钩效果很好。然后我从一个TPL文件中调用它,它被正确调用,但是当我试图从TPL文件中获取钩子变量时,我不能。

这是我的 Hook 代码。

    public function hookDisplayCaronteCategories($params){

        if (array_key_exists('max', $params)) {
            $max = $params['max'];
        }
        else{
            $max = 1000;
        }

        $category = new Category(
            $params['id_category'], //id de la categoría
            (int)Context::getContext()->language->id // id del idioma
        );
        $caronteProducts = $category->getProducts(
            (int)Context::getContext()->language->id, //id lenguaje
             1, //número de páginas
             $max, //productos por páginas
             'date_add', //order by
             'DESC', //order way
             false, //get total
             true, //mostrar activos
             false, // random
             1, // random_number_products
             true, //check access
             Context::getContext() //context
        );
        $this->smarty->assign(array('caronteProducts', $caronteProducts));
        return $this->display('http://localhost/rapture/themes/classic_child/templates/cms/page-6.tpl');
    }

末尾的 var_dump 函数正确显示了产品数据。

但是,如果我从 tpl 执行 var_dump,函数 returns 为空。这就是我从 tpl 调用钩子的方式。

      {hook h="displayCaronteCategories" id_category=11}
      {$caronteProducts|var_dump}

这就是我得到的:

如何获取tpl文件中的hook变量?

谢谢。

您要在哪个 TPL 中打印 $caronteProducts 变量?

你需要 fetch/render 你的 TPL 在你的 hook 中,变量将在那里可用,因为没有全局范围..

类似于:

$this->smarty->assign(array('caronteProducts', $caronteProducts));
return $this->display(dirname(__FILE__), 'views/templates/hook/caronteproducts.tpl');