我无法按正确顺序获取输出,以便将此格式与 apple.com/sitemap 对齐。我遇到的问题是显示值时使用的标签,我无法将其放在适当的位置。
现在,输出是:
<ul class= "sitemap">
</ul></li><li><h2>Parent 1</h2><ul>
<li>Sub Cat 1</li>
<li>Sub Cat 2</li>
</ul></li><li><h2>Parent 2</h2><ul>
<li>Sub Cat3</li>
<li>Sub Cat 4</li>
</ul></li><li><h2>Parent 3</a></h2><ul>
如果你看到ul标签没有正确关闭,因为我无法实现CSS ..
我创建了表格:
id | parent | name | url
1 | 0 | Parent1 | Link
2 | 1 | Sub Cat1| Link
3 | 2 | Sub Cat2| Link
4 | 0 | Parent2 | Link
MySQL Query获取值:
$sql = 'SELECT parent,name, url FROM sitemap ORDER BY CASE WHEN parent =0 THEN id ELSE parent END , CASE WHEN parent =0 THEN 0 ELSE id END';
在页面上显示数据的行:
{foreach from=$sitemap item=c name=sitemap}
{ assign var="tmp" value= $c.parent }
{ if $tmp==0}
</ul></li><li><h2><a title="{$c.name}" href="{$c.url}">{$c.name}</a></h2><ul>
{else}
<li><a title="{$c.name}" href="{$c.url}">{$c.name}</a></li>
{/if}
{/foreach}
答案 0 :(得分:0)
你可能正在寻找符合
的内容{foreach from=$sitemap item=c name=sitemap}
{* open <ul> on first element, only if it is has a parent *}
{if $smarty.foreach.sitemap.first && $c.parent}<ul>{/if}
{if !$c.parent}
{* if this is not the first element, close previous <ul> *}
{if !$smarty.foreach.sitemap.first}</ul>{/if}
{* output headline for this <ul> *}
<h2><a title="{$c.name}" href="{$c.url}">{$c.name}</a></h2>
{* open new <ul> *}
<ul>
{else}
<li><a title="{$c.name}" href="{$c.url}">{$c.name}</a></li>
{/if}
{* close <ul> after last element *}
{if $smarty.foreach.sitemap.last}</ul>{/if}
{/foreach}