核心概念:友情链接类型ID是什么?
在DedeCMS中,友情链接可以分类管理,你可以创建“网站合作”、“友情站点”、“资源推荐”等分类,每个分类都有一个唯一的数字ID,这就是“友情链接类型ID”。

- 作用:用于区分和筛选不同类别的友情链接。
- 存储位置:主要存储在数据库的
dede_flinktype表中,而具体的链接信息存储在dede_flink表中,并通过typeid字段与类型表关联。
在后台查看友情链接类型ID
这是最直接、最常用的方法,当你需要知道某个分类的具体ID时,可以按照以下步骤操作:
- 登录织梦后台:使用你的管理员账号登录DedeCMS后台。
- 进入友情链接管理:在左侧菜单栏中,找到并点击 【核心】 -> 【友情链接】。
- 查看类型管理:在友情链接管理页面,你会看到顶部有 【增加类型】、【链接管理】 等选项卡,点击 【增加类型】(或者如果已经有类型,直接查看列表)。
- 定位ID:
- 如果你点击 【增加类型】,在弹出的表单中,通常会有一个 “类型ID” 字段,这个字段是自动生成的,你可以直接看到它的值。
- 如果你已经有多个类型,可以在 【链接管理】 页面的顶部,点击一个下拉菜单(通常默认显示“所有类型”),在下拉列表中,每个类型名称前面通常就会显示其对应的ID数字。“
1- 网站合作”、“2- 友情站点”。
后台管理界面是获取类型ID最便捷的方式。
在前台模板中显示友情链接类型ID
默认情况下,DedeCMS的前台模板是不显示友情链接类型ID的,因为这对普通访客没有意义,但如果你有特殊需求(比如调试或特定布局),可以通过修改模板文件来实现。
方法1:修改官方标签 flink
官方的友情链接调用标签是 {dede:flink},它本身不提供直接输出类型ID的属性,你需要通过修改 include/taglib/flink.lib.php 文件来增加这个功能。

操作步骤:
-
打开文件:使用FTP或文件管理器,打开
/include/taglib/flink.lib.php文件。 -
找到代码段:在文件中找到处理
typeid属性的代码段,通常在else if($type=='textall')附近,你会看到类似$typeids = explode(',', $typeid);的代码。 -
修改代码:在循环
foreach($db->GetAll("SELECT * FROMdede_flinkWHERE typeid='$typeid' ORDER BY id DESC") as $row)内部,将类型ID信息添加到$row数组中,最简单的方法是直接给$row增加一个字段,typeid_show。
(图片来源网络,侵删)在
foreach循环内部,$row数组被赋值之后,添加以下代码:// 将当前typeid值添加到行数据中,方便在模板中调用 $row['typeid_show'] = $typeid;
修改后的代码片段可能看起来像这样:
// ... 前面的代码 ... foreach($db->GetAll("SELECT * FROM `dede_flink` WHERE typeid='$typeid' ORDER BY id DESC") as $row) { // 添加这一行,将typeid暴露给模板 $row['typeid_show'] = $typeid; $row['webname'] = htmlspecialchars($row['webname']); // ... 后面的代码 ... } // ... 后面的代码 ... -
在模板中使用:你可以在你的模板文件(如
footer.htm)中这样调用:{dede:flink type='textall' row='10' typeid='1'} <li> <!-- 显示链接名称和URL --> <a href="[field:url/]" target="_blank">[field:webname/]</a> <!-- 新增:显示该链接所属的类型ID --> <span class="typeid">类型ID: [field:typeid_show/]</span> </li> {/dede:flink}
注意:这是一种“二次开发”或“修改核心文件”的方式,在升级DedeCMS时,这些修改可能会被覆盖,请谨慎操作,并建议提前备份文件。
通过二次开发(PHP代码)获取类型ID
如果你是在开发一个自定义的PHP文件或插件中需要获取友情链接类型ID,你可以直接操作数据库。
获取所有友情链接类型及其ID
<?php
// 引入数据库配置文件,根据你的实际路径调整
// require_once(dirname(__FILE__)."/../include/config_base.php");
// 初始化数据库连接(如果你的环境没有全局连接,需要手动连接)
$dsql = new DedeSql(false);
// 查询所有类型
$dsql->SetQuery("SELECT id, typename FROM `#@__flinktype` ORDER BY id ASC");
$dsql->Execute();
echo "<h2>所有友情链接类型</h2>";
echo "<ul>";
while ($row = $dsql->GetArray()) {
// $row['id'] 就是类型ID
// $row['typename'] 是类型名称
echo "<li>类型ID: " . $row['id'] . " - 类型名称: " . $row['typename'] . "</li>";
}
echo "</ul>";
// 释放连接
$dsql->Close();
?>
根据类型ID获取该分类下的所有友情链接
<?php
// 假设你要获取类型ID为 1 的所有链接
$targetTypeId = 1;
// 初始化数据库连接
$dsql = new DedeSql(false);
// 查询特定类型下的链接
$dsql->SetQuery("SELECT id, webname, url FROM `#@__flink` WHERE typeid = '$targetTypeId' ORDER BY id DESC");
$dsql->Execute();
echo "<h2>类型ID为 $targetTypeId 的友情链接</h2>";
echo "<ul>";
while ($row = $dsql->GetArray()) {
// $row['id'] 是链接ID
// $row['webname'] 是链接名称
// $row['url'] 是链接地址
echo "<li><a href='" . $row['url'] . "' target='_blank'>" . $row['webname'] . "</a></li>";
}
echo "</ul>";
// 释放连接
$dsql->Close();
?>
总结与建议
| 场景 | 推荐方法 | 优点 | 缺点 |
|---|---|---|---|
| 后台查看 | 在后台“友情链接” -> “增加类型”或下拉列表中直接查看。 | 简单、快速、无需修改任何文件。 | 无法在前台展示。 |
| 前台显示 | 修改 include/taglib/flink.lib.php 文件,给 $row 数组增加 typeid_show 字段,然后在模板中调用。 |
灵活,可以自定义前台展示效果。 | 修改核心文件,升级时可能丢失,有一定风险。 |
| 二次开发 | 直接使用PHP代码查询 dede_flinktype 和 dede_flink 数据表。 |
功能强大,适合复杂的逻辑处理。 | 需要一定的PHP和数据库知识。 |
对于绝大多数用户来说,只需要在后台查看类型ID即可,如果你有特殊的前台展示需求,请务必先备份文件再尝试修改 flink.lib.php。
