如何让DedeCMS自动提取上级栏目的标题、关键词和描述?

DedeCMS 可以通过标签或插件自动获取上级栏目的标题、关键字和描述。

在DEDECMS中,为了确保网站SEO优化的有效性,通常需要在栏目模板中调用栏目的标题、关键字和描述,当个别栏目忘记填写这些信息时,会导致页面上这些重要元素为空,为了解决这个问题,可以通过编程自动获取上级栏目的标题、关键字和描述。

实现步骤

1、修改typelink.class.php文件

打开/include/typelink.class.php文件。

找到代码$this>TypeInfos = $this>dsql>GetOne($query);

在该行代码下方,添加三行新代码,用于自动获取上级栏目的标题、关键字和描述:

“`php

$this>TypeInfos[‘keywords’] = $this>TypeInfos[‘keywords’] ? $this>TypeInfos[‘keywords’] : $this>GetTrueInfos(‘keywords’);

$this>TypeInfos[‘seotitle’] = $this>TypeInfos[‘seotitle’] ? $this>TypeInfos[‘seotitle’] : $this>GetTrueInfos(‘seotitle’);

$this>TypeInfos[‘description’] = $this>TypeInfos[‘description’] ? $this>TypeInfos[‘description’] : $this>GetTrueInfos(‘description’);

“`

这些代码的作用是检查当前栏目的关键字、标题和描述是否为空,如果为空,则通过GetTrueInfos()方法获取上级栏目的信息。

2、增加GetTrueInfos方法

/include/typelink.class.php文件中,增加一个新的方法GetTrueInfos()

“`php

function GetTrueInfos($info = ‘seotitle’) {

$infos = array(‘reid’ => $this>TypeID, $info => ”);

while (empty($infos[$info]) && $infos[‘reid’] != 0) {

$this>dsql>SetQuery("SELECT reid, " . $info . " FROM idea_arctype WHERE id=’" . $infos[‘reid’] . "’");

$infos = $this>dsql>GetOne();

}

if (empty($infos[$info])) {

if ($info == "seotitle") return $GLOBALS[‘cfg_webname’];

if ($info == "keywords") return $GLOBALS[‘cfg_keywords’];

if ($info == "description") return $GLOBALS[‘cfg_description’];

}

return $infos[$info];

}

“`

此方法会逐级向上查找,直到找到非空的标题、关键字或描述为止,如果所有上级栏目都没有设置这些信息,则会返回全局配置中的相应值。

如何让DedeCMS自动提取上级栏目的标题、关键词和描述?

3、保存并更新

完成上述修改后,保存文件并通过后台管理界面进行一键更新,这样,就可以在前台预览到效果了。

示例代码

以下是一个完整的示例代码,展示了如何在栏目模板中调用栏目的SEO标题、关键字和描述:

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF8">
    <title>{dede:field.seotitle/}</title>
    <meta name="keywords" content="{dede:field name='keywords'/}">
    <meta name="description" content="{dede:field name='description' function='html2text(@me)'/}">
</head>
<body>
    <!其他HTML内容 >
</body>
</html>

相关问答FAQs

1、Q: 如果在顶级栏目中也没有设置标题、关键字和描述,会如何处理?

A: 如果顶级栏目中也没有设置这些信息,系统会使用全局配置中的网站名称($cfg_webname)、关键字($cfg_keywords)和描述($cfg_description)作为默认值。

2、Q: 这个方法适用于所有版本的DEDECMS吗?

A: 这个方法在DEDECMS 5.7 SP1版本上测试有效,但在其他版本上未进行全面测试,建议在其他版本上使用时进行充分的测试,以确保兼容性。

DedeCMS 自动获取上级栏目标题、关键字、描述的详细步骤

1. 确认环境

确保您的网站已经安装并配置了DedeCMS,并且已经创建了一些栏目。

2. 准备工作

确定要获取上级栏目信息的栏目ID或标识符。

确保您的PHP环境中已经启用了对DedeCMS的API调用。

3. 获取上级栏目信息

以下是一个PHP示例代码,用于从DedeCMS获取指定栏目的上级栏目的标题、关键字和描述。


<?php
// 引入DedeCMS的配置文件
require_once 'dede/config.php';
// 定义要获取上级栏目信息的栏目ID
$cid = 10; // 假设我们想要获取ID为10的栏目的上级栏目信息
// 获取上级栏目的信息
$arcRow = $dsql>GetOne("SELECT * FROM#@__arctype WHERE id = '$cid'");
// 检查是否存在上级栏目
if ($arcRow['parentid'] > 0) {
    // 获取上级栏目的ID
    $parentid = $arcRow['parentid'];
    // 再次查询上级栏目的详细信息
    $parentArcRow = $dsql>GetOne("SELECT * FROM#@__arctype WHERE id = '$parentid'");
    // 输出上级栏目的标题、关键字和描述
    echo "上级栏目标题: " . $parentArcRow[' typename'] . "<br/>";
    echo "上级栏目关键字: " . $parentArcRow['keywords'] . "<br/>";
    echo "上级栏目描述: " . $parentArcRow['description'] . "<br/>";
} else {
    echo "该栏目没有上级栏目。";
}
?>

4. 解释代码

引入DedeCMS的配置文件,这是必须的,因为DedeCMS使用这个文件来配置数据库连接等。

设置要获取上级栏目信息的栏目ID。

使用$dsql>GetOne函数查询当前栏目的详细信息。

如果当前栏目存在上级栏目(parentid大于0),则查询上级栏目的详细信息。

输出上级栏目的标题、关键字和描述。

5. 注意事项

确保在调用DedeCMS API时,使用正确的数据库前缀(如#@__arctype)。

代码中的数据库操作需要根据您的DedeCMS版本和数据库配置进行调整。

如果您的栏目结构很复杂,可能需要递归查询以获取更深层的上级栏目信息。

步骤和代码示例应该能够帮助您在DedeCMS中自动获取上级栏目的标题、关键字和描述。

原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1167868.html

本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。

(0)
未希新媒体运营
上一篇 2024-10-06 12:06
下一篇 2024-10-06 12:07

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

产品购买 QQ咨询 微信咨询 SEO优化
分享本页
返回顶部
云产品限时秒杀。精选云产品高防服务器,20M大带宽限量抢购 >>点击进入