在使用DedeCMS进行内容管理时,有时会遇到需要将子栏目移动到其他栏目的情况。然而,在执行这一操作时,可能会发现“移动”功能的下拉列表中并未显示所有目标栏目。以下是解决这一问题的具体方法,同时通过SEO优化的方式撰写本文,以帮助更多用户找到解决方案。

如果您希望将子栏目移动到其他栏目下,但发现点击“移动”后打开的页面中,“你希望移动到那个栏目?”后的下拉列表仅显示部分选项,并且缺少目标栏目,请按照以下步骤操作:

首先,您需要定位到DedeCMS的后台目录,默认情况下为“dede”。接着,打开“catalog_do.php”文件,找到大约第327行的代码:


$typeOptions = $tl->GetOptionArray(0,0,$channelid);
    

将其修改为:


$typeOptions = $tl->GetOptionArray(0,0,0);
    

完成上述修改后,刷新页面即可看到完整的栏目列表。

 

接下来,我们来了解一下相关的技术背景。

函数“GetOptionArray()”定义在TypeLink.class.php文件中,其主要作用是获取类别列表。以下是该函数的核心代码:


function GetOptionArray($hid=0,$oper=0,$channeltype=0,$usersg=0) {
    return $this->GetOptionList($hid,$oper,$channeltype,$usersg);
}

function GetOptionList($hid=0,$oper=0,$channeltype=0,$usersg=0) {
    return $this->OptionArrayList;
}
    

参数说明:
- $hid:默认选中类目,值为0时表示“请选择类目”或“不限类目”。
- $oper:用户允许管理的类目,值为0时表示所有类目。
- $channeltype:类目的内容类型,值为0时表示不限频道。

通过调整$channeltype参数为0,我们可以确保系统列出所有可用栏目。

 

此外,还可以通过SQL语句直接修改数据库实现相同效果。具体命令如下:


Update `dede_arctype` set reid='目标父栏目ID' where id in(2,3,4,5)
    

请将“目标父栏目ID”替换为您希望移动到的父栏目ID,同时在括号内填写需要移动的子栏目ID。此命令需在DedeCMS的系统SQL命令行工具中执行。

 

总结来说,无论是通过修改PHP代码还是直接操作数据库,都可以有效解决DedeCMS中子栏目移动时下拉列表不完整的问题。希望本文提供的方法能帮助您更高效地管理网站栏目结构。

 

关键词:DedeCMS 栏目移动、栏目管理、GetOptionArray 函数、SQL 修改栏目