在网站建设中,DeDe系统是一个非常受欢迎的选择。通过使用Channel标签,可以方便地调用栏目信息。然而,默认情况下,Channel标签无法直接调用栏目的description或content属性。为了解决这个问题,我们需要对系统的相关文件进行一些简单的修改。

首先,进入你的程序目录 include\\\\taglib,找到名为 channel.lib.php 的文件。接下来,我们需要在这个文件中查找“sitepath”字段,并在其后面添加 description,content 字段。总共需要修改四处地方。


if($type=='top')
{
    $sql = "SELECT id,typename,typedir,typebigpic,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath,description,content
    From `dede_arctype` WHERE reid=0 And ishidden<>1 order by sortrank asc limit 0, $line ";
}
else if($type=='son')
{
    if($typeid==0) return '';
    $sql = "SELECT id,typename,typedir,typebigpic,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath,description,content
    From `dede_arctype` WHERE reid='$typeid' And ishidden<>1 order by sortrank asc limit 0, $line ";
}
else if($type=='self')
{
    if($reid==0) return '';
    $sql = "SELECT id,typename,typedir,typebigpic,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath,description,content
    FROM `dede_arctype` WHERE reid='$reid' And ishidden<>1 order by sortrank asc limit 0, $line ";
}

//And id<>'$typeid'

$needRel = false;
$dtp2 = new DedeTagParse();
$dtp2->SetNameSpace('field','[',']');
$dtp2->LoadSource($innertext);
//检查是否有子栏目,并返回rel提示(用于二级菜单)
if(preg_match('#:rel#', $innertext)) $needRel = true;

if(empty($sql)) return '';

$dsql->SetQuery($sql);
$dsql->Execute();

$totalRow = $dsql->GetTotalRow();
//如果用子栏目模式,当没有子栏目时显示同级栏目
if($type=='son' && $reid!=0 && $totalRow==0)
{
    $sql = "SELECT id,typename,typedir,typebigpic,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath,description,content
    FROM `dede_arctype` WHERE reid='$reid' And ishidden<>1 order by sortrank asc limit 0, $line ";
    $dsql->SetQuery($sql);
    $dsql->Execute();
}
    

完成上述修改后,保存文件并刷新你的网站页面,你会发现现在可以成功调用栏目的description和content属性了。

这种修改对于提升网站的SEO性能非常有帮助,因为它允许你在导航或其他地方展示更多的栏目相关信息,从而提高用户体验和搜索引擎优化效果。确保每次修改核心文件后都要做好备份工作,以便在出现问题时能够快速恢复。

通过这种方式,你不仅解决了Channel标签无法调用description和content的问题,还增强了网站的功能性和灵活性。