织梦列表页关键字如何正确调用?

99ANYc3cd6
预计阅读时长 18 分钟
位置: 首页 织梦建站 正文

修改列表页模板(最常用、最推荐)

这是最标准、最灵活的方法,通过修改列表页的模板文件(通常是 list_article.htm),直接在循环中调用当前文章的关键字。

织梦列表页关键字调用
(图片来源网络,侵删)

步骤 1:打开列表页模板文件

登录织梦后台,进入【模板】->【默认模板管理】,找到您当前使用的栏目列表页模板,list_article.htm,点击后面的【修改】。

步骤 2:找到文章循环标签

在模板文件中,找到文章列表的循环代码,它通常是这样的结构:

{dede:list pagesize='10'}
    <li>
        <a href="[field:arcurl/]">[field:title/]</a>
        <span>[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
        <p>[field:description function='cn_substr(@me, 100)'/]...</p>
        <!-- 在这里添加关键字的调用代码 -->
    </li>
{/dede:list}

步骤 3:添加关键字调用代码

<p> 标签后面(或您希望显示关键字的位置),添加以下代码:

{dede:field name='keywords' runphp='yes'}
    if(@me != ''){
        $kws = explode(',', @me);
        @me = '';
        foreach($kws as $k){
            @me .= '<a href="/plus/search.php?keyword='.urlencode($k).'" target="_blank">'.$k.'</a> ';
        }
    }
    else{
        @me = '';
    }
{/dede:field}

代码解析:

织梦列表页关键字调用
(图片来源网络,侵删)
  1. {dede:field name='keywords' runphp='yes'}

    • name='keywords': 获取当前文章的 keywords 字段值。
    • runphp='yes': 允许在标签内使用PHP代码。
  2. if(@me != '')

    判断关键字字段是否为空,如果为空,则不显示任何内容。

  3. $kws = explode(',', @me);

    织梦列表页关键字调用
    (图片来源网络,侵删)
    • 将获取到的关键字字符串(如 "织梦,SEO,建站")用逗号 分割成一个数组 $kws
  4. foreach($kws as $k)

    • 遍历这个数组,将每个关键字赋值给变量 $k
  5. @me .= '<a href="/plus/search.php?keyword='.urlencode($k).'" target="_blank">'.$k.'</a> ';

    • 这是核心部分,它将每个关键字拼接成一个搜索链接。
    • urlencode($k): 对关键字进行URL编码,防止关键字中包含特殊字符导致链接错误。
    • target="_blank": 让链接在新窗口打开,这是一个良好的用户体验实践。
    • @me .= ...: 将拼接好的链接字符串累加到 @me 变量中,@me 最终会作为标签的输出内容。
  6. else{ @me = ''; }

    如果关键字为空,则将输出内容设置为空字符串。

步骤 4:更新并生成

保存模板文件,然后到后台的【生成】->【一键更新所有栏目】,更新您的列表页即可。

最终效果:

列表页的每一篇文章后面,都会显示类似这样的关键字链接: <a href="/plus/search.php?keyword=织梦" target="_blank">织梦</a> <a href="/plus/search.php?keyword=SEO" target="_blank">SEO</a>


修改PHP源码文件(不推荐,升级会失效)

这种方法通过修改 arc.listview.class.php 文件,让系统在生成列表页时自动将关键字附加到描述或正文后面。注意:此方法会修改核心文件,织梦升级后这些修改会被覆盖,需要重新修改。

步骤 1:找到并打开PHP文件

在您的网站根目录下,找到文件:/include/arc.listview.class.php

步骤 2:找到 GetListPage 函数

在文件中搜索 function GetListPage,找到这个函数。

步骤 3:修改函数内部代码

在函数内找到类似 $this->Fields['description'] = $this->TrimDD($this->Fields['description']); 的代码行,在其后面添加以下代码块:

// 处理关键字,并附加到描述后面
if($this->Fields['keywords'] != ''){
    $kws = explode(',', $this->Fields['keywords']);
    $kws_url = '';
    foreach($kws as $k){
        $kws_url .= '<a href="/plus/search.php?keyword='.urlencode($k).'" target="_blank">'.$k.'</a> ';
    }
    // 将关键字链接附加到描述字段后面
    $this->Fields['description'] .= ' <strong>标签:</strong>'.$kws_url;
}

代码解析:

这段代码的逻辑与方法一中的PHP代码基本相同,它获取当前文章的关键字,生成链接,然后将这些链接附加到 $this->Fields['description'](文章描述)的末尾。

步骤 4:更新并生成

保存文件,然后到后台重新生成列表页。

注意: 这种方法会把关键字加在所有文章描述的末尾,灵活性不如方法一,如果您的描述显示方式不是通过 [field:description],那么可能不会生效。强烈推荐使用方法一


通过自定义函数(高级用法)

如果您的网站有较多自定义需求,或者想在多个地方复用这个“关键字转链接”的功能,可以将其定义为一个自定义函数。

步骤 1:创建自定义函数文件

/include/extend.func.php 文件中(如果不存在则创建一个),添加以下函数:

/**
 * 将文章关键字转换为带链接的标签
 * @param string $keywords 文章关键字
 * @return string 带链接的HTML字符串
 */
function GetKeywordLinks($keywords)
{
    if (empty($keywords)) {
        return '';
    }
    $kws = explode(',', $keywords);
    $links = '';
    foreach ($kws as $kw) {
        $kw = trim($kw);
        if (empty($kw)) continue;
        $links .= '<a href="/plus/search.php?keyword=' . urlencode($kw) . '" target="_blank">' . $kw . '</a> ';
    }
    return $links;
}

步骤 2:在模板中调用

回到您的列表页模板 list_article.htm,在需要显示关键字的地方,使用以下标签调用:

{dede:list pagesize='10'}
    <li>
        <a href="[field:arcurl/]">[field:title/]</a>
        <p>[field:description function='cn_substr(@me, 100)'/]...</p>
        <!-- 调用自定义函数 -->
        [field:keywords function='GetKeywordLinks(@me)'/]
    </li>
{/dede:list}

优点:

  • 代码复用:如果其他页面(如文章内容页 article_article.htm)也需要这个功能,可以直接调用,无需重复写代码。
  • 逻辑分离:将PHP逻辑从模板中分离出来,使模板文件更整洁。
  • 易于维护:如果需要修改链接样式或URL,只需修改 extend.func.php 中的函数即可,所有调用该函数的地方都会生效。

总结与建议

方法 优点 缺点 推荐度
修改列表模板 灵活、标准、安全、升级不失效 需要手动在每个列表页模板中添加 ⭐⭐⭐⭐⭐ (最推荐)
修改PHP源码 自动化,一次修改全站生效 不安全,升级会失效,维护麻烦 ⭐☆☆☆☆ (不推荐)
自定义函数 代码复用、逻辑清晰、易于维护 需要额外创建函数文件,对新手稍复杂 ⭐⭐⭐⭐☆ (高级推荐)

对于绝大多数用户来说,直接使用方法一 是最简单、最直接、最安全的解决方案,如果您有多个模板文件需要修改,或者希望未来能方便地复用此功能,那么方法三是更好的选择,请尽量避免使用方法二。

-- 展开阅读全文 --
头像
织梦百度地图模板哪里能下载?
« 上一篇 02-22
dede admin如何恢复?数据备份是关键吗?
下一篇 » 02-22

相关文章

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

目录[+]