如何在 Prestashop 中使变量可全局访问
How to make a variable globally accessible in Prestashop
我正在修改 Prestashop 中的一个模块,它具有这样的文件夹结构..
css
translations
index.php
module.php
module.tpl
变量 $products 包含所有产品的数组。但只有 module.tpl 可以访问它,它在主页上显示我不喜欢的所有产品。
我创建了一个重定向到不同页面的控制器和一个 template/view/front/products.tpl 来显示所有产品。但是 products.tpl 文件中未定义 $products 变量。
定义常量可以完成这项工作或使用会话。之后所有内容都可以在模板中由 smarty 访问。
Ex 在你的模块中:
define('MYGLOBALVAR', 'data');
在您的模板中:
$smarty.const.MYGLOBALVAR
您可以设置Cookie变量并在您需要的地方使用它。喜欢:
$this->context->cookie->products=$products;
如果你想在 tpl 中打印,在控制器中你可以分配给 smarty 变量
$this->context->smarty->assign('products', $this->context->cookie->products);
并在 tpl 中使用它
如果您使用新模板创建了一个新控制器,您需要在这个控制器中创建这个变量并将其分配给一个模板,所以:
在控制器的 initContent()
函数中,您需要使用您需要的值创建变量“$products”,例如:
$products = Product::getProducts($id_lang, 0, 0, 'id_product', 'DESC' );
然后,您需要将这个php变量赋值给一个Smarty变量,以显示tpl文件中的值。为此,我们使用“@Ravinder Pal”使用的方法,但更改值:
$this->context->smarty->assign('products', $products);
最后,您可以在 initContent() 函数中分配的模板中使用此变量:
{$products}
希望对你有帮助。
我真的想通了。我别无选择,只能实例化新类别,然后获取所有产品。
像这样:
$category = new Category(Context::getContext()->shop->getCategory(), (int)Context::getContext()->language->id);
$nb = 10000;
$products = $category->getProducts((int)Context::getContext()->language->id, 1, ($nb ? $nb : 10));
我正在修改 Prestashop 中的一个模块,它具有这样的文件夹结构..
css
translations
index.php
module.php
module.tpl
变量 $products 包含所有产品的数组。但只有 module.tpl 可以访问它,它在主页上显示我不喜欢的所有产品。
我创建了一个重定向到不同页面的控制器和一个 template/view/front/products.tpl 来显示所有产品。但是 products.tpl 文件中未定义 $products 变量。
定义常量可以完成这项工作或使用会话。之后所有内容都可以在模板中由 smarty 访问。
Ex 在你的模块中:
define('MYGLOBALVAR', 'data');
在您的模板中:
$smarty.const.MYGLOBALVAR
您可以设置Cookie变量并在您需要的地方使用它。喜欢:
$this->context->cookie->products=$products;
如果你想在 tpl 中打印,在控制器中你可以分配给 smarty 变量
$this->context->smarty->assign('products', $this->context->cookie->products);
并在 tpl 中使用它
如果您使用新模板创建了一个新控制器,您需要在这个控制器中创建这个变量并将其分配给一个模板,所以:
在控制器的 initContent()
函数中,您需要使用您需要的值创建变量“$products”,例如:
$products = Product::getProducts($id_lang, 0, 0, 'id_product', 'DESC' );
然后,您需要将这个php变量赋值给一个Smarty变量,以显示tpl文件中的值。为此,我们使用“@Ravinder Pal”使用的方法,但更改值:
$this->context->smarty->assign('products', $products);
最后,您可以在 initContent() 函数中分配的模板中使用此变量:
{$products}
希望对你有帮助。
我真的想通了。我别无选择,只能实例化新类别,然后获取所有产品。 像这样:
$category = new Category(Context::getContext()->shop->getCategory(), (int)Context::getContext()->language->id);
$nb = 10000;
$products = $category->getProducts((int)Context::getContext()->language->id, 1, ($nb ? $nb : 10));