实现首页文章仅显示摘要

使用的模板定义首页显示文章全文,太长,阅读不方便,我希望能够显示摘要,这样感兴趣的文章点入继续阅读即可。但后台配置里没有简单的选择,在网上找来了插件,我用的是wp-utf8-excerpt,安装好以后,按照帮助说明修改主题源代码,和前几次修改插件的经历一样,帮助说只要修改主题的index.php文件即可,但是主题的index.php文件里,并没有那么多内容,这次同样没有<?php the_content(); ?>这行关键字,于是按惯例我继续去找loop.php的麻烦。

但是事情没那么顺利,因为loop.php里我搜到了多处调用the_content()函数的位置,我尝试修改了找到的第一个,没有效果。为了稳妥起见,我决定搞清楚每个the_content()函数的意义,于是我仔细读了loop.php的代码,发现在loop.php的主体部分定义了博客所有元素和内容加载方式,在我所用的twenty ten模板中,loop.php的主体结构为(感谢源代码做了清晰的注释,让我这个php门外汉能够分辨出其结构):
1) “上一页/下一页”导航按钮的显示内容和样式
2) 空的文档、归类页的显示内容和样式
3) 循环调用文章
4) 定义图片集中的图片如何显示
5) 定义分类页的文章如何显示
6) 定义其他情况下的文章如何显示(包括首页、文章详情页等)
7) “上一页/下一页”导航按钮的显示内容和样式

这个结构弄清楚了,我就立刻知道了我需要修改第5项和第6项的the_content()函数的调用语句即可,于是事情立刻简单起来,找到这两块内容的the_content()函数的位置,用插件提供的下述代码替换掉原先包含the_content()函数的php语句:

<?php
if (is_single() or is_page()) {
the_content();
} else {
the_excerpt();
}
?>

刷新页面,成功!

这次尝试对我而言,最大的收获其实不在于实现了首页文章显示摘要,而是让我搞清楚了wp的主题对文章调用的方式,主题的index.php文件只负责定义首页(实际是索引页,我的首页因为选择的是显示动态页面,所以wp调用了索引页)的基本结构,而通过get_template_part(php,css)函数来调用loop.php,以及指定的css文件来定义页面样式。我又比较了几个第三方主题,发现并非所有的主题都采用的这种结构,但比较下来,我认为wp自己发布的主题的组织结构具有最高度的复用性。当然,其他的第三方主题有自己的风格,一个文件对应一类明确的页面结构定义,这样也能比较简单快速的修改具体位置的更多细节,使得博客的表现形式也更灵活,但是从整体风格的统一上来看,需要博主自己去控制。

暂时想到这么多,我还需要继续探索,希望有机会有更全面的了解和认识,能和大家分享。

Share

186 views

关于Alex

一生俯首拜阳明
此条目发表在习·提升体验分类目录,贴了, , , , , 标签。将固定链接加入收藏夹。

实现首页文章仅显示摘要》有 2 条评论

  1. lususlee说:

    我用的方法是:在wp编辑框里,在需要显示的那一段后点上面的一个“插入more标签”即可自由显示摘要。

    • Alex说:

      嗯,也是个方法,那个more其实是个分页符,我比较懒,不想手动添加,所以整了现在的做法,自动实现:)

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>