如何让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

相关推荐

  • 如何安全地将DedeCMS的data目录迁移到Web服务器之外的目录?

    要将DedeCMS的data目录迁移到web目录之外,可以按照以下步骤操作:,,1. 备份原始的data目录,以防万一出现问题可以恢复。,2. 在web目录之外的某个位置创建一个新的data目录,/path/to/new/data。,3. 将原始data目录中的所有文件和文件夹复制到新创建的data目录中。,4. 修改DedeCMS配置文件config.php中的DEDEDATA常量为新data目录的路径,define(‘DEDEDATA’, ‘/path/to/new/data’);。,5. 确保新data目录的权限设置正确,以便DedeCMS可以正常读写文件。,6. 重启Web服务器以使更改生效。

    2024-10-03
    09
  • 如何在DEDECMS中修改文章列表页的tag调用?

    要修改DEDECMS文章列表页调用tag的方法,可以在/include/arc.listview.class.php文件中的GetTopTypeLink()函数里添加如下代码:,,“php,$tagid = $this˃Fields[‘tagid’];,if ($tagid) {, $query = “SELECT tag, COUNT(*) as num FROM #@__taglist WHERE id IN ($tagid) ORDER BY num DESC”;, $dsql˃SetQuery($query);, $result = $dsql˃Execute();, while ($row = $dsql˃GetObject()) {, $tags[] = ”.$row˃tag.”;, }, $tags = implode(‘,’, $tags);, $this˃Fields[‘tag’] = $tags;,} else {, $this˃Fields[‘tag’] = ”;,},“,,这段代码会在文章列表页显示文章对应的标签。

    2024-10-01
    08
  • 如何绕过DeDECMS 5.7中单个标签长度不得超过12字节的限制?

    要修改DeDECMS 5.7中单个标签小于12字节的限制,可以通过修改系统配置文件来实现。具体步骤如下:,,1. 打开DeDECMS 5.7的安装目录,找到include/common.inc.php文件。,2. 使用文本编辑器打开common.inc.php文件,搜索以下代码:,, “php, if(strlen($tag) ˃ 12) {, ShowMsg(‘tags单个标签不能超过12字节!’, ‘1’);, exit;, }, `,,3. 将上述代码中的12改为你想要设置的最大字节数,20。,4. 保存并关闭common.inc.php文件。,5. 重启DeDECMS 5.7网站,使更改生效。,,DeDECMS 5.7中的单个标签限制已经修改为你设置的最大字节数。

    2024-09-30
    010
  • 为什么在使用DedeCMS时会提示Please set request错误?

    Please set ‘request’ in the configuration file.

    2024-10-04
    06

发表回复

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

免费注册
电话联系

400-880-8834

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