DedeCMS核心类TypeLink.class.php管理系统(DEDECMS)中的一个重要文件,它主要用于处理和构建网站类目链接,以下是对TypeLink.class.php的详细解析笔记:
一、类的属性
$typeDir:类型目录,用于存储类型相关的信息或文件。
$dsql:数据库查询对象,用于执行SQL查询以获取类目信息。

$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>
需要注意的是,$typelinkObj是TypeLink类的一个实例对象,在使用这个方法之前,你需要先创建一个TypeLink类的实例,并设置好相关的属性值。