dede如何调用当前文章的关键词?

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

下面我将为你提供最常用和最清晰的几种方法。

dede调用当前文章关键词
(图片来源网络,侵删)

使用传统模板引擎标签(最推荐,最安全)

这是DedeCMS最标准、最安全的方式,因为它直接在模板层面处理,不会涉及到修改PHP文件,对后续升级影响最小。

场景1:在文章内容页(article_article.htm)调用

页,你可以直接使用 {dede:field.keywords /} 标签来获取当前文章的关键词。

示例代码:

<div class="article-keywords">
    <strong>本文关键词:</strong>
    <span>
        {dede:field.keywords runphp='yes'}
            // 这里的 runphp='yes' 允许我们在标签内执行PHP代码
            // $this 是当前字段的值,即关键词字符串
            if(@me != '') {
                // 将关键词字符串(用英文逗号分隔)转换为数组
                $keywords = explode(',', @me);
                // 遍历数组,为每个关键词加上链接
                $result = '';
                foreach($keywords as $keyword) {
                    // 去除关键词两端的空格
                    $keyword = trim($keyword);
                    if($keyword != '') {
                        // 使用Dede的全局函数,为关键词生成一个搜索链接
                        // 'search' 是你网站搜索页面的文件名,通常是 search.php
                        $result .= "<a href='/search.php?keyword=".urlencode($keyword)."' target='_blank'>".$keyword."</a> ";
                    }
                }
                // 将最终结果赋值给 @me,以便在模板中显示
                @me = $result;
            } else {
                // 如果没有关键词,则显示提示信息或留空
                @me = '暂无关键词';
            }
        {/dede:field.keywords}
    </span>
</div>

代码解析:

dede调用当前文章关键词
(图片来源网络,侵删)
  1. {dede:field.keywords /}:获取文章的 keywords 字段值。
  2. runphp='yes':开启PHP执行功能。
  3. @me:这是一个特殊变量,代表当前标签的原始值,它就是关键词字符串,如 "织梦,DedeCMS,教程"。
  4. explode(',', @me):将字符串按英文逗号分割成一个数组。
  5. foreach($keywords as $keyword):遍历数组,为每个关键词生成一个HTML链接。
  6. urlencode($keyword):对关键词进行URL编码,防止关键词中包含特殊字符导致链接错误。
  7. "/search.php?keyword=":这是你网站搜索页面的路径,请根据你的实际情况修改。
  8. @me = $result;:将处理好的HTML字符串重新赋值给 @me,模板引擎会输出它。

简化版(如果不需要链接,只是显示):

<div class="keywords">
    关键词:{dede:field.keywords/}
</div>

场景2:在文章列表页或首页调用当前文章的关键词

这种情况稍微复杂一些,因为列表页模板(如 list_article.htm)循环的是多篇文章,你需要为循环中的每一篇文章获取其关键词。

示例代码(在列表页循环 {dede:list} 内部):

{dede:list pagesize='10'}
    <h3><a href="[field:arcurl/]">[field:title/]</a></h3>
    <p>[field:description function='cn_substr(@me,100)'/]...</p>
    <!-- 在这里调用当前循环文章的关键词 -->
    <div class="keywords">
        标签:
        {dede:field.name='keywords' runphp='yes'}
            if(@me != '') {
                $keywords = explode(',', @me);
                $result = '';
                foreach($keywords as $keyword) {
                    $keyword = trim($keyword);
                    if($keyword != '') {
                        // 注意:这里使用了 {dede:global.cfg_cmsurl/} 来获取网站根目录,更稳健
                        $result .= "<a href='{dede:global.cfg_cmsurl/}/search.php?keyword=".urlencode($keyword)."' target='_blank'>".$keyword."</a> ";
                    }
                }
                @me = $result;
            } else {
                @me = '无';
            }
        {/dede:field.name='keywords'}
    </div>
    <hr />
{/dede:list}

关键点:

dede调用当前文章关键词
(图片来源网络,侵删)
  • {dede:field.name='keywords'}:这种方式明确指定了要获取 keywords 字段,在列表页循环中非常清晰。
  • {dede:global.cfg_cmsurl/}:这是DedeCMS的全局变量,用于获取网站的根目录,比硬编码 更稳健。

使用PHP原生代码(适用于需要复杂逻辑或修改PHP文件的情况)

如果你在自定义的PHP文件中,或者需要更灵活地处理,可以直接使用PHP代码。

步骤1:确保开启PHP标签

在DedeCMS后台,系统 -> 系统基本参数 -> 核心设置 中,找到 “模板引擎禁PHP” 选项,确保它没有被勾选,如果被勾选,模板中的 <?php ... ?> 代码将不会被执行。

步骤2:在模板中直接写PHP

在模板文件(如 article_article.htm)的任意位置,你可以直接嵌入PHP代码。

<div class="article-keywords">
    <strong>本文关键词:</strong>
    <span>
        <?php
        // 1. 获取当前文章的关键词
        // $this 是Dede模板引擎的一个全局对象,代表当前文档
        $keywords = $this->Fields['keywords'];
        if (!empty($keywords)) {
            // 2. 分割关键词
            $keywordArray = explode(',', $keywords);
            // 3. 生成链接
            $resultLinks = array();
            foreach ($keywordArray as $keyword) {
                $keyword = trim($keyword);
                if (!empty($keyword)) {
                    // 使用Dede的内置函数来生成搜索URL,更规范
                    $url = $GLOBALS['cfg_cmsurl'] . "/search.php?keyword=" . urlencode($keyword);
                    $resultLinks[] = "<a href='{$url}' target='_blank'>{$keyword}</a>";
                }
            }
            // 4. 输出结果
            echo implode(' ', $resultLinks);
        } else {
            echo '暂无关键词';
        }
        ?>
    </span>
</div>

PHP代码解析:

  • $this->Fields['keywords']:通过模板引擎的全局对象 $thisFields 属性,可以获取到当前文章的所有字段,包括 keywords
  • empty($keywords):判断关键词是否为空。
  • $GLOBALS['cfg_cmsurl']:这是DedeCMS中定义的全局变量,等同于 {dede:global.cfg_cmsurl/},用于获取网站根目录。

总结与建议

方法 优点 缺点 推荐场景
传统标签 安全、标准、升级无忧、代码与模板分离 逻辑复杂时,标签内代码可读性稍差 绝大多数情况,特别是文章内容页和列表页,这是DedeCMS的最佳实践。
PHP原生 灵活、强大,可以调用任何PHP函数和逻辑 不安全(如果后台设置错误)、可能因升级导致失效 需要在非标准模板位置调用,或进行非常复杂的数据处理时。

对于绝大多数用户,强烈推荐使用【方法一:传统模板引擎标签】,它既安全又符合DedeCMS的设计哲学,能很好地满足日常需求。

-- 展开阅读全文 --
头像
C语言程序开发范例宝典第2版实用案例如何?
« 上一篇 02-05
Win7 64位系统如何安装C语言编译器?
下一篇 » 02-05

相关文章

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

目录[+]