使用文章摘要(description字段)【最推荐】
这是最标准、最规范且最灵活的方法,织梦的每个文章模型都自带一个“字段(description),我们完全可以把它当作“缩略标题”来使用。
优点:
- 无需修改程序:织梦原生支持,非常安全。
- 内容独立和标题内容完全分开,可以自由编辑,不受标题限制。
- SEO友好:
description字段本身就是用于SEO描述的,一箭双雕。
操作步骤:
-
发布文章时填写摘要 在后台发布或编辑文章时,在编辑器下方找到 “ 这个输入框,填入你想要显示的精简标题。
-
在前台模板中调用 在你的模板文件(如
index.htm,list_article.htm等)中,使用织梦的标签来调用这个字段。-
调用文章摘要的标签:
{dede:field.description function='htmlspecialchars(@me)'/}function='htmlspecialchars(@me)'是一个安全函数,可以防止XSS跨站脚本攻击,强烈建议加上。
-
完整示例(在列表页中调用): 假设你有一个文章列表循环,想在标题位置显示摘要,可以这样写:
{dede:list pagesize='10'} <li> <!-- 优先显示摘要,如果摘要为空,则显示完整标题 --> <a href="[field:arcurl/]"> [field:description function='htmlspecialchars(@me)'/] {dede:if empty="[field:description/]"}<br/>{/dede:if} [field:title/] </a> </li> {/dede:list}这段代码的意思是:先显示
description字段的内容。description为空(empty="[field:description/]"),则换行后显示完整的title。
-
使用自定义字段【功能最强大】
如果你需要对不同的栏目或文章类型使用不同的缩略标题规则,或者想做更复杂的处理,那么添加一个自定义字段是最佳选择。
优点:
- 功能强大:可以结合“字段处理函数”实现非常灵活的标题裁剪。
- 不影响SEO:可以自定义字段名,避免与系统内置字段混淆。
操作步骤:
-
添加自定义字段
- 进入后台【核心】 -> 【内容模型管理】,选择你当前使用的文章模型(通常是“文章”),点击【管理字段】。
- 点击【添加新字段】。
- 字段名称:输入
shorttitle(或你喜欢的名字,必须为英文)。 - 字段提示:输入“缩略标题” (这个会在后台显示)。
- 字段类型:选择“单行文本”。
- 是否为空:选择“是”(允许不填写)。
- 默认值:(可选)留空。
- 保存。
-
在后台填写缩略标题 发布或编辑文章时,在编辑器下方会出现你刚刚添加的“缩略标题”输入框,填入内容。
-
在前台模板中调用 使用织梦的
field标签来调用你的自定义字段。{dede:field.shorttitle /}同样,为了健壮性,可以结合
if标签判断:{dede:list pagesize='10'} <li> <a href="[field:arcurl/]"> {dede:if field.shorttitle != ''} [field:shorttitle /] {else} [field:title /] {/dede:if} </a> </li> {/dede:list}
使用PHP函数自动截取标题【最便捷(但不推荐)】
这种方法不需要在后台做任何额外操作,而是通过PHP代码在前台模板里自动截取完整标题的一部分作为缩略标题。
优点:
- 后台操作简单:发布文章时无需额外填写。
- 自动更新修改后,缩略标题自动随之改变。
缺点:
- 不灵活:截断长度是固定的,无法针对特定文章做特殊处理。
- 可能截断乱码包含中英文混合,使用
cn_substr处理不当可能会出现乱码。 - :如果摘要为空,直接显示截断后的标题,对SEO不友好(因为页面上的标题和
<title>标签里的标题不一致)。
操作步骤:
在模板文件中,使用织梦内置的字符串截断函数 cn_substr。
-
标签语法:
{dede:field.title function='cn_substr(@me, 20)'/}@me:代表原始的title字段内容。20:代表截取的字符长度(一个汉字、一个字母或一个符号都算一个字符)。
-
完整示例(带判断):
{dede:list pagesize='10'} <li> <a href="[field:arcurl/]"> {dede:field.description runphp='yes'} if(@me=='') @me = cn_substr(@me, 20); // 如果摘要为空,则截取标题 {/dede:field.description} </a> </li> {/dede:list}注意:上面的
runphp写法有逻辑错误,正确的写法应该是:{dede:list pagesize='10'} <li> <a href="[field:arcurl/]"> {dede:if empty='[field:description/]'} [field:title function='cn_substr(@me, 20)'/] {else} [field:description function='htmlspecialchars(@me)'/] {/dede:if} </a> </li> {/dede:list}
总结与建议
| 方法 | 优点 | 缺点 | 推荐度 |
|---|---|---|---|
| 文章摘要 | 规范、安全、灵活、SEO友好 | 需要手动在后台填写摘要 | ★★★★★ (最推荐) |
| 自定义字段 | 功能强大,可扩展性好 | 需要手动添加字段,步骤稍多 | ★★★★☆ (功能需求复杂时推荐) |
| 自动截取 | 后台操作简单,自动更新 | 不灵活、可能乱码、影响SEO | ★☆☆☆☆ (不推荐,仅作临时备用) |
最终建议:
对于绝大多数网站,强烈推荐使用方法一(,它完美地平衡了易用性、灵活性和规范性,是织梦CMS的最佳实践。
只有在你的网站有非常特殊的需求,比如需要对不同栏目设置不同的截取长度和规则时,才考虑使用方法二(自定义字段),尽量避免使用方法三(自动截取),因为它带来的问题往往比解决的问题多。
