Z-Blog 模板里循环 $article->Tags,两个坑我踩了
摘要
给一个主题加标签输出,我写了三行模板,结果列表页慢了一半。问题出在 $article->Tags 上。 写法本身没错 模板里这么写是正常的: {if $article->Tags} {foreach $article->Tags as $t
给一个主题加标签输出,我写了三行模板,结果列表页慢了一半。问题出在 $article->Tags 上。
写法本身没错
模板里这么写是正常的:
{if $article->Tags}
{foreach $article->Tags as $tag}
{$tag->Name}
{/foreach}
{/if}
{if} 那层别省。没标签的文章直接 foreach 一个空值,开发模式下会抛 notice。
坑在懒加载
Z-Blog 的内容对象继承自 Metas,__get 里对 Tags、Category、Author 这几项做了懒加载——第一次取值才去查库。所以列表页二十篇文章,就是二十次标签查询。
我这边的做法是首页列表干脆不输出标签,只在单页(post-single.php 或 b.php 的详情模板)里用。真要列表页也显示,我还没找到干净的批量预载办法,这点得看官方后续有没有 LoadTags 的批量接口。
另外 $tag->Url 是完整地址,别再手动拼 {$host},拼出来容易多一个斜杠。
2026年10月21日 11:41
前后30天 · 点日期看归档
9月21日
9月22日
9月23日
9月24日
9月25日
9月26日
9月27日
9月28日
9月29日
9月30日
10月1日
10月2日
10月3日
10月4日
10月5日
10月6日
10月7日
10月8日
10月9日
10月10日
10月11日
10月12日
10月13日
10月14日
10月15日
10月16日
10月17日
10月18日
10月19日
10月20日
10月21日
10月22日
10月23日
10月24日
10月25日
10月26日
10月27日
10月28日
10月29日
10月30日
10月31日
11月1日
11月2日
11月3日
11月4日
11月5日
11月6日
11月7日
11月8日
11月9日
11月10日
11月11日
11月12日
11月13日
11月14日
11月15日
11月16日
11月17日
11月18日
11月19日
11月20日