dede文章页如何调用文章短标题?

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

直接使用系统自带的 shorttitle 标签 (最推荐)

这是最简单、最直接的方法,前提是你的文章在发布时已经填写了“短标题”字段。

dede 文章页调用文章短标题
(图片来源网络,侵删)

适用场景:

  • 文章在后台发布时,在“高级选项”里填写了“短标题”。
  • 你没有对系统进行过大的修改,默认的字段都存在。

实现步骤:

  1. 打开文章模板文件 登录你的 DedeCMS 后台,进入【模板】->【默认模板管理】->【文章模板】。 找到你正在使用的文章页模板,通常是 article_article.htm,点击后面的【修改】。

  2. 添加调用代码 在你需要显示短标题的位置,插入以下代码:

    {dede:field name='shorttitle'/}
  3. 保存并更新 保存模板文件,为了让修改生效,你需要:

    • 更新HTML:进入【生成】->【HTML更新】->【更新文档HTML】,选择你想要更新的文章,点击“开始更新”。
    • 或者直接在文章页刷新缓存(如果开启了模板缓存)。

示例:

dede 文章页调用文章短标题
(图片来源网络,侵删)

假设你想让文章的短标题显示在文章标题的下方,可以这样修改模板:

<h1 class="article-title">{dede:field.title/}</h1>
<!-- 在这里调用短标题 -->
<h2 class="article-shorttitle">{dede:field.name='shorttitle'/}</h2>
<div class="article-content">
    {dede:field.body/}
</div>

使用自定义字段 (灵活度最高)

如果你的文章没有填写“短标题”,或者你想用一个全新的名字来定义这个字段(subtitle),使用自定义字段是最佳选择。

适用场景:

  • 后台没有填写“短标题”。
  • 你想要更灵活的字段名称。
  • 需要为旧文章批量添加这个功能。

实现步骤:

  1. 添加自定义字段

    • 进入 DedeCMS 后台【核心】->【内容模型管理】->【普通文章】(或其他你使用的模型) ->【字段管理】。
    • 点击【添加新字段】。
    • 字段名称:输入 shorttitle (或你喜欢的名字,如 subtitle)。
    • 字段提示:输入“文章短标题” (这个会在后台发布文章时显示)。
    • 字段类型:选择“单行文本”。
    • 是否为必填项:根据需要选择。
    • 其他选项保持默认即可,点击【保存】。
  2. 更新文章列表 添加完字段后,需要更新一下数据库结构,进入【系统】->【SQL命令行工具】,执行以下命令:

    dede 文章页调用文章短标题
    (图片来源网络,侵删)
    ALTER TABLE `dede_archives` ADD `shorttitle` VARCHAR(255) NOT NULL DEFAULT '';

    注意:dede_ 是你的数据库表前缀,如果不是请自行修改。

  3. 后台发布/编辑文章 打开任意一篇文章进行编辑或发布,你会发现在“高级选项”或自定义字段区域出现了“文章短标题”的输入框,填入你的短标题内容并保存。

  4. 在模板中调用 打开 article_article.htm 模板文件,使用和第一种方法完全一样的标签来调用:

    {dede:field name='shorttitle'/}

    DedeCMS 会自动识别你添加的自定义字段。


通过修改PHP文件实现 (功能扩展)

如果你希望短标题能自动从长标题中提取,或者有更复杂的逻辑处理,可以通过修改PHP文件来实现,这是一种比较“硬核”的方法。

适用场景:

  • 不想在后台重复填写短标题,需要根据长标题自动生成(只取前20个字符)。
  • 有特殊的数据处理需求。

实现步骤:

  1. 修改PHP文件 找到并打开 /include/extend.func.php 文件,如果这个文件不存在,就新建一个,这个文件是专门用来存放自定义函数的。

    在文件末尾添加以下 PHP 函数:

    /**
     * 获取文章短标题
     * 如果填写了shorttitle字段则优先使用,否则截取长标题的一部分
     * @param string $title 原始标题
     * @param int $length 截取长度,默认为20
     * @return string 短标题
     */
    function GetShortTitle($title, $length = 20)
    {
        // 优先调用系统自带的 shorttitle 字段
        if (isset($GLOBALS['arcid']) && $GLOBALS['arcid'] > 0) {
            $query = "SELECT shorttitle FROM dede_archives WHERE id = '{$GLOBALS['arcid']}'";
            $row = $GLOBALS['dsql']->GetOne($query);
            if (!empty($row['shorttitle'])) {
                return $row['shorttitle'];
            }
        }
        // shorttitle 为空,则截取长标题
        if (mb_strlen($title, 'UTF-8') > $length) {
            return mb_substr($title, 0, $length, 'UTF-8') . '...';
        } else {
            return $title;
        }
    }

    注意:同样,dede_archives 请根据你的数据库表前缀进行修改。

  2. 在模板中调用 打开 article_article.htm 模板文件,使用以下方式调用你刚刚创建的函数:

    {dede:geturl function='GetShortTitle(@me)'/}

    或者,如果你的系统支持更直接的函数调用(取决于版本和配置),也可以尝试:

    [field: function='GetShortTitle(@me, 15)'/]

    但第一种 {dede:geturl} 方式兼容性最好。


总结与推荐

方法 优点 缺点 推荐度
{dede:field name='shorttitle'/} 最简单、最原生、性能最好 依赖后台是否填写了短标题 ⭐⭐⭐⭐⭐ (首选)
自定义字段 最灵活、可扩展性强 需要手动添加字段和更新数据库 ⭐⭐⭐⭐ (次选,适合新项目或改造)
修改PHP文件 功能最强大、可自动化处理 需要修改代码,有一定门槛,升级可能有风险 ⭐⭐ (适合有特殊需求的开发者)

对于绝大多数用户,强烈推荐使用方法一,如果发现后台没有这个字段或者功能不正常,再采用方法二进行补充和扩展。

-- 展开阅读全文 --
头像
dede网站地图为何不显示文章列表?
« 上一篇 01-03
织梦arclist分页如何实现?
下一篇 » 01-03

相关文章

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

目录[+]