dede友情链接表格循环如何实现?

99ANYc3cd6
预计阅读时长 19 分钟
位置: 首页 DEDE建站 正文

核心SQL语句

无论哪种方法,核心都是对 dede_flink 这张数据表进行查询,以下是该表的主要字段:

dede 友情链接表格循环
(图片来源网络,侵删)
  • id: 链接ID (主键)
  • typename: 链接类型 (1:图片, 2:文字)
  • webname: 网站名称
  • url: 网站地址
  • logo: Logo图片地址
  • msg: 备注信息
  • typeid: 链接分类ID (如果使用了分类功能)
  • ischeck: 是否通过审核 (1:是, 0:否)
  • orderid: 排序号 (数字越大越靠前)

直接使用SQL标签(最基础)

这是最直接的方法,适用于简单的、不需要复杂逻辑的场景,在Dede的模板文件(.htm)中使用 {dede:sql}

场景:在首页的某个位置,直接调用所有已审核的友情链接。

代码示例:

<div class="friend-links">
    <h3>友情链接</h3>
    <ul>
        {dede:sql sql="SELECT id, webname, url, logo, typename FROM dede_flink WHERE ischeck = 1 ORDER BY orderid ASC"}
            <li>
                [field:typename function="(@me == 1) ? '<a href=\"~url~\" target=\"_blank\"><img src=\"~logo~\" alt=\"~webname~\" /></a>' : '<a href=\"~url~\" target=\"_blank\">~webname~</a>' /]
            </li>
        {/dede:sql}
    </ul>
</div>

代码解析:

  1. {dede:sql sql="..."}:执行自定义的SQL查询。
  2. SELECT id, webname, url, logo, typename FROM dede_flink WHERE ischeck = 1 ORDER BY orderid ASC
    • WHERE ischeck = 1:只调用审核通过的链接。
    • ORDER BY orderid ASC:按 orderid 字段升序排列(数字小的在前)。
  3. [field:typename function="..." /]:这是关键,它调用了 typename 字段,并使用PHP函数进行判断。
    • function="(@me == 1) ? '...' : '...'":这是一个三元运算符。
    • @me(即当前行的 typename 值)等于 1(表示图片链接),则执行 '<a href=\"~url~\" target=\"_blank\"><img src=\"~logo~\" alt=\"~webname~\" /></a>'
    • 如果不等于 1(表示文字链接),则执行 '<a href=\"~url~\" target=\"_blank\">~webname~</a>'
  4. ~url~, ~webname~, ~logo~:这是DedeSQL标签中字段的特殊调用方式,等同于 [field:url/]

使用Dede自带的友情链接标签(推荐)

DedeCMS内置了专门的友情链接标签 {dede:flink},这是最官方、最稳定、也最推荐的方法,因为它更符合Dede的底层逻辑,并且可以方便地调用分类。

dede 友情链接表格循环
(图片来源网络,侵删)

场景:调用所有链接,或者调用指定分类ID的链接。

调用所有已审核的友情链接

<div class="friend-links">
    <h3>友情链接</h3>
    <ul>
        {dede:flink row='20' type='text'}
            <li><a href="[field:url/]" target="_blank">[field:webname/]</a></li>
        {/dede:flink}
    </ul>
</div>

调用指定分类的友情链接

假设你后台的友情链接分类中,"网站"分类的ID是 1,"个人"分类的ID是 2

dede 友情链接表格循环
(图片来源网络,侵删)
<div class="friend-links">
    <h3>网站友情链接</h3>
    <ul>
        {dede:flink typeid='1' row='10' type='text'}
            <li><a href="[field:url/]" target="_blank">[field:webname/]</a></li>
        {/dede:flink}
    </ul>
    <h3>个人友情链接</h3>
    <ul>
        {dede:flink typeid='2' row='10' type='text'}
            <li><a href="[field:url/]" target="_blank">[field:webname/]</a></li>
        {/dede:flink}
    </ul>
</div>

{dede:flink} 标签常用属性:

  • typeid: 分类ID,多个ID用逗号隔开,如 typeid='1,2',不写则调用所有分类。
  • row: 调用条数,如 row='20' 表示调用20条。
  • type: 链接类型。
    • text: 只调用文字链接。
    • image: 只调用图片链接。
    • self: 调用所有类型的链接(默认值),len 网站名称长度,如titlelen='20'`,超过长度的部分用省略号代替。
  • linktype: 链接类型(与 type 类似,但 type 更常用)。
  • orderby: 排序方式,默认是 orderid(后台设置的顺序),也可以使用 rand(随机排序)。

结合PHP和SQL(最灵活)

当Dede自带的标签无法满足复杂需求时(需要自定义查询逻辑、进行二次开发或整合到其他系统中),可以在PHP文件中直接执行SQL并循环输出。

场景:在自定义的PHP页面中,获取友情链接数据并渲染成HTML。

步骤:

  1. 找到并打开你的PHP文件index.php 或自定义的 my_page.php)。
  2. 引入Dede核心文件,以使用其数据库连接和函数。
  3. 编写SQL查询并循环处理

代码示例 (my_page.php):

<?php
require_once (dirname(__FILE__) . "/include/common.inc.php"); // 引入Dede核心文件
// 1. 准备SQL查询
$sql = "SELECT id, webname, url, logo, typename 
        FROM dede_flink 
        WHERE ischeck = 1 
        ORDER BY orderid ASC";
// 2. 执行查询,获取结果集
$dsql->SetQuery($sql);
$dsql->Execute();
// 3. 循环输出结果
echo '<div class="friend-links">';
echo '<h3>友情链接</h3>';
echo '<ul>';
while($row = $dsql->GetArray())
{
    $link_id = $row['id'];
    $webname = $row['webname'];
    $url = $row['url'];
    $logo = $row['logo'];
    $typename = $row['typename'];
    // 判断是图片链接还是文字链接
    if ($typename == 1) {
        // 图片链接
        echo "<li><a href=\"{$url}\" target=\"_blank\"><img src=\"{$logo}\" alt=\"{$webname}\" /></a></li>";
    } else {
        // 文字链接
        echo "<li><a href=\"{$url}\" target=\"_blank\">{$webname}</a></li>";
    }
}
echo '</ul>';
echo '</div>';
// 关闭数据库连接(可选,Dede脚本结束时通常会自动关闭)
$dsql->Close();
?>

总结与建议

方法 优点 缺点 适用场景
SQL标签 灵活,可以直接写任何SQL语句。 语法稍复杂,可读性较差,安全性需要注意(防止SQL注入)。 简单调用,或在模板中快速实现一些Dede标签无法完成的功能。
自带标签 最推荐,官方支持,稳定,标签属性丰富,易于使用和维护。 灵活性相对较低,无法执行非常复杂的自定义SQL。 绝大多数情况,尤其是在模板文件中调用友情链接。
PHP+SQL 最灵活,可以结合PHP的强大功能,实现任何复杂逻辑。 需要修改PHP文件,对新手不友好,不适合模板层直接使用。 自定义页面开发、二次开发、与其他系统集成等。

给你的建议:

  • 如果你只是想在模板页面里展示友情链接,请直接使用 方法二 ({dede:flink}),这是最标准、最不容易出错的方式。
  • 如果你想在模板里做一些简单的判断和循环方法一 ({dede:sql}) 可以胜任。
  • 如果你正在开发一个功能模块,需要处理数据,请使用 方法三 (PHP+SQL)
-- 展开阅读全文 --
头像
c语言 在windows输出
« 上一篇 02-08
如何解决DedeCMS投稿提示不支持问题?
下一篇 » 02-08

相关文章

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