将变量从自定义挂钩传递到 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');
我创建了一个自定义模块。里面简单的注册了一个钩子,它的唯一作用就是获取特定类别的产品列表。
挂钩效果很好。然后我从一个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');