Prestashop,Smarty模板呈现太多按钮

时间:2014-07-30 10:29:43

标签: templates smarty prestashop

我在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}

1 个答案:

答案 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>

但如果我们不知道数据结构是什么以及您想要实现什么,那真的很难说。如果它仍然无法正常工作,您应该为您的问题提供更多详细信息,解释您想要实现的目标,您在变量中拥有的数据等等。