织梦栏目页加友情链接

99ANYc3cd6
预计阅读时长 20 分钟
位置: 首页 织梦建站 正文

下面我将为你提供两种方法,强烈推荐第一种方法,因为它更灵活、更符合织梦的设计理念,且不会修改核心文件。


使用自定义函数(推荐,最灵活)

这种方法的核心思想是:创建一个自定义函数,来获取指定分类ID下的友情链接,然后在栏目页模板中调用这个函数。

第1步:创建自定义函数文件

  1. 在你的织梦网站根目录下,找到 include/ 文件夹。
  2. include/ 文件夹中,创建一个名为 extend.func.php 的文件。如果这个文件已经存在,则直接打开它进行编辑。
  3. extend.func.php 文件中,添加以下PHP代码:
/**
 * 获取指定分类下的友情链接
 * @param int $typeid 栏目ID
 * @param int $typeid2 二级栏目ID (可选)
 * @param int $linktype 链接类型 (1:文字, 2:图片, 0:所有)
 * @param int $row 显示条数
 * @return string 返回链接HTML代码
 */
function GetFlinksByType($typeid = 0, $typeid2 = 0, $linktype = 0, $row = 10)
{
    global $dsql;
    // SQL查询语句,从dede_flinktype和dede_flink表中获取数据
    // 通过typeid字段关联,确保只获取当前分类下的链接
    $sql = "SELECT a.*,btypename FROM dede_flink as a left join dede_flinktype as b on a.typeid=b.id WHERE (a.typeid='{$typeid}' OR a.typeid='{$typeid2}' OR b.typename like '{$typeid}') ";
    if ($linktype > 0) {
        $sql .= " AND a.linktype = '{$linktype}' ";
    }
    $sql .= " ORDER BY a.aid DESC LIMIT 0, {$row}";
    $dsql->SetQuery($sql);
    $dsql->Execute();
    $text = '';
    while ($row = $dsql->GetArray()) {
        if ($row['linktype'] == 1) { // 文字链接
            $text .= "<a href='{$row['url']}' target='{$row['target']}'>{$row['webname']}</a> ";
        } else if ($row['linktype'] == 2) { // 图片链接
            $text .= "<a href='{$row['url']}' target='{$row['target']}'><img src='{$row['logo']}' alt='{$row['webname']}' /></a> ";
        }
    }
    return $text;
}

代码解释:

  • 这个函数 GetFlinksByType 接收四个参数:栏目ID、二级栏目ID、链接类型和显示数量。
  • 它会查询 dede_flinkdede_flinktype 这两张表。
  • 关键在于 WHERE (a.typeid='{$typeid}' OR a.typeid='{$typeid2}' OR b.typename like '{$typeid}') 这句,它会筛选出属于当前栏目ID的友情链接。
  • 函数会返回一个包含链接HTML代码的字符串。

第2步:在后台添加栏目类型的友情链接

  1. 登录织梦后台。
  2. 进入【核心】 -> 【网站栏目管理】。
  3. 编辑你想要添加友情链接的栏目,新闻中心”栏目,记下它的栏目ID(假设为 5)。
  4. 进入【核心】 -> 【友情链接类型管理】
  5. 点击“增加新类型”,在“类型名称”中输入你刚才的栏目ID(5),然后保存,你可以为不同栏目创建不同的类型。

第3步:在后台添加友情链接并分类

  1. 进入【核心】 -> 【友情链接管理】
  2. 点击“增加新链接”。
  3. 填写友情链接信息:
    • 网站名称:织梦官网”
    • 网址:例如https://www.dedecms.com
    • 类型选择你上一步创建的类型(例如ID为 5 的类型,可能显示为“5”)。
    • Logo:(可选,如果是图片链接)
    • 其他信息:按需填写。
  4. 保存,你可以为这个栏目添加多个链接。

第4步:在栏目页模板中调用

  1. 进入【模板】 -> 【模板管理】
  2. 在左侧选择你网站对应的模板风格。
  3. 找到并点击 【栏目列表页】 对应的模板文件(通常是 list_*.htmlist_5.htm)。
  4. 在你希望显示友情链接的位置,插入以下代码:
<div class="flink">
    <h3>友情链接</h3>
    <div class="flink-content">
        {dede:field name='id' function='GetFlinksByType(@me, 0, 0, 20)'/}
    </div>
</div>

代码解释:

  • {dede:field name='id'}:这是获取当前栏目的ID。
  • function='GetFlinksByType(@me, 0, 0, 20)':这是调用我们第一步创建的自定义函数。
    • @me:代表当前字段的值,也就是当前栏目的ID。
    • 0:第二个参数(二级栏目ID),我们这里用不到,设为0。
    • 0:第三个参数(链接类型),0代表显示所有类型(文字和图片),1只显示文字,2只显示图片。
    • 20:第四个参数(显示条数),你可以根据需要修改。

保存模板文件,然后到前台刷新对应的栏目页,你应该就能看到友情链接了。


修改核心文件(不推荐,有风险)

这种方法直接修改织梦的核心文件,实现起来简单,但会在下次织梦升级时被覆盖,需要重新修改,请谨慎操作。

第1步:修改 flink.lib.php 文件

  1. 打开 include/taglib/flink.lib.php 文件。
  2. 找到 else if($type=='textall') 这段代码(大约在第54行)。
  3. 在它下面,添加一个新的 else if 分支,用于获取指定分类的链接。

修改后的 flink.lib.php 文件关键部分如下:

// ... (前面的代码保持不变) ...
else if($type=='textall')
{
    $row = $dsql->GetOne("SELECT * FROM dede_flinktype");
    $typeid = $row['id'];
    $equery = "SELECT * FROM dede_flink WHERE typeid='$typeid' And ischeck=1 order by pos asc";
    $link = "<a href='".$dblink['url']."' target='".$dblink['target']."'>".$dblink['webname']."</a> ";
}
// ====== 在这里添加新的代码 ======
else if($type == 'typeid')
{
    // 获取typeid参数,如果没有则默认为0
    $typeid = empty($typeid) ? 0 : $typeid;
    $equery = "SELECT * FROM dede_flink WHERE typeid='$typeid' And ischeck=1 order by pos asc";
    $link = "<a href='".$dblink['url']."' target='".$dblink['target']."'>".$dblink['webname']."</a> ";
}
// =================================
else
{
    $equery = "SELECT * FROM dede_flink WHERE ischeck=1 order by pos asc";
    $link = "<a href='".$dblink['url']."' target='".$dblink['target']."'>".$dblink['webname']."</a> ";
}
// ... (后面的代码保持不变) ...

第2步:在后台添加友情链接并分类

这一步与方法一的第2步和第3步完全相同,你需要为栏目创建对应的友情链接类型,并在添加链接时选择该类型。

第3步:在栏目页模板中调用

  1. 同样地,打开栏目列表页模板文件 list_*.htm
  2. 在需要的位置插入调用代码:
<div class="flink">
    <h3>友情链接</h3>
    <div class="flink-content">
        {dede:flink type='typeid' typeid=''}
        {/dede:flink}
    </div>
</div>

代码解释:

  • {dede:flink type='typeid' typeid=''}:我们指定了 type='typeid',这会触发我们刚刚在核心文件中添加的逻辑。
  • typeid='':这个标签的 typeid 属性是必须的,但它本身是空的,织梦的底层解析机制会自动将当前栏目的ID填入这个参数,从而实现调用当前分类的链接。

总结与对比

特性 方法一 (自定义函数) 方法二 (修改核心)
推荐度 ⭐⭐⭐⭐⭐ (强烈推荐) ⭐ (不推荐)
安全性 高,不修改核心文件,安全。 低,修改核心文件,有被黑客利用的风险。
升级影响 无影响,升级后功能依然保留。 升级后会被覆盖,需要重新修改。
灵活性 高,可以自定义函数逻辑,如按类型、数量筛选。 低,逻辑固定,修改后灵活性差。
操作复杂度 稍高,需要创建函数文件。 简单,直接修改一个文件即可。

为了网站的长期稳定和可维护性,请优先选择方法一,虽然多了一个创建函数文件的步骤,但它是一劳永逸的最佳实践。

-- 展开阅读全文 --
头像
织梦列表页调用点击数
« 上一篇 02-27
dede面包屑导航标签
下一篇 » 02-27

相关文章

取消
微信二维码
支付宝二维码

目录[+]