我在prestashop模板中有这个代码,没有循环,只有条件,我得到5个后退按钮(elseif section,first li tag),为什么会发生?
{if $node.children|@count > 0 && ($smarty.get.controller!='product' && $smarty.get.controller!='category')}
<li class = "li-parent">
<asset class="menu-arrow-left"></asset>
<p><span><a href="{$node.link|escape:'htmlall':'UTF-8'}" title="{$node.desc|escape:'htmlall':'UTF-8'}">{$node.name|escape:'htmlall':'UTF-8'}</a></span></p>
{elseif $node.children|@count > 0 && ($smarty.get.controller=='product' || $smarty.get.controller=='category')}
<li class="li-back"><asset class="menu-arrow-right"></asset><p class="class="border-bottom-grandiet-small"><span>Back</span></p></li>
<li class = "li-parent">
<p><span><a href="{$node.children[0].link|escape:'htmlall':'UTF-8'}" title="{$node.desc|escape:'htmlall':'UTF-8'}">{$node.children[0].name|escape:'htmlall':'UTF-8'}</a></span></p>
{/if}
答案 0 :(得分:0)
我在这段代码中看不到任何可能导致显示5个后退按钮的内容。我怀疑这段代码包含在某种循环中,这就是为什么它会显示5次。
您应该使用以下代码更改上述代码:
testonly
然后查看页面或页面来源并检查将显示多少testonly
个文本。
如果你真的使用循环你应该使用一些额外的条件也是可能的。例如,而不是:
<li class="li-back"><asset class="menu-arrow-right"></asset><p class="class="border-bottom-grandiet-small"><span>Back</span></p></li>
你应该使用
{if $node.children|@iteration eq 1}
<li class="li-back"><asset class="menu-arrow-right"></asset><p class="class="border-bottom-grandiet-small"><span>Back</span></p></li>
{/if}
可能其余部分应该与第一个条件更相似,而不是:
<li class = "li-parent">
<p><span><a href="{$node.children[0].link|escape:'htmlall':'UTF-8'}" title="{$node.desc|escape:'htmlall':'UTF-8'}">{$node.children[0].name|escape:'htmlall':'UTF-8'}</a></span></p>
你应该使用:
<li class = "li-parent">
<p><span><a href="{$node.link|escape:'htmlall':'UTF-8'}" title="{$node.desc|escape:'htmlall':'UTF-8'}">{$node.name|escape:'htmlall':'UTF-8'}</a></span></p>
但如果我们不知道数据结构是什么以及您想要实现什么,那真的很难说。如果它仍然无法正常工作,您应该为您的问题提供更多详细信息,解释您想要实现的目标,您在变量中拥有的数据等等。