我想按类别组织这些链接;我尝试了一些东西,但它无法正常工作。
{if $mainResolutions|@count >0}
<ul>
{section name=item loop=$mainResolutions}
{if $mainResolutions[item].enabled == 1}
{assign var='res_name' value=$mainResolutions[item].width|cat:'x'|cat:$mainResolutions[item].height}
<li><a href="{$res_name|url:'resolution'}">{$mainResolutions[item].width}x{$mainResolutions[item].height} {$mainResolutions[item].category}</a></li>
{/if}
{/section}
</ul>
{/if}
上面的代码将输出HTML,如下所示:
<ul>
<li><a href="/800x600-wallpapers-r.html">800x600 Normal 4:3</a></li>
<li><a href="/1024x768-wallpapers-r.html">1024x768 Normal 4:3</a></li>
<li><a href="/1152x864-wallpapers-r.html">1152x864 Normal 4:3</a></li>
<li><a href="/1280x960-wallpapers-r.html">1280x960 Normal 4:3</a></li>
<li><a href="/1400x1050-wallpapers-r.html">1400x1050 Normal 4:3</a></li>
<li><a href="/1600x1200-wallpapers-r.html">1600x1200 Normal 4:3</a></li>
<li><a href="/1920x1440-wallpapers-r.html">1920x1440 Normal 4:3</a></li>
<li><a href="/1280x800-wallpapers-r.html">1280x800 Wide</a></li>
<li><a href="/1440x900-wallpapers-r.html">1440x900 Wide</a></li>
<li><a href="/1680x1050-wallpapers-r.html">1680x1050 Wide</a></li>
<li><a href="/1920x1200-wallpapers-r.html">1920x1200 Wide</a></li>
<li><a href="/2560x1600-wallpapers-r.html">2560x1600 Wide</a></li>
<li><a href="/852x480-wallpapers-r.html">852x480 HD</a></li>
<li><a href="/1280x720-wallpapers-r.html">1280x720 HD</a></li>
<li><a href="/1366x768-wallpapers-r.html">1366x768 HD</a></li>
<li><a href="/1920x1080-wallpapers-r.html">1920x1080 HD</a></li>
</ul>
虽然我想要以下内容:
<ul>
<li><a href="#">Normal 4:3</a>
<ul>
<li><a href="/800x600-wallpapers-r.html">800x600 </a></li>
<li><a href="/1024x768-wallpapers-r.html">1024x768 </a></li>
<li><a href="/1152x864-wallpapers-r.html">1152x864 </a></li>
<li><a href="/1280x960-wallpapers-r.html">1280x960 </a></li>
<li><a href="/1400x1050-wallpapers-r.html">1400x1050 </a></li>
<li><a href="/1600x1200-wallpapers-r.html">1600x1200 </a></li>
<li><a href="/1920x1440-wallpapers-r.html">1920x1440 </a></li>
</ul>
</li>
<li><a href="#">Wide</a>
<ul>
<li><a href="/1280x800-wallpapers-r.html">1280x800 </a></li>
<li><a href="/1440x900-wallpapers-r.html">1440x900 </a></li>
<li><a href="/1680x1050-wallpapers-r.html">1680x1050 </a></li>
<li><a href="/1920x1200-wallpapers-r.html">1920x1200 </a></li>
<li><a href="/2560x1600-wallpapers-r.html">2560x1600 </a></li>
</ul>
</li>
<li><a href="#">HD</a>
<ul>
<li><a href="/852x480-wallpapers-r.html">852x480 </a></li>
<li><a href="/1280x720-wallpapers-r.html">1280x720 </a></li>
<li><a href="/1366x768-wallpapers-r.html">1366x768 </a></li>
<li><a href="/1920x1080-wallpapers-r.html">1920x1080 </a></li>
</ul>
</li>
</ul>
答案 0 :(得分:1)
将您的数据分成不在Smarty中的PHP中的单独数组,然后您可以编写3个循环或子循环
尝试将数据发送到这样的数组
$MainResolutions = array('Normal 4:3' => array(item1 => array('name' =>'item1', enabled = 1, etc),
'Wide' => array(item1 => 'item1' etc),
'HD' => array(item1 => 'item1' etc));
$ Smarty-&gt; assign('mainResolutions',$ MainResolutions);
那么你的聪明人可以使用foreach
{foreach from=$mainResolutions item=Resolution key=SectionName}
<ul>
{if Resolution.enabled == 1}
<li><a href="{$SectionName}">
{$Resolutions.width}x{$Resolution.height} {$Resolution.category}</a>
</li>
{/if}
{/foreach}
使用已组织好所有信息的php数组,然后使用foreach而不是部分,你可以更简单地做到这一点。
答案 1 :(得分:0)
我建议你在mysql中对链接进行排序选择或在php中对它们进行排序,这样你就有了两个宗派数组
类似这样的事情
array(
"normal" => array(
....
),
"wide" => array(
....
),
"HD" => array(
...
)
)
然后单独循环播放
或者如果已经存在属性,您可以评估以决定何时使用if语句创建新集合
如果您可以在将数组输出到smarty之前向我展示数组的样子,我可以帮助ifs
答案 2 :(得分:0)
将您的业务逻辑与表示层分开。
在您的情况下,任务的解决方案属于业务逻辑。