【问题标题】:Smarty modulus extra empty tagset issueSmarty 模数额外的空标签集问题
【发布时间】:2016-11-10 18:22:23
【问题描述】:

我刚刚花了几个小时进行搜索,试图找到有关此问题的一些信息。
我可能真的不知道要搜索什么:)。
我在电子商务商店中使用 Smarty 模板引擎。

在第一页的中间,我有一个轮播,按出现问题的类别(选项卡式)列出产品。
问题的形式是在已解析的产品列表中、在已解析产品列表的末尾和/或开头插入一个带有“迭代”类标签集的空“div”。
我认为问题出在 foreach 循环的开始,因为
{$smarty.foreach.wrap.index % 3 == 0} => 0 %3 == 0 数组的第一个键是0。

<div class="banner-middle">
    <div class="container">
        <ul role="tablist" class="nav nav-tabs tab-heading">
            {section name=ca loop=$categorii.id}
            <li class="tab-title {if $i=='1'}active{/if}" role="presentation">
                <a data-toggle="tab" role="tab" aria-controls="home-tab-second" href="#tab_{$i++}">{$categorii.subcategorie[ca]}</a>
            </li>
            {/section}
        </ul>
        <div class="offer-tile tab-content home-carousel">
            {foreach from=$categorii.produse key=k item=v name=block}
                <div id="tab_{$tab_n++}" class="wrap-oferte tab-pane {if $smarty.foreach.block.index == 0}active{/if}" role="tabpanel">
                    <div class="iteration">
                        {foreach from=$v key=a item=b name=wrap}

                        {if $smarty.foreach.wrap.index % 3 == 0}
                    </div>
                    <div class="product_large">
                        <div class="tile-block">
                            <span class="category-tile">{$b.categorie}</span>
                            <div class="tile-product-details">
                                <div class="title-tile">
                                    <a href="{$website}/p/{$b.seo}/{$b.alias}">{$b.titlu}</a>
                                </div>
                                <div class="image-tile">
                                    <img src="{$b.fotomare}"/>
                                </div>
                                <div class="buy-tile">
                                    <div class="category-tile">Ambalaj: {$b.gramaj}</div>
                                    <span class="price-left {if $b.pretredus > 0}sale{/if}">{if $b.pretredus > 0} {$b.pretredus} Lei<span class="price-left-redus">{$b.prettotal}</span>{else}{$b.prettotal} Lei{/if}</span>
                                    <a href="{$website}/p/{$b.seo}/{$b.alias}"><i class="icon-carucior"></i></a>
                                </div>
                            </div>
                        </div>
                    </div>
                    <div class="iteration">
                        {else}
                        <div class="product_normal">
                            <span class="category-tile">{$b.categorie}</span>
                            <div class="tile-product-details">
                                <div class="title-tile">
                                    <a href="{$website}/p/{$b.seo}/{$b.alias}">{$b.titlu}</a>
                                </div>
                                <div class="image-tile">
                                    <img src="{$b.foto}" />
                                </div>
                                <div class="buy-tile">
                                    <div class="category-tile">Ambalaj: {$b.gramaj} </div>
                                    <span class="price-left {if $b.pretredus > 0}sale{/if}">{if $b.pretredus > 0} {$b.pretredus} Lei<span class="price-left-redus">{$b.prettotal}</span>{else}{$b.prettotal} Lei{/if}</span>
                                    <a href="{$website}/p/{$b.seo}/{$b.alias}"><i class="icon-carucior"></i></a>
                                </div>
                            </div>
                        </div>
                        {if $smarty.foreach.wrap.index is div by $smarty.foreach.wrap.total}
                    </div>
                    {/if}
                    {/if}

                    {/foreach}
                </div>
                </div>
        {/foreach}
    </div>
    </div>

对不起,我的英语不好。

【问题讨论】:

    标签: php html smarty


    【解决方案1】:

    尝试使用 $smarty.foreach.wrap.iteration 而不是索引。另外,请检查您的逻辑,因为现在您的 html 很容易变得混乱,并且模板也难以阅读。只看div“迭代”;尝试重新排列代码以打开和关闭一次,就像使用普通 html 一样:

     <div class="iteration"><!-- opens the iteration div -->
     {foreach from=$v key=a item=b name=wrap}
    
     {if $smarty.foreach.wrap.index % 3 == 0}
     </div><!--closes iteration div-->
     <div class="product_large">
     ....
    </div>
    <div class="iteration"> <!--opens the iteration div again -->
     {else}
    ...
    

    【讨论】:

    • 我添加了我的轮播问题的演示图像
    • 如果我使用迭代,它会变得混乱
    • 如果我在 smarty 上没有成功,我会在 php 中完成
    • 正如我所说的,问题是你的代码很乱。如果您使用索引(从 0 开始),它将始终创建并清空 div,因为您使用第一个条件关闭它。如果您使用迭代(从 1 开始),您的代码会在错误的位置打开和关闭 div
    猜你喜欢
    • 2020-08-13
    • 2016-06-23
    • 1970-01-01
    • 2011-02-05
    • 1970-01-01
    • 1970-01-01
    • 2022-10-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多