dede:field标签的style属性:用于对单个字段内容进行简单的样式处理,比如截取、加粗、颜色等。dede:arclist/dede:list等列表标签的style属性:用于控制列表的显示样式,特别是调用不同自定义栏目时的布局切换。
我会分点详细说明,并提供清晰的示例。

dede:field 标签的 style 属性 (用于内容页)
这个 style 属性主要用于在内容页(article_article.htm)模板中,对文章的某个字段(如标题、作者等)进行格式化处理,它不是 CSS 样式,而是一个功能指令集。
常用 style 功能指令
| 指令 | 说明 | 示例 |
|---|---|---|
textlength='数字' |
截取文本长度,中文按字数,英文按单词。 | style='textlength=20' (截取前20个字符) |
function='函数名' |
调用PHP函数处理字段内容,这是最强大的功能。 | style='function=htmlspecialchars' (转义HTML特殊字符) |
html |
不处理HTML标签,直接输出。 | style='html' (适用于内容摘要等可能含HTML的字段) |
nohtml |
去除所有HTML标签,只保留纯文本。 | style='nohtml' (适用于纯文本摘要) |
trim |
去除字符串首尾的空白字符。 | style='trim' |
mb_strimwidth |
按指定宽度截取字符串,并可以添加后缀。 | style='mb_strimwidth=100,0,..' (截取100个字符,超出用代替) |
使用场景与示例
场景1:文章标题过长,需要截取并显示“...”
页模板(article_article.htm)中,文章标题通常直接用 {dede:field.title/}很长,我们可以这样处理:
<h1>
{dede:field.title style='mb_strimwidth=50,0,..'/}
</h1>
- 解释:
mb_strimwidth=50,0,..表示从第0个字符开始,截取50个字符的宽度,如果原始字符串长度超过50,则在末尾添加 ,这对于保持页面布局美观非常有用。
场景2:description)去除HTML标签 可能包含一些格式标签,但我们想在列表页或相关文章中只显示纯文本。
<p class="summary">
{dede:field.description style='nohtml'/}
</p>
- 解释:
style='nohtml'会确保输出的摘要内容是干净的纯文本,不会破坏页面布局。
场景3:调用自定义字段并处理

假设你有一个自定义字段 video_url,你想直接输出它的值,不做任何转义。
<a href="{dede:field.video_url style='html'/}" target="_blank">观看视频</a>
- 解释:
style='html'确保video_url中的http://等内容能被正确解析为链接,而不是被当作普通文本。
列表标签的 style 属性 (用于列表页和首页)
这里的 style 属性主要用于 dede:arclist(首页/列表页文章调用)和 dede:list(列表页分页)标签,它的主要作用是根据不同的栏目ID,调用不同的模板样式,从而实现同一标签在不同位置显示不同样式的效果。
工作原理
style 属性的值通常是一个指向模板文件名的字符串,当标签被解析时,系统会检查 style 是否指定了值,如果指定了,它会加载并使用该模板文件来渲染列表项,而不是使用默认的样式。
使用场景与示例
场景1:首页不同板块调用不同样式的文章列表

假设首页有两个板块:“最新资讯”和“热门推荐”,它们的布局可能不同。
-
创建不同的模板文件
- 在
/templets/default/目录下,创建两个新的列表项模板文件:list_item_news.htm(用于最新资讯,可能只有标题和日期)list_item_hot.htm(用于热门推荐,可能包含标题、摘要和阅读量)
- 在
-
在首页模板中使用
style属性<!-- 最新资讯板块,调用单列样式 --> <div class="news-section"> <h2>最新资讯</h2> <ul> {dede:arclist typeid='1' row='5' titlelen='30' style='list_item_news.htm'} ... {/dede:arclist} </ul> </div> <!-- 热门推荐板块,调用带摘要的样式 --> <div class="hot-section"> <h2>热门推荐</h2> <ul> {dede:arclist typeid='2' row='4' titlelen='20' orderby='click' style='list_item_hot.htm'} ... {/dede:arclist} </ul> </div> -
编写模板文件内容
-
list_item_news.htm的内容可能很简单:<li> <span class='date'>[field:pubdate function='MyDate('m-d',@me)'/]</span> <a href="[field:arcurl/]">[field:title/]</a> </li> -
list_item_hot.htm的内容可能更丰富:<li> <a href="[field:arcurl/]" class="hot-img"> <img src="[field:litpic/]" alt="[field:title/]"> </a> <div class="hot-info"> <h3><a href="[field:arcurl/]">[field:title/]</a></h3> <p>[field:description function='cn_substr(@me,80)'/]...</p> <span>阅读:[field:click/]</span> </div> </li>
-
通过这种方式,你可以在同一个页面中,使用同一个 {dede:arclist} 标签,通过不同的 style 属性,实现完全不同的展示效果,非常灵活。
总结与最佳实践
| 标签类型 | style 属性作用 |
常用值 | 核心功能 |
|---|---|---|---|
dede:field (内容页) |
功能指令 | textlength, nohtml, html, mb_strimwidth, function |
对单个字段内容进行格式化、截取、过滤等处理。 |
dede:arclist / dede:list (列表页) |
模板文件名 | list_item_xxx.htm |
根据不同需求,调用不同的列表项模板文件,实现多样化布局。 |
最佳实践建议:
- 明确区分:首先要清楚你用的是
dede:field还是列表标签,它们的style属性功能完全不同。 - 功能优先:对于
dede:field,优先使用style的功能指令来简化模板逻辑,而不是用{dede:if}等复杂判断。 - 命名规范:当为列表标签创建
style模板文件时,使用有意义的文件名,如list_item_product.htm、list_item_news_thumb.htm,方便后期维护。 - 避免滥用:虽然
style很强大,但如果列表样式差异不大,直接在标签内部用class控制CSS可能更简单。style属性更适合样式差异巨大的情况。
希望这个详细的解释能帮助你完全理解 DedeCMS 的属性样式标签!
