Prestashop 是否在smarty中添加新的全局变量?可在所有页面上找到。(普雷斯塔索普)
我希望在smarty中添加一个全局变量Prestashop 是否在smarty中添加新的全局变量?可在所有页面上找到。(普雷斯塔索普),prestashop,smarty,Prestashop,Smarty,我希望在smarty中添加一个全局变量 $this->context->smarty->assign(array('urls' => $urls)); 我在stylesheep.tpl中添加了带有{$url.css_url}的css样式 <link rel="stylesheet" type="text/css" href="{$urls.css_url}my.css"> 这是什么意思?这个变量在smarty?中不可用,所以如果我放入缓存,它将不会被加载
$this->context->smarty->assign(array('urls' => $urls));
我在stylesheep.tpl中添加了带有{$url.css_url}的css样式
<link rel="stylesheet" type="text/css" href="{$urls.css_url}my.css">
这是什么意思?这个变量在smarty?中不可用,所以如果我放入缓存,它将不会被加载
如何使变量{$url.css_url}在smarty中可用?网站上到处都是
我应该把哪些代码放在哪里,以便变量(url_css)在调试模式下保持可用
谢谢你的帮助
谢谢你的帮助,你的水平比我高 事实上,该变量已经定义,并且在任何地方都可用 在frontcontroller.php中,我有以下内容:
$assign_array = array(
'img_ps_url' => _PS_IMG_,
'img_cat_url' => _THEME_CAT_DIR_,
'img_lang_url' => _THEME_LANG_DIR_,
'img_prod_url' => _THEME_PROD_DIR_,
'img_manu_url' => _THEME_MANU_DIR_,
'img_sup_url' => _THEME_SUP_DIR_,
'img_ship_url' => _THEME_SHIP_DIR_,
'img_store_url' => _THEME_STORE_DIR_,
'img_col_url' => _THEME_COL_DIR_,
'img_url' => _THEME_IMG_DIR_,
'css_url' => _THEME_CSS_DIR_,
'js_url' => _THEME_JS_DIR_,
'pic_url' => _THEME_PROD_PIC_DIR_,
);
然后,我在下面添加了下一行,以便在smarty中分配它
$this->context->smarty->assign(array('urls' => $urls));
显示变量,没有问题,但如果我将车间置于调试模式:
/* Debug only */
if (!defined('_PS_MODE_DEV_')) {
define('_PS_MODE_DEV_', true);
}
我总是这样:
ContextErrorException in smarty_internal_templatebase.php(157) : eval()'d code line 393: Notice: Undefined index: css_url
这是否表示没有价值?为什么它的价值消失了?(当我激活PS_MODE_DEV时)
再次感谢。
{$url.css\u url}
表示从url数组中检索css\u url值
此外,您收到的通知意味着该变量没有值,因此它根本无法工作,因此您认为可能是正确的,但您看到的是来自其他变量/挂钩
如何设置Smarty变量 如果要设置smarty变量,必须首先分配它 您可以通过模块、控制器或TPL来实现 从模块或控制器中,它将在您声明后立即可用。打印或调试它 因此,例如,如果将其添加到
hookDisplayHeader
或actionFrontControllerSetMedia
挂钩中,该变量将在您想要使用它的地方可用
此外,要在模块或控制器中分配值,必须使用如下代码:
$urls = array (
'css_url' => 'The URL to your CSS'
...
);
$this->context->smarty->assign(array('urls' => $urls));
然后您可以使用{$url.css\u url}
如何知道Smarty中已定义的变量
启用商店的调试模式,然后只需在任何TPL中添加
{debug}
,这将显示一个弹出窗口(请记住允许从URL弹出窗口),其中包含分配给Smarty的所有变量。也许这就是您要查找的:
版本:Prestashop 1.7.2.4
我们将重写一个类,在本例中是以下文件:classes/controller/FrontController.php,该文件为Prestashop分配全局变量
public function getTemplateVarUrls()
{
$http = Tools::getCurrentUrlProtocolPrefix();
$base_url = $this->context->shop->getBaseURL(true, true);
//custom css url var points to a folder called "my_custom_css" in the root of the project
$customCssFolderUrl = $base_url.'/my_customs_css';
$urls = array(
'base_url' => $base_url,
'current_url' => $this->context->shop->getBaseURL(true, false).$_SERVER['REQUEST_URI'],
'shop_domain_url' => $this->context->shop->getBaseURL(true, false),
'custom_css_url' => $customCssFolderUrl ,
);