dede友情链接下拉框

99ANYc3cd6
预计阅读时长 17 分钟
位置: 首页 DEDE建站 正文
  1. 修改模板文件(推荐,最灵活)
  2. 修改核心文件(一劳永逸,但需要谨慎)

修改模板文件(推荐)

这种方法不需要修改DedeCMS的核心程序,所有逻辑都在模板文件中完成,非常安全且灵活,你可以只在需要显示下拉框的页面使用这个标签。

dede友情链接下拉框
(图片来源网络,侵删)

第1步:在模板文件中创建下拉框HTML结构

在你需要显示友情链接的地方,footer.htm(页脚模板)文件中,添加以下HTML代码。

<div class="flink">
    <h3>友情链接</h3>
    <form action="{dede:global.cfg_cmspath/}/plus/flink.php" method="get" target="_blank">
        <select name="action" onchange="document.location.href=this.options[this.selectedIndex].value;">
            <option value="">-- 选择友情链接 --</option>
            {dede:flink type='text' row='30'}
            <option value="[field:url/]">[field:webname/]</option>
            {/dede:flink}
        </select>
    </form>
</div>

第2步:代码解释

  • <form ...>: 创建一个表单。action 指向了DedeCMS自带的友情链接处理页面 flink.phpmethod="get" 是标准的提交方式。
  • <select ...>: 这是下拉框的主体。
    • onchange="document.location.href=this.options[this.selectedIndex].value;": 这是核心的JavaScript代码,当下拉框的选项改变时,它会自动跳转到所选选项的 value 值(也就是友情链接的网址)。
    • <option value="">-- 选择友情链接 --</option>: 这是一个默认的提示选项,用户点击下拉框时会看到。
  • {dede:flink ...}: 这是DedeCMS的友情链接调用标签。
    • type='text': 表示调用文字形式的链接,虽然我们用的是下拉框,但底层还是调用链接数据,所以这个类型依然适用。
    • row='30': 表示最多调用30个友情链接,你可以根据需要修改这个数字。
    • [field:url/]: 输出友情链接的网址,作为 <option>value 属性。
    • [field:webname/]: 输出友情链接的网站名称,作为下拉框中显示给用户看的内容。

第3步:CSS样式美化(可选)

为了让下拉框更美观,你可以在模板的CSS文件中添加一些样式,在 style.css 中添加:

/* 友情链接下拉框样式 */
.flink select {
    padding: 5px 10px; /* 内边距 */
    font-size: 14px;   /* 字体大小 */
    border: 1px solid #ccc; /* 边框 */
    border-radius: 4px; /* 圆角 */
    background-color: #fff; /* 背景色 */
    cursor: pointer;   /* 鼠标指针变为手型 */
}

修改核心文件(一劳永逸)

如果你希望全站的友情链接调用都默认是下拉框形式,并且不想在每个模板里都写一遍HTML,可以修改DedeCMS的核心文件。修改核心文件后,升级DedeCMS时这些修改可能会被覆盖,所以请务必备份原文件。

第1步:找到核心文件

你需要修改的文件是:/include/taglib/flink.lib.php

dede友情链接下拉框
(图片来源网络,侵删)

第2步:修改文件内容

打开 flink.lib.php 文件,找到 function lib_flink 这段函数代码,默认情况下,它只返回一个简单的列表。

你需要将函数内部的逻辑修改为返回下拉框的HTML代码。

找到类似这样的代码(不同版本可能略有差异):

// ... 前面的代码 ...
    $artlist = "";
    if($type=='text')
    {
        $artlist = "<div class=\"dede-flink\">\n";
        for($i=0; $i<$row; $i++)
        {
            if($dsql->GetRow($dsql->SetQuery("SELECT * FROM `#@__flink` WHERE ischeck=1 ORDER BY id DESC LIMIT $i,1")))
            {
                $dbrow = $dsql->GetRow();
                $artlist .= "<a href='".$dbrow['url']."' target='_blank'>".$dbrow['webname']."</a> \n";
            }
        }
        $artlist .= "</div>";
    }
    else if($type=='pic')
    {
        // ... 图片链接的逻辑 ...
    }
// ... 后面的代码 ...

我们将 type=='text' 部分的代码替换为生成下拉框的代码。

修改后的 type=='text' 部分应该是这样的:

// ... 前面的代码 ...
    $artlist = "";
    if($type=='text')
    {
        // 生成下拉框的HTML
        $artlist = "<select name=\"friend_link\" onchange=\"window.open(this.options[this.selectedIndex].value);\">\n";
        $artlist .= "<option value=\"\">-- 选择友情链接 --</option>\n"; // 默认选项
        // 循环输出友情链接
        for($i=0; $i<$row; $i++)
        {
            if($dsql->GetRow($dsql->SetQuery("SELECT * FROM `#@__flink` WHERE ischeck=1 ORDER BY id DESC LIMIT $i,1")))
            {
                $dbrow = $dsql->GetRow();
                // 将网址和名称作为option的value和显示文本
                $artlist .= "<option value=\"".$dbrow['url']."\">".$dbrow['webname']."</option>\n";
            }
        }
        $artlist .= "</select>";
    }
    else if($type=='pic')
    {
        // ... 图片链接的逻辑保持不变 ...
    }
// ... 后面的代码 ...

第3步:在模板中调用

修改完核心文件后,你现在可以在任何模板文件中,使用非常简洁的标签来调用友情链接下拉框了。

<div class="flink">
    <h3>友情链接</h3>
    {dede:flink type='text' row='20'}
</div>

这样,{dede:flink type='text'} 这个标签就会直接输出一个完整的、功能可用的下拉框了。


总结与建议

特性 方法一 (修改模板) 方法二 (修改核心)
优点 安全,不影响核心程序。
灵活,可以只在特定页面使用。
升级DedeCMS时不会被覆盖。
一劳永逸,全站统一。
模板代码非常简洁。
缺点 需要在每个需要添加的模板文件中重复编写HTML和JS。
如果样式复杂,CSS也需要单独管理。
有风险,修改了核心文件。
升级程序后需要重新修改。
不够灵活,无法定制不同页面的样式。
适用场景 大多数情况,特别是新手或需要定制化设计的网站。 全站风格统一,且不常升级程序的网站。

推荐使用方法一,因为它更安全、更灵活,是Web开发中的最佳实践,只有在确认你确实需要全局统一且不介意修改核心文件时,才考虑使用方法二。

-- 展开阅读全文 --
头像
织梦用户名密码忘记了
« 上一篇 02-26
织梦怎么去掉左上角的
下一篇 » 02-26
取消
微信二维码
支付宝二维码

目录[+]