
很多人开始做 Z-BlogPHP 主题以后,最先卡住的不是不会写 HTML,而是不会拆模板。
最典型的几种乱法是:
header.php 里塞了一堆页面专属逻辑这篇我们就专门解决一件事:
Z-BlogPHP 模板到底该怎么拆,才能既跑得通,又好维护。
很多人理解“拆模板”,会下意识想到前端组件化。
但在 Z-BlogPHP 里,更重要的不是炫技,而是三个目标:
所以模板拆分最核心的问题不是:
而是:
在 Z-BlogPHP 主题里,最常用的一批模板文件通常是:
header.phpfooter.phpindex.phpsingle.phppage.phpsearch.phpcomments.php404.php你可以先把它们理解成下面这张职责图。
header.php更像全站公共头部。
适合放:
<head> 里的 title、meta、CSSfooter.php更像全站公共尾部。
适合放:
index.php更像列表页总入口。
通常承接:
single.php更像文章详情页。
通常承接:
page.php如果你单独做它,通常给独立页面用。
search.php专门处理搜索结果。
comments.php专门处理评论列表和评论表单。
index.php 起步很多主题的 index.php 不只是首页。
它经常还负责:
所以 index.php 常常是“列表型页面”的总入口。
这类页面的共性通常有:
因此你拆的时候,可以先做一层共同结构,再按页面类型做小分支。
例如:
{template:header}
<main class="archive-main">
{if $type=='index'}
<h1>最新文章</h1>
{elseif $type=='category'}
<h1>{$category.Name}</h1>
{elseif $type=='tag'}
<h1>{$tag.Name}</h1>
{else}
<h1>文章列表</h1>
{/if}
{foreach $articles as $article}
<article class="post-card">
<h2><a href="{$article.Url}">{$article.Title}</a></h2>
<p>{$article.Intro}</p>
</article>
{/foreach}
</main>
{template:footer}
这个写法的关键不在于样式,而在于:
single.php详情页和列表页的目标完全不一样。
列表页更强调:
详情页更强调:
所以文章页最好别混进 index.php。
一个最小的 single.php 大致可以这样起步:
{template:header}
<article class="post-single">
<header class="post-header">
<h1>{$article.Title}</h1>
<div class="post-meta">
<span>{$article.Author.Name}</span>
<span>{$article.Time('Y-m-d')}</span>
</div>
</header>
<div class="post-content">
{$article.Content}
</div>
{template:comments}
</article>
{template:footer}
这就是一个清晰的详情页骨架:
后面再慢慢补:
有些主题没有单独的 search.php,搜索结果会直接用 index.php。
能跑,但不够清楚。
因为搜索页通常至少有两件事和普通列表页不一样:
所以只要你打算认真做内容站,搜索页最好独立出来。
例如:
{template:header}
<main class="search-main">
<h1>搜索结果</h1>
{if count($articles)>0}
{foreach $articles as $article}
<article class="post-card">
<h2><a href="{$article.Url}">{$article.Title}</a></h2>
</article>
{/foreach}
{else}
<p>没有找到相关内容,请尝试更换关键词。</p>
{/if}
</main>
{template:footer}
这样后面你做搜索体验优化时,落点就非常明确。
模板拆分不是越碎越好。
很多人一开始就拆十几个片段,最后自己都找不到页面结构。
更稳的顺序是:
通常就是:
header.phpfooter.php比如:
comments.phpsidebar.phpnavbar.php比如:
除非你的主题已经比较成熟,否则不要一开始拆得过细。
include.php这是模板开发最常见的边界问题。
比如:
这类判断留模板里通常没问题。
include.php 的一句话:
模板保留“怎么显示”,逻辑层负责“显示什么结果更合适”。
如果你现在要做一个内容站主题,建议按下面顺序拆:
先把:
header.phpfooter.phpindex.phpsingle.php跑通。
把搜索页单独拆成:
search.php把评论区单独拆成:
comments.php如果分类页、标签页和首页差异越来越大,再考虑:
category.phptag.php或者在 index.php 里做更清楚的分支。
index.php短期省事,后面最难维护。
header.php 写页面专属结构header.php 更适合全站共用内容,不适合塞一堆详情页专属区块。
一旦缩略图、摘要、时间格式需要统一调整,就会很痛。
对内容站来说,体验和 SEO 都不够好。
后面调评论交互、审核提示、回复结构时会非常累。
拆得过早、过碎,也会让主题越来越难看懂。
写完模板以后,建议不要只看首页。
至少要逐个验证:
只要你开始把验证范围从“首页能开”扩大到“各页面类型都跑一遍”,模板问题会少很多。
Z-BlogPHP 模板开发最重要的,不是把页面写出来,而是把页面类型和职责拆清楚。
你只要先把下面这套思路立住:
index.php 起single.php 起后面模板越写越多,结构也不容易失控。
下一篇我们继续讲主题配置项,怎么从后台设置,一路走到前台输出。
发表评论: