页(article_article.htm)中调用并链接关键词
这是最核心的需求,通常用于在文章末尾或文章内容中自动为关键词加上链接,指向一个自定义的列表页面(如关键词专题页)。
方法1:使用{dede:field.keywords/}结合str_replace函数(最推荐)
这是最灵活、最常用的方法,它可以在模板中直接处理关键词字符串,将其分割并加上链接。
操作步骤:
-
准备关键词列表页: 你需要一个用来展示所有关键词文章的列表页面,最简单的方法是复制一个列表页模板(如
list_article.htm),重命名为一个新文件,keywords_list.htm。 -
修改
keywords_list.htm: 打开你刚刚创建的keywords_list.htm文件,在适当位置(如{dede:list}标签上方)添加以下代码,用于接收URL传递过来的关键词参数,并作为标题和筛选条件:<h1>关键词:[field:keywords/]</h1> {dede:list pagesize='20' keyword='[field:keywords/]'} <!-- 这里是正常的列表内容 --> <a href="[field:arcurl/]">[field:title/]</a> {/dede:list}注意:
keyword='[field:keywords/]'这句是关键,它告诉列表页只显示包含该关键词的文章,这里的[field:keywords/]指的是URL中传递过来的keywords参数。 -
修改文章内容页模板
article_article.htm: 在你想要显示关键词链接的位置(比如文章末尾),添加以下代码:{dede:field name='keywords' runphp='yes'} if(@me != ''){ $kws = explode(',', @me); @me = ''; foreach($kws as $k){ $k = trim($k); if($k != ''){ // 这里是链接地址,根据你的实际目录结构修改 // urlencode() 函数用于处理中文关键词,防止乱码 @me .= "<a href='/keywords_list.php?keywords=".urlencode($k)."'>".$k."</a> "; } } }else{ @me = '该文章暂无关键词'; } {/dede:field}代码解释:
{dede:field name='keywords' runphp='yes'}:获取文章的关键词字段,并开启PHP运行。explode(',', @me):将关键词字符串(用逗号分隔)分割成一个数组。foreach($kws as $k):遍历这个数组。urlencode($k):对关键词进行URL编码,这是处理中文关键词的关键一步,否则链接会出错。"/keywords_list.php?keywords=":这是你指向关键词列表页的URL。/keywords_list.php是你第1步中创建的模板文件名,请根据你的实际情况修改。@me .= ...:将处理好的链接字符串累加到输出变量@me中。if(@me != ''):判断该文章是否有关键词,如果没有则显示提示信息。
-
创建关键词列表页: 登录DedeCMS后台,在“模板” -> “默认模板管理”中,找到“列表模板管理”。 点击“增加一个自定义列表模板”,模板文件名填写
keywords_list,选择对应的模板风格(如default),模板代码选择你刚才创建的keywords_list.htm文件。 保存后,系统会生成一个名为keywords_list.php的文件。
当你打开任意一篇文章,如果它有关键词,就会在指定位置生成指向关键词专题页的链接。
方法2:使用{dede:tag}标签(如果开启了文章标签功能)
如果你的网站同时使用了DedeCMS的“文章标签”功能,并且希望调用的是标签而不是关键词,可以使用这个方法,它更规范,但需要额外的设置。
操作步骤:
-
确保标签功能正常:在后台“系统” -> “系统基本参数” -> “核心设置”中,确保“使用关键字 as tag”是“是”。
-
页模板中调用:
{dede:tag sort='hot' getall='0' num='5'} <a href="[field:link/]">[field:tagname/]</a> {/dede:tag}标签属性说明:
sort='hot':按标签使用热度排序,可选值:hot(热门),new(最新),rand(随机)。getall='0':0表示调用当前文章的标签,1表示调用全站所有标签。num='5':调用标签的数量。
这种方法的好处是,
[field:link/]会自动生成指向该标签列表页的链接,无需手动构造URL。
在列表页(list_article.htm)或首页调用当前栏目或全局关键词
这个需求相对简单,直接使用DedeCMS提供的标签即可。
调用当前栏目的关键词
在列表页模板 list_article.htm 中,使用:
{dede:field.seotitle /} <!-- 调用栏目SEO标题,通常也包含关键词 -->
{dede:field.keywords /} <!-- 直接调用栏目关键词 -->
调用全站的关键词(在后台设置)
这个关键词是在后台“系统” -> “系统基本参数” -> “站点设置”中填写的“站点关键字”。
在首页模板 index.htm 或任何其他模板中调用:
{dede:global.cfg_keywords/}
总结与对比
| 场景 | 推荐方法 | 优点 | 缺点 |
|---|---|---|---|
| 文章页内链 | 方法1:{dede:field.keywords} + str_replace |
最灵活,可完全自定义链接和样式,适合SEO内链优化。 | 需要手动创建列表页和编写PHP代码,对新手稍复杂。 |
| 文章页调用 | 方法2:{dede:tag} |
规范、方便,如果网站已使用标签功能,这是最佳选择。 | 依赖标签系统,与“关键词”字段是分开的,需要额外维护。 |
| 列表页/首页 | 直接调用{dede:field.keywords}或{dede:global.cfg_keywords/} |
非常简单,一行代码搞定。 | 功能单一,主要用于展示,无法直接生成链接。 |
核心建议:
- 如果你的主要目的是SEO内链优化,强烈推荐使用 方法1,虽然设置步骤多一点,但效果最好,也最可控。
- 如果你的网站已经习惯了使用“文章标签”,并且希望关键词和标签系统打通,方法2 是不二之选。
- 对于简单的展示需求,直接使用基础调用标签即可。
希望这个详细的解答能帮助你解决问题!如果在操作中遇到任何困难,可以随时提问。
