DedeCMS 核心类 TypeLink.class.php 解析,功能与实现详解

DedeCMS核心类TypeLink.class.php包含多个功能,如获取类目链接、生成超链接信息、递归生成链接列表等。

DedeCMS核心类TypeLink.class.php管理系统(DEDECMS)中的一个重要文件,它主要用于处理和构建网站类目链接,以下是对TypeLink.class.php的详细解析笔记:

一、类的属性

$typeDir:类型目录,用于存储类型相关的信息或文件。

$dsql:数据库查询对象,用于执行SQL查询以获取类目信息。

DedeCMS 核心类 TypeLink.class.php 解析,功能与实现详解

$TypeID:类别ID,唯一标识一个类别。

$baseDir:站点根网址,用于构建完整的URL地址。

$modDir:模板目录,存放模板文件的目录路径。

$indexUrl:主页链接地址,用于指向网站的首页。

$indexName:主页链接名,通常是首页的名称或标题。

$TypeInfos:类目信息,包含当前类目的详细信息。

$SplitSymbol:栏目位置的间隔符号,如“”,用于分隔类目名称。

$valuePosition:带连接的类目位置字符串,如“主页 > 国内 > 两会动态 >”。

$valuePositionName:不带连接的类目位置字符串,如“主页 > 国内 > 两会动态”。

$OptionArrayList:类目下拉列表,用于存储可选的类目选项。

二、主要功能及代码解析

功能一:获得某类目的链接

function GetOneTypeUrl($typeinfos) {
    return GetTypeUrl();
}
function GetOneTypeLink($typeinfos) {
    $typepage = $this>GetOneTypeUrl($typeinfos);
    $typelink = "<a href='".$typepage."'>".$typeinfos['typename']."</a>";
    return $typelink;
}

GetOneTypeUrl($typeinfos):根据类目信息获取该分类的URL。

GetOneTypeLink($typeinfos):根据类目信息生成该类目的超链接HTML代码。

功能二:获得某类目的链接列表

function GetPositionLink($islink=true) {
    $indexpage = "<a href='".$this>indexUrl."'>".$this>indexName."</a>";
    if ($islink) {
        $this>valuePosition = $this>GetOneTypeLink($this>TypeInfos);
        if ($this>TypeInfos['reid'] != 0) {
            $this>LogicGetPosition($this>TypeInfos['reid'], true);
        }
        $this>valuePosition = $indexpage . $this>SplitSymbol . $this>valuePosition;
        return $this>valuePosition . $this>SplitSymbol;
    } else {
        $this>valuePositionName = $this>TypeInfos['typename'];
        if ($this>TypeInfos['reid'] != 0) {
            $this>LogicGetPosition($this>TypeInfos['reid'], false);
        }
        return $this>valuePositionName;
    }
}
function LogicGetPosition($id, $islink) {
    $this>dsql>SetQuery("SELECT * FROM dede_archives WHERE reid='$id'");
    $tinfos = $this>dsql>GetOne();
    if ($islink) {
        $this>valuePosition = $this>GetOneTypeLink($tinfos) . $this>SplitSymbol . $this>valuePosition;
    } else {
        $this>valuePositionName = $tinfos['typename'] . $this>SplitSymbol . $this>valuePositionName;
    }
    if ($tinfos['reid'] > 0) {
        $this>LogicGetPosition($tinfos['reid'], $islink);
    }
}

GetPositionLink($islink=true):生成类目的链接列表,可以是带链接的形式(默认)或不带链接的形式。

LogicGetPosition($id, $islink):递归函数,用于生成子类目的链接列表。

功能三:获得类别列表高级搜索功能

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;
}

GetOptionArray($hid=0, $oper=0, $channeltype=0, $usersg=0):获取类别列表,用于高级搜索功能,参数包括默认选中的类目ID、用户权限、内容类型等。

GetOptionList($hid=0, $oper=0, $channeltype=0, $usersg=0):返回类目下拉列表。

功能四:获得与该类相关的类目

function GetChannelList($typeid=0, $reid=0, $row=8, $typetype='sun', $innertext='', $col=1, $tablewidth=100, $myinnertext='') {
    // 具体实现略
}

GetChannelList():根据传入的参数获取与该类相关的类目列表,参数包括类型ID、父ID、每行显示数量、类型(下级、同级、顶级)、内部文本、列数、表格宽度和自定义内部文本等。

TypeLink.class.php是DedeCMS中一个非常重要的核心类,它提供了丰富的方法来处理和构建网站类目链接,通过这个类的学习和使用,开发者可以更好地理解和定制DEDECMS的类目链接系统,从而满足不同的业务需求,该类的设计也展示了递归调用在处理树形结构数据时的强大功能。

四、相关问答FAQs

问:如何在DedeCMS中使用TypeLink.class.php生成一个类目的超链接?

答:在DedeCMS中,可以使用GetOneTypeLink()方法来生成一个类目的超链接,该方法接受一个包含类目信息的数组作为参数,并返回一个带有<a>标签的超链接HTML代码,假设你有一个类目信息数组$typeinfos,你可以这样生成超链接:

$typelink = $typelinkObj>GetOneTypeLink($typeinfos);
echo $typelink; // 输出: <a href="类目链接">类目名称</a>

需要注意的是,$typelinkObjTypeLink类的一个实例对象,在使用这个方法之前,你需要先创建一个TypeLink类的实例,并设置好相关的属性值。