当前位置: 首页 > 图文教程 > 网页制作 > CMS技巧 > 让WordPress的Post和Page支持<!–more–>标签

CMS技巧
Zblog帮助:模板文件与模板标签
Joomla教程:模板覆盖方式修改系统输出
Joomla教程:为Joomla插件创建语言包
Joomla教程:文章页面中显示指定的模块
Joomla教程:控制Section中的分类列表页面的显示方式
Joomla教程:mod-rewrite是否真的被开启
在Joomla自定义HTML模块组合使用Google小工具
Joomla教程:本地搭建的Joomla站点发送邮件
Joomla教程:在Who is online模块中显示用户名
dedecms教程:栏目页面转换为单独页面
CMS可用性测评:帮助找到适合自己的内容管理系统
Joomla中文教程:构建多重站点
Joomla教程:在templateDetails.xml中添加语言文件声明
Joomla教程:为页面和模块添加独立的自定义Class
Joomla教程:为“read more”链接添加对应的文章标题
Joomla教程:查看并修改模板的CSS
Joomla中文教程:创建并使用插件对文章内容进行修改
Joomla教程:网站首页第一次加载时播放一次Flash动画
Joomla教程:禁止未分类文章被站内搜索
Joomla教程:去掉分类文章列表中的文章序号

CMS技巧 中的 让WordPress的Post和Page支持<!–more–>标签


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2010-01-30   浏览: 77 ::
收藏到网摘: n/a

当我们在wordpress中使用<!–more–>标签截断文章时,在首页、分类、标签和存档等页面的文章内容都是显示<!–more–>之前的文章,而在文章(Post)和页面(Page)中时,则忽略<!–more–>标签,显示全文。

这当然是合理的,你总不可能让访客在你的最终文章页还瞅着摘要发呆。

但对主题开发者来说,经常会使用一个Page Template来罗列一个符合查询条件的文章列表。比如下面这段代码返回分类ID为3下的所有文章。

以下为引用的内容:

<?php query_posts('cat=3'); while(have_posts): the_post();  ?>
<h2><?php the_title(); ?></h2>
<?php the_content(); ?>
<?php endwhile; ?>

但在这份文章列表里面,the_content()函数将始终输出全文,不管你是否在文章中使用了more标签。因为WordPress只知道这是一个Page页面,要显示全文,而不会智能的根据你是否使用了query_posts()或新建了一个WP_Query对象来决定是否支持more标签。

P.S:说来惭愧,做了这么长时间的wordpress主题,我直到今天才发现这个问题。因为我个人比较喜欢“纯文字摘要列表”的方式,以往需要创建文章列表时,都是使用自动截取文章字符的方式。但正在进行的一个项目,客户要求输出html全文,然后手动插入more标签截断。

废话说了半天,其实解决方法简单的不行,请看代码(via weblogtoolscollection):

以下为引用的内容:

<?php global $more; $more = false; ?>
<?php the_content('Continue Reading'); ?>
<?php $more = true; ?>

说明: 在the_content()函数前声明一个全局变量$more并且设置为flase就可以了。如果你希望在内容显示完成后又回到原来的状态,那在后面再把$more变量设置为true。