如何设置?

99ANYc3cd6
预计阅读时长 14 分钟
位置: 首页 DEDE建站 正文

是什么?

在DedeCMS中,“简略标题”通常指两种情况:

dede内容页简略标题
(图片来源网络,侵删)
  1. 文章栏目页的“列表标题”:在文章列表(栏目页、首页列表)中显示的标题,通常比主标题更短,用于吸引点击和适应布局。
  2. 页的副标题或摘要:在文章内容页内部,有时会希望显示一个比主标题更简短的副标题。

下面我将分别讲解如何处理这两种情况。


修改栏目列表页显示的简略标题

这是最常见的需求,你希望在栏目列表里显示一个简短的标题,但文章内容页的主标题保持不变。

方法1:使用DedeCMS自带的“列表标题”字段(推荐)

这是最标准、最规范的方法,充分利用了DedeCMS的字段功能。

步骤:

dede内容页简略标题
(图片来源网络,侵删)
  1. 添加字段

    • 登录你的DedeCMS后台。
    • 进入 【核心】 -> 【内容模型管理】
    • 点击你正在使用的内容模型(通常是“文章”模型)后面的 【字段管理】
    • 点击 【添加新字段】
    • 字段名称: listtitle (可以自定义,但建议用英文)
    • 字段提示: (后台表单中显示的提示文字)
    • 字段类型: 单行文本
    • 其他选项保持默认或根据需要设置,然后点击 【保存】
  2. 在后台发布文章时填写

    • 现在去发布或修改一篇文章,在编辑页面下方,你会新看到一个“列表标题”的输入框。
    • 在这里填写你希望在栏目列表页显示的简短标题。
    • 文章的“标题”字段保持不变,它将用于内容页的标题。
  3. 修改模板文件

    • 找到你的列表页模板文件,通常是 templets/default/list_article.htm (路径可能因你的模板而异)。

    • 找到原来调用文章标题的代码,它通常是这样的:

      <a href='[field:arcurl/]'>[field:title/]</a>
    • 将其修改为:优先显示 listtitlelisttitle 为空,则显示 title

      <a href='[field:arcurl/]'>
        [field:listtitle function='(@me ? @me : @me)'/]
        <!-- 或者更简洁的写法,但上面那种更明确 -->
        <!-- [field:listtitle/][field:listtitle runphp='yes']if(@me == "") @me = @me; else @me = @me;[/field:listtitle] -->
      </a>
    • 解释[field:listtitle/] 会调用我们新添加的字段,如果这个字段是空的,它就会显示空白,上面的 function='(@me ? @me : @me)' 写法有点绕,更清晰的是用 runphp 判断:

      <a href='[field:arcurl/]'>
      [field:listtitle runphp='yes']
          if(@me == ""){
              @me = @me; // 如果为空,则不显示任何东西,会显示主标题
          }else{
              @me = @me; // 如果不为空,则显示简略标题
          }
      [/field:listtitle]
      </a>
    • 更简单的方法(直接替换):直接用 [field:listtitle/] 替换 [field:title/],然后在后台发布文章时,如果不填写“列表标题”,该字段为空,在页面上就不会显示任何内容,这显然不行,所以最稳妥的方法是使用 PHP判断

    • 正确的PHP判断写法(推荐)

      <a href='[field:arcurl/]'>
        [field:listtitle runphp='yes']
            if(trim(@me) == ''){
                @me = '<span class="main-title">[field:title/]</span>';
            }else{
                @me = '<span class="short-title">' . @me . '</span>';
            }
        [/field:listtitle]
      </a>

      这段代码的意思是:listtitle 字段为空,就调用主 title;如果不为空,就调用 listtitle,你可以给它们加上不同的CSS类以便样式区分。

方法2:使用标题截断函数(不推荐,但有局限性)

如果你不想添加新字段,只想在模板里对主标题进行长度限制,可以使用DedeCMS的内置函数。

步骤:

  1. 找到列表页模板 list_article.htm
  2. 调用代码 <a href='[field:arcurl/]'>[field:title/]</a>
  3. 修改为截断形式
    <a href='[field:arcurl/]'>[field:title function='cn_substr(@me, 20)'/]</a>
    • 解释cn_substr(@me, 20) 是一个PHP函数,表示截取 @me(即当前字段的值,这里是title)的前20个中文字符(一个汉字算一个字符)。

局限性

  • 不灵活都被强制截断到同样长度,可能导致一些标题被截断得不通顺。
  • SEO影响:列表页的标题是SEO的重要部分,截断后的标题可能包含不完整的关键词。
  • 无法自定义:你不能为某篇文章特别指定一个简短的标题。

页显示一个简略的副标题

如果你想在文章内容页(article_article.htm下方或上方显示一个简短的副标题。

方法1:复用“列表标题”字段(推荐)

如果你已经按照情况一的方法添加了 listtitle 字段,那么在内容页模板里调用它就非常简单。

步骤:

  1. 确保已添加 listtitle 字段(参考情况一)。
  2. 页模板 article_article.htm
  3. 下方添加调用代码
    <h1 class="title">[field:title/]</h1>
    {if field:listtitle}
    <h2 class="subtitle">[field:listtitle/]</h2>
    {/if}
    • 解释:这里使用了DedeCMS的 if 条件判断。{if field:listtitle} 的意思是“listtitle 字段不为空”,则执行后面的代码,这样,只有填写了简略标题的文章才会显示副标题,页面更整洁。

方法2:使用文章摘要(不推荐作标题)

有些朋友会想,能不能用文章摘要(description 字段)作为简略标题?

  • 可以,但不推荐
  • 原因description 字段主要用于SEO和文章列表的摘要描述,其内容通常是文章的简介,而不是一个标题,把它当作标题显示在内容页,语义上不通顺,且长度不受控制。
  • 如果非要使用,可以在 article_article.htm 里这样调用:
    <h1 class="title">[field:title/]</h1>
    <p class="summary">[field:description/]</p>

    然后用CSS样式去美化这个 p.summary,让它看起来像副标题。


总结与最佳实践

需求场景 推荐方法 优点 缺点
栏目列表页需要简短标题 方法1:添加listtitle字段,并用PHP判断调用 最规范、最灵活、SEO友好 需要手动添加字段和修改模板,初期稍显复杂
方法2:使用cn_substr函数截断 简单,无需修改数据库 不灵活,可能截断不通顺,影响SEO
description字段作副标题 不推荐 无需新字段 语义不清,内容不受控制,不专业

最终建议:

花几分钟时间,按照 情况一的方法1 为你的网站添加一个 listtitle 字段,这是一个一劳永逸的优化,不仅能完美解决列表页的简略标题问题,还能在内容页、首页等任何地方灵活调用,让你的网站内容管理更加专业和高效。

-- 展开阅读全文 --
头像
dede生成旧主页时如何覆盖原首页?
« 上一篇 03-16
C语言二分法如何高效求解方程根?
下一篇 » 03-16

相关文章

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

目录[+]