Smarty是PHP的模板引擎。它允许轻松分离应用程序逻辑和显示代码,以及简化模板的重用。
一周,我一直在使用Smarty Template Engine,由于其应用逻辑和设计分离,我发现它非常酷。我现在的问题是如何执行标头('位置:somepage.php');
一周,我一直在使用Smarty Template Engine,由于其应用逻辑和设计分离,我发现它非常酷。我现在的问题是如何执行标头('位置:somepage.php');
我正在使用 smarty v2.6,我想生成随机的不同数字。我正在寻找一种有效、快速的方法来使用已经提供的 Smarty 功能来完成此操作。这是我生成 5 个随机数的代码
我尝试了这段代码: {如果 $login_status eq '1' } 退出 {/如果} 并传递了值 {$login_status=1}。 这会导致: 未捕获
如何使用TPL文件中的JavaScript代码,让JavaScript代码的内容出现在页面上? 当我输入代码时,没有错误消息,但页面上也没有显示任何内容。 T...
对 ps_socialfollow.tpl 进行硬编码以支持多语言后出现 Smarty 错误
我的 prestashop 版本是 1.7.3.4,php 7.1。 这是 ps_socialfollow.tpl 的默认内容: {区块名称='block_social'} {foreach fr... 我的 prestashop 版本是 1.7.3.4,php 7.1。 这是 ps_socialfollow.tpl 的默认内容: {block name='block_social'} <div class="social_follow"> <ul> {foreach from=$social_links item='social_link'} <li class="{$social_link.class}"><a href="{$social_link.url}" target="_blank">{$social_link.label}</a></li> {/foreach} </ul> </div> {/block} 模块默认不支持多语言。所以我对它进行了硬编码以支持多语言,如下所示: {block name='block_social'} {if $language.language_code == 'en-us'} <div class="social_follow"> <ul> <li class="facebook"><a href="" target="_blank">{$social_link.label}</a></li> <li class="twitter"><a href="" target="_blank">{$social_link.label}</a></li> <li class="instagram"><a href="" target="_blank">{$social_link.label}</a></li> <li class="googleplus"><a href="" target="_blank">{$social_link.label}</a></li> <li class="pinterest"><a href="" target="_blank">{$social_link.label}</a></li> </ul> </div> {elseif $language.language_code == 'ko'} <div class="social_follow"> <ul> <li class="facebook"><a href="" target="_blank">{$social_link.label}</a></li> <li class="twitter"><a href="" target="_blank">{$social_link.label}</a></li> <li class="instagram"><a href="" target="_blank">{$social_link.label}</a></li> <li class="googleplus"><a href="" target="_blank">{$social_link.label}</a></li> <li class="pinterest"><a href="" target="_blank">{$social_link.label}</a></li> </ul> </div> {/if} {/block} 只要我不激活调试模式,它就可以完美地工作。激活调试模式后,我收到此错误消息: > ContextErrorException in smarty_internal_templatebase.php(157) : > eval()'d code line 68: > Notice: Undefined index: social_link > in smarty_internal_templatebase.php(157) : eval()'d code line 68 > at ErrorHandler->handleError('8', 'Undefined index: social_link', '/var/www/html/store/vendor/prestashop/smarty/sysplugins/smarty_internal_templatebase.php(157) > : eval()'d code', '68', array('_smarty_tpl' => > object(SmartyDevTemplate))) in smarty_internal_templatebase.php(157) : > eval()'d code line 68 > at content_5b4fc96564eec0_18848187(object(SmartyDevTemplate)) in smarty_internal_templatebase.php line 188 > at Smarty_Internal_TemplateBase->fetch(object(SmartyDevTemplate), null, null, null, false, true, false) in SmartyDevTemplate.php line 41 > at SmartyDevTemplateCore->fetch() in Module.php line 2282 > at ModuleCore->fetch('module:ps_socialfollow/ps_socialfollow.tpl', 'ps_socialfollow|1|3|3|3|1|1') in ps_socialfollow.php line 201 > at Ps_Socialfollow->renderWidget('displayFooterAfter', array('smarty' => object(SmartyDevTemplate), 'cookie' => > object(Cookie), 'cart' => object(Cart), 'altern' => '1')) in Hook.php > line 929 > at HookCore::coreRenderWidget(object(Ps_Socialfollow), 'displayFooterAfter', array('smarty' => object(SmartyDevTemplate), > 'cookie' => object(Cookie), 'cart' => object(Cart), 'altern' => '1')) > in Hook.php line 881 > at HookCore::exec('displayFooterAfter', array('smarty' => object(SmartyDevTemplate), 'cookie' => object(Cookie), 'cart' => > object(Cart), 'altern' => '1'), null) in smarty.config.inc.php line > 168 > at smartyHook(array('h' => 'displayFooterAfter'), object(SmartyDevTemplate)) in SmartyLazyRegister.php line 83 > at SmartyLazyRegister->__call('smartyHook', array(array('h' => 'displayFooterAfter'), object(SmartyDevTemplate))) in > smarty_internal_templatebase.php(157) : eval()'d code line 691 > at content_5b4fc96527b774_70366195(object(SmartyDevTemplate)) in smarty_internal_templatebase.php(157) : eval()'d code line 248 > at content_5b4fc965282d34_37575711(object(SmartyDevTemplate)) in smarty_internal_templatebase.php line 188 > at Smarty_Internal_TemplateBase->fetch('index.tpl', null, 'layouts/layout-full-width.tpl', object(SmartyDev), false, true, > false) in SmartyDev.php line 41 > at SmartyDev->fetch('index.tpl', null, 'layouts/layout-full-width.tpl') in FrontController.php line 684 > at FrontControllerCore->smartyOutputContent('index.tpl') in FrontController.php line 668 > at FrontControllerCore->display() in Controller.php line 273 > at ControllerCore->run() in Dispatcher.php line 428 > at DispatcherCore->dispatch() in index.php line 28 我对 php 的了解甚至不值一提,因为它更多地基于我能够做的一点点逻辑思维,而不是实际知识。因此,我无法自行修复聪明的错误。 我必须做哪些修改?在该模块中实现多语言(网站)支持的正确方法是什么? 我根据Alexander Grosul的建议编辑了ps_socialfollow.tpl。 <div class="social_follow"> <ul> <li class="facebook"><a href="" target="_blank">{$social_link.facebook.label}</a></li> <li class="twitter"><a href="" target="_blank">{$social_link.twitter.label}</a></li> <li class="instagram"><a href="" target="_blank">{$social_link.instagram.label}</a></li> <li class="googleplus"><a href="" target="_blank">{$social_link.googleplus.label}</a></li> <li class="pinterest"><a href="" target="_blank">{$social_link.pinterest.label}</a></li> </ul> </div> 结果是完全相同的 smarty 错误。 我也尝试过这个版本: {block name='block_social'} <div class="social_follow"> <ul> {foreach from=$social_links item='social_link'} {if $language.language_code == 'en-us'} <li class="facebook"><a href="" target="_blank">{$social_link.label}</a></li> <li class="twitter"><a href="" target="_blank">{$social_link.label}</a></li> <li class="instagram"><a href="" target="_blank">{$social_link.label}</a></li> <li class="googleplus"><a href="" target="_blank">{$social_link.label}</a></li> <li class="pinterest"><a href="" target="_blank">{$social_link.label}</a></li> {elseif $language.language_code == 'ko'} <li class="facebook"><a href="" target="_blank">{$social_link.label}</a></li> <li class="twitter"><a href="" target="_blank">{$social_link.label}</a></li> <li class="instagram"><a href="" target="_blank">{$social_link.label}</a></li> <li class="googleplus"><a href="" target="_blank">{$social_link.label}</a></li> <li class="pinterest"><a href="" target="_blank">{$social_link.label}</a></li> {/if} {/foreach} </ul> </div> {/block} 这不会触发 smarty 错误,只是显示所有图标。无论选择哪种语言,都会立即执行。 在您的示例中,默认版本中有循环,但修改后的版本中没有循环。这意味着您不能使用 $social_link,因为它不存在,而是在循环内创建的。您只能使用传入的 $social_links 并指出您要使用该数组的哪个元素,例如 $social_links.twitter.label 等。 您应该在 Github 上查看我针对所有版本的 Prestashop 的增强型免费社交媒体模块“lgf_socialfollow”
Prestashop 1.7 将产品表中的ISBN值添加到delivery-slip.tpl
让我尝试解释一下我在寻找什么: 我们在产品选项中使用 ISBN 字段来添加包装尺寸信息。当订单直接在 Prestashop 中传递时一切都很好。但是什么...
Prestashop - 在产品页面中显示价格(不含增值税和含增值税)
我正在用 prestashop 制作一个 B2B 网站。因此,在客户组设置中,我设置了他们都看到不含增值税的价格,但我希望在我的产品页面中显示这两个价格。我知道
该脚本使用 .tpl 作为主题。 在 memberprofile.tpl 中有第一个名称元素 $profilearray[0].firstname 我想将此元素的结果也添加到另一个名为 doc 的 .tpl 文件中...
我们目前使用 {html_image file='pumpkin.jpg'} 来计算图像的宽度/高度。 我想做的是向函数添加一个额外的参数,以便您可以传入容器(
我已经通过 Composer 在我的 Linux Web 服务器上安装了 smarty,但是当我运行我的 php 测试脚本时,我得到: 致命错误:未捕获错误:在 /var/www/html/smarty_test.php:5 堆栈中找不到“Smarty”类...
如何在 SMARTY PHP 中的 .tpl 文件中创建关联数组?
我在.tpl文件中创建了一个关联数组: {$country_flags = ["flag_one" => "ae.png", "flag_two" => "us.png"]} 如果我用以下命令检查这个数组...
我正在使用 Smarty 传入并显示 first_name 变量的内容。有些用户的名字中有表情符号字符 (http://en.wikipedia.org/wiki/Emoji),我想知道如何才能做到
我正在使用 PrestaShop 1.7 及其默认主题。 我还安装了联系表格模块。 但是当我尝试使用联系人创建的联系表单从“联系我们页面”发送消息时
我已经查看了所有内容,但在开发人员的文档或普通文档中都找不到它,是否有某种方式或某处允许显示所有自定义字段或 X 自定义字段...
我目前正在使用 Prestashop 1.6.1.5 建立一个商店。 由于我必须发送的电子邮件数量众多,因此我想在一个地方管理我的电子邮件骨架。 我认为更简单的方法是...
我正在使用此代码 {$entry.entry|strip_tags} 来删除标签,但是我只想删除 标签而不是所有 HTML 标签。 有人可以帮忙吗? 谢谢你 我正在使用此代码{$entry.entry|strip_tags}来删除标签,但是我只想删除<p>标签和不是所有HTML标签。 有人可以帮忙吗? 谢谢你 如果您想删除 ONLY <p> 标签,请尝试简单的正则表达式替换: {$entry.entry|regex_replace:"/(<p>|<p [^>]*>|<\\/p>)/":""} 这会将 <p>、</p> 和所有 <p many attributes> 字符串替换为空字符串。 让我知道它是否有效。我在 PHP 中测试了正则表达式,而不是直接在 Smarty 中测试。 您可以使用 regex_replace 修饰符来完成此操作: {$foo = '<p>hello world</p><p some-att="ribute">foo</p>'} {$foo|regex_replace:'#<\s*/?\s*p(\s[^>]*)?>#i':' '|escape} 要删除标签及其内容,请使用 {$content|regex_replace:'/(<(<(p)\b[^>]*>).*?(<\/\2>)/is':''} 要删除更多标签,只需添加 |tag 删除 span 和 div 标签的示例 {$content|regex_replace:'/(<(<(p|div|span)\b[^>]*>).*?(<\/\2>)/is':''}
我需要在 Prestashop 中传递一个带有翻译字符串的变量。在后端可以这样做 sprintf($this->l('数字是%1$d'), $number); 但我需要在前面做这件事...
我有来自 prestashop 文件的 PPH 语法: 我有来自 prestashop 文件的 PPH 语法: <select name="deadline" id="deadline" onclick="dead_line_all()"> <option value="235959" selected="selected">'.$this->l('NONE').'</option>'; for($hours=0; $hours<24; $hours++) for($mins=0; $mins<60; $mins+=30) $this->_html .= ' <option value="'.str_pad($hours,2,'0',STR_PAD_LEFT).''.str_pad($mins,2,'0',STR_PAD_LEFT).'00"> '.str_pad($hours,2,'0',STR_PAD_LEFT).':'.str_pad($mins,2,'0',STR_PAD_LEFT).' </option>'; $this->_html .= ' </select> 如何在smarty模板(xxx.tpl)中改成smarty语法? 有两种方法可以做到这一点。 首先简单地将这个选择的html分配给php文件中的smarty变量并在xxx.tpl中打印 PHP 文件 $this->_html .= '<select name="deadline" id="deadline" onclick="dead_line_all()">';' $this->_html .= '<option value="235959" selected="selected">'.$this->l('NONE').'</option>'; for($hours=0; $hours<24; $hours++){ for($mins=0; $mins<60; $mins+=30){ $this->_html .= '<option value="'.str_pad($hours,2,'0',STR_PAD_LEFT).''.str_pad($mins,2,'0',STR_PAD_LEFT).'00">'.str_pad($hours,2,'0',STR_PAD_LEFT).':'.str_pad($mins,2,'0',STR_PAD_LEFT).'</option>'; } } $this->_html .= '</select>'; $smarty->assign('select',$this->_html); xxx.tpl 模板文件 {$select} 这将打印模板文件中选择的 html。 2.php 文件中的第二个选项在模板文件中分配所需的变量和其余代码 $smarty->assign('none',$this->l('NONE')); xxx.tpl 文件 <select name="deadline" id="deadline" onclick="dead_line_all()"> <option value="235959" selected="selected">{$none}</option> {for $hour=0 to 24} <option value="{$hour|str_pad:2:0:STR_PAD_LEFT}:30">{$hour|str_pad:2:'0'}:30</option> <option value="{$hour|str_pad:2:0:STR_PAD_LEFT}:60">{$hour|str_pad:2:'0'}:60</option> {/for} </select> 您还需要为 str_pad 函数创建新的 smarty 修饰符插件。 <select name="deadline" id="deadline" onclick="dead_line_all()"> <option value="235959" selected="selected">{$none}</option> {for $hour=0 to 24} <option value="{$hour|str_pad:2:0:STR_PAD_LEFT}:30">{$hour|str_pad:2:'0'}:30</option> <option value="{$hour|str_pad:2:0:STR_PAD_LEFT}:60">{$hour|str_pad:2:'0'}:60</option> {/for} </select> 有关添加修饰符的更多信息 https://smarty-php.github.io/smarty/stable/api/extending/modifiers/