{dede:field.title/}
无论在什么场景下,调用当前文档(文章、栏目等)的标题,最核心、最常用的标签都是 {dede:field.title/}。
这个标签会输出当前页面所对应文档的完整标题。
在不同页面模板中的调用方法
{dede:field.title/} 的使用会根据你所在的页面模板(文章页、列表页、首页等)而有所不同。
页 (article_article.htm)
这是最常见的用法,在文章内容页,{dede:field.title/} 直接调用当前文章的标题。
示例:位置,<h1> 标签中,可以这样写:
<h1>{dede:field.title/}</h1>
效果: 如果你打开的是一篇标题为“DedeCMS标题调用方法详解”的文章,那么页面上就会显示 <h1>DedeCMS标题调用方法详解</h1>。
在栏目列表页 (list_*.htm)
在栏目列表页,{dede:field.title/} 调用的是当前栏目的名称,而不是列表中任何一篇文章的标题。
示例: 在列表页的面包屑导航或页面标题中,可以这样使用:
<h2>栏目:{dede:field.title/}</h2>
效果: 如果你在“技术教程”栏目下,页面就会显示 <h2>栏目:技术教程</h2>。
在首页 (index.htm)
在首页模板中直接使用 {dede:field.title/},它通常调用的是网站后台“系统设置” -> “系统基本参数” -> “站点信息”中的“站点名称”。
示例:
在首页的 <title> 标签中:
效果: 假设站点名称是“我的DedeCMS网站”,那么首页标题就会显示“我的DedeCMS网站 - 副标题”。
常用属性和技巧
仅仅使用 {dede:field.title/} 可能无法满足所有需求,DedeCMS标签支持属性来修改输出。
function 属性:对标题进行处理
这是最强大的属性,可以对标题进行裁剪、过滤HTML标签等操作。
示例1:截取标题(适用于列表页标题显示)
在列表页循环中,你可能不希望显示完整的超长标题,可以在 {dede:arclist} 标签内使用 function='html2text(@me)' 先过滤掉HTML标签,再用 cn_substr(@me, 20) 截取前20个字符。
{dede:arclist titlelen='50' row='10'}
<li>
<a href="[field:arcurl/]">[field:title function='cn_substr(html2text(@me), 20)'/]...</a>
</li>
{/dede:arclist}
html2text(@me): 将标题中的HTML标签(如<b>,<i>)纯文本化。cn_substr(@me, 20): 从处理后的文本中截取前20个字符。- 手动添加省略号。
示例2:去除标题中的特殊字符
里会包含一些你不希望显示的字符,可以用 str_replace 函数替换掉。
{dede:field.title function='str_replace("特殊字符", "", @me)'/}
maxlength 属性:直接截取标题
这是 function='cn_substr(@me, N)' 的简写形式,非常方便。
示例: 在文章页调用标题,但最多只显示30个字符。
<h1>{dede:field.title maxlength='30'/}</h1>
注意: maxlength 不会过滤HTML标签,如果标题本身有HTML标签,截断可能会导致标签错乱,所以更推荐使用 function 属性。
style 属性:定义样式
标签添加CSS样式。
<h1 style="color: #f00; font-size: 24px;">{dede:field.title/}</h1>
高级应用:在自定义循环中调用标题
除了在固定页面模板中,你还可以在 {dede:arclist} (文章列表)、{dede:sql} (SQL查询) 等循环标签中调用特定文章的标题。
在 {dede:arclist} 中调用
这是最常见的需求,在首页或自定义列表页循环显示文章列表。
字段: [field:title/]
示例: 在首页调用最新的5篇文章,并显示标题和链接。
{dede:arclist row='5' titlelen='30'}
<div class="news-item">
<a href="[field:arcurl/]" title="[field:fulltitle/]">[field:title/]</a>
<span class="date">[field:pubdate function="MyDate('Y-m-d', @me)"/]</span>
</div>
{/dede:arclist}
[field:arcurl/]: 文章链接[field:title/]: 文章标题[field:fulltitle/]: 文章完整标题(常用于a标签的title属性,鼠标悬停时显示完整标题)len='30'直接限制标题显示长度,等同于function='cn_substr(@me, 30)'`
在 {dede:sql} 中调用
当你需要通过自定义SQL语句查询数据时,使用 [field:title/]。
示例: 调用指定栏目ID为1下的所有文章标题。
{dede:sql sql="SELECT title FROM dede_archives WHERE typeid=1"}
<li>[field:title/]</li>
{/dede:sql}
最佳实践与注意事项
-
SEO优化: 文章页的
<title>标签建议设置为“文章标题 - 网站名称”。{dede:global.cfg_webname/}用于调用网站后台设置的站点名称。 -
HTML标签过滤: 如果标题可能包含用户提交的HTML(如加粗、斜体),在列表页显示时,强烈建议使用
function='html2text(@me)'过滤掉,防止样式错乱或XSS攻击。 -
编码问题: 确保你的模板文件(
.htm)和DedeCMS后台设置都是UTF-8编码,这样可以完美支持中文,避免乱码。
| 场景 | 核心标签 | 说明 |
|---|---|---|
| 页 | {dede:field.title/} |
调用当前文章的完整标题。 |
| 栏目列表页 | {dede:field.title/} |
调用当前栏目的名称。 |
| 网站首页 | {dede:field.title/} |
通常调用后台设置的“站点名称”。 |
| 文章列表循环 | [field:title/] |
在 {dede:arclist} 等循环标签中,调用单篇文章的标题。 |
希望这份详细的指南能帮助你完全掌握在DedeCMS中调用文档标题的各种方法!
