dede属性样式标签如何正确使用?

99ANYc3cd6
预计阅读时长 15 分钟
位置: 首页 DEDE建站 正文
  1. dede:field 标签的 style 属性:用于对单个字段内容进行简单的样式处理,比如截取、加粗、颜色等。
  2. dede:arclist / dede:list 等列表标签的 style 属性:用于控制列表的显示样式,特别是调用不同自定义栏目时的布局切换。

我会分点详细说明,并提供清晰的示例。

dede属性样式标签
(图片来源网络,侵删)

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:调用自定义字段并处理

dede属性样式标签
(图片来源网络,侵删)

假设你有一个自定义字段 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:首页不同板块调用不同样式的文章列表

dede属性样式标签
(图片来源网络,侵删)

假设首页有两个板块:“最新资讯”和“热门推荐”,它们的布局可能不同。

  1. 创建不同的模板文件

    • /templets/default/ 目录下,创建两个新的列表项模板文件:
      • list_item_news.htm (用于最新资讯,可能只有标题和日期)
      • list_item_hot.htm (用于热门推荐,可能包含标题、摘要和阅读量)
  2. 在首页模板中使用 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>
  3. 编写模板文件内容

    • 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 根据不同需求,调用不同的列表项模板文件,实现多样化布局。

最佳实践建议:

  1. 明确区分:首先要清楚你用的是 dede:field 还是列表标签,它们的 style 属性功能完全不同。
  2. 功能优先:对于 dede:field,优先使用 style 的功能指令来简化模板逻辑,而不是用 {dede:if} 等复杂判断。
  3. 命名规范:当为列表标签创建 style 模板文件时,使用有意义的文件名,如 list_item_product.htmlist_item_news_thumb.htm,方便后期维护。
  4. 避免滥用:虽然 style 很强大,但如果列表样式差异不大,直接在标签内部用 class 控制CSS可能更简单。style 属性更适合样式差异巨大的情况。

希望这个详细的解释能帮助你完全理解 DedeCMS 的属性样式标签!

-- 展开阅读全文 --
头像
dede文章列表如何自定义排序规则?
« 上一篇 前天
C语言里如何嵌入C语言?
下一篇 » 前天

相关文章

取消
微信二维码
支付宝二维码

目录[+]