博客装修记:专题页导航

细心的朋友可能会发现,博客顶部(手机端就是点开菜单)的导航栏里,原来『公众对讲机』的位置,现在变成了『专题页导航』。点进去就是一个简单的目录,汇总了本站的一些专题页,或按照Typecho的称呼,『独立页面』。

要说,换一条链接而已,怎么还能开一篇文章来水?其实主要还是想聊聊这背后的原因,以及在此过程中发现的,站点所使用的主题的一个小特性。

如图所示如图所示

1. 前言

从明面上看,这次的改版并不难,就是写好导航页之后,在后台编辑一下,把顶上的链接换一下罢了。可以说是不费吹灰之力,易过借火,也不是什么上刀山下火海的难事。甚至,现在AI这么发达,这种零散的事情都可以交给AI代劳了。为什么还要写出来呢?

没错,笔者也是这样想的。所以这篇博文不是『如何添加专题页』的教程,有需要的朋友可以自行查阅相关资料。相对地,我更想聊聊为什么添加,以及针对目前站点所使用的主题的一些Corner Case问题进行修复。

2. 为何改版?

事出必有因,改版亦然。

2.1 原生态体验

Typecho内部内置两种页面类型,文章独立页面。

一般平时写博客,就是用文章。写完之后自动出现在主页,RSS也发出去了,而且按时间顺序排好,最新的就排在最前面,同时计入归档页,分类页等地方。这种大全套模式,当然是适合用来发布不断更新的博文的,读者点进来就能看到最新动态。

然而,很显然地,这就意味着,在文章类别下发布的东西,会引发一连串的反应。比如我想总结某个以前聊过的话题(或者说,足以成为一个概念的东西,比如笔者的杏泉网络),此时如果放在文章类别下,就会被推到首页,订阅RSS的读者也可能会因收到『以前好像发过啊』的内容而感到疑惑。另外,部分第三方插件可能针对文章有特殊处理,例如说在新文章发送后自动推送到别的地方,这就容易带来不必要的问题。

另一方面,独立页面,就显得更加『原生态』。这里的原生态可以理解为英语里的Raw,或者Base那种,也就是没有任何修饰,只是一个基底:撰写完成之后,就是一个带评论区的页面而已,不进入RSS,也不会主动在什么地方展示,你得主动把链接放出来,才能被人访问到。比如上面的场景,我可以把这些概念上的东西,单独开一个独立页面,写完之后手动放到合适的地方,不会造成其他影响。另外,Typecho的独立页面功能是可以自己写模板的,在某些需要更高定制化的场景,就显得更加适合。例如本站的文章归档页,就是这种方式做的:后台开一个独立页面,模板设置为归档页,就完事了。

2.2 分散的汇总

上面提到的场景是『总结某个话题』,这里继续用这个举例子。

比如,笔者的杏泉网络,是分几篇博文介绍了如何搭建各个服务,并实际使用的。现在,如果我想在未来的其他文章里放个链接来跟人说明这个网络是什么,我应该把链接指向哪篇文章呢?如果指向第一篇,那么读者看不到后续更新;如果指向最新的文章,那么后续再发布和杏泉网络有关的博文的时候,就要回来手动修改链接。更何况,有些情况下,比如分享到社交媒体,此时链接连改都改不了,发出去就是定局。

此时,就可以单独开一个专题页,把零碎的概念都聚合起来。以后要引用就引用这个,有更新也只更新这个,这就大大减少了工作量。

2.3 有生之年的小说

上面提到独立页面比较原生态,这样的特性,就很适合用来放一些『主线之外』的东西。

比如,我现在就可以往独立页面里面放入目前正在写的小说(而且也计划如此),一次性放几章,十几章,几千几万章,都没有关系。因为独立页面的原生态特性,普通的读者不会受到影响,RSS订阅也不会被小说给灌满。同时,还可以选择用各种别的方法,来在此基础上进行修饰,比如小说页就添加一些辅助阅读的小工具,从而有针对性地形成不一样的风格。这都是文章页很难做到的,毕竟做加法一般都会比做减法更加容易。

3. 对主题的修改

添加专题页并不难,只需要新建一个页面,然后填入你要发布的内容就好了。顶多再和笔者一样,再加一个专题导航页,用来汇总信息,方便查阅。

然而,在本站使用的主题文件里,有这么一段代码:

<?php $this->widget('Widget_Contents_Page_List')->to($pages); ?>
<?php while($pages->next()): ?>
    <!-- 输出信息,略去 -->
<?php endwhile; ?>

很显然,这段代码会把站点上的所有独立页面,都在顶部导航栏展示出来。此时如果多添加几个页面,导航栏也就被塞满了,甚至会直接溢出外层元素,这显然不是我们想要的结果。

要关闭这个功能,最省事的办法,当然就是直接把这段代码删了。不过当时因为不确定日后是否仍需要这个功能,因此笔者没有选择直接删除,而是把代码用一个if块给包裹了起来:

<?php
    $autoPageList = false;
    if($autoPageList):
        $this->widget('Widget_Contents_Page_List')->to($pages);
?>
<?php while($pages->next()): ?>
    <!-- 输出信息,略去 -->
<?php endwhile; ?>
<?php endif; ?>

这样,如果以后想要快速恢复到原来的样子,只需要把参数改为true即可,不必再费力补充代码。

4. 写在最后

适当水文,有益身心健康。

同时当然也欢迎来看看新的导航页,新的杏泉网络主题页(内含笔者的小说的一些信息),以及新的关于页。

(完)


木头箱子脆脆,但是这样正好

如无特殊声明,本站内容遵循 CC BY-NC-SA 4.0 协议

转载请注明出处并保留作者信息,谢谢!

本站由 搬瓦工VPS 强力驱动

none
最后修改于:2026年06月15日 21:57

添加新评论

提醒:『评论回复邮件提醒』功能正在测试中
评论后,如果站长有回复,会有邮件通知