dede友情链接li标签如何自定义样式?

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

使用默认标签 + CSS (最简单、最推荐)

这是最直接的方法,不修改任何模板代码,仅通过 CSS 来调整默认的 HTML 结构,使其显示为 <li> 样式。

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

模板代码 (保持默认)

在你的模板文件(通常是 footer.htm)中,使用默认的友情链接调用代码:

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

CSS 样式 (关键步骤)

在你的 CSS 文件中,通过 CSS 选择器来隐藏默认的 <dl>, <dt>, <dd> 标签,并给 <a> 标签添加 <li> 的样式。

dede友情链接 li
(图片来源网络,侵删)
/* 隐藏默认的 dl, dt, dd 标签 */
.flink dl,
.flink dt,
.flink dd {
    display: none; /* 或者 margin: 0; padding: 0; */
}
/* 将 <a> 标签显示为列表项样式 */
.flink a {
    display: inline-block; /* 或者 display: block; */
    margin: 5px 10px 5px 0;
    padding: 5px 10px;
    border: 1px solid #ddd;
    border-radius: 4px;
    text-decoration: none;
    color: #333;
    transition: all 0.3s ease;
}
.flink a:hover {
    border-color: #007bff;
    color: #007bff;
}

优点:

  • 无需修改模板:升级 DedeCMS 时,模板文件不会被覆盖,样式设置得以保留。
  • 简单快捷:只需要添加几行 CSS 代码。
  • SEO 无影响:HTML 结构依然是符合规范的,只是被 CSS 隐藏了。

修改 include/taglib/flink.lib.php 文件 (灵活,但需注意升级)

如果你不希望使用 <dl> 结构,并且希望 {dede:flink} 直接输出 <li>,你需要修改 DedeCMS 的核心库文件。

⚠️ 重要提示: 修改核心文件意味着在下次升级 DedeCMS 时,你需要重新修改这个文件,请务必备份原文件。

定位文件 文件路径:/include/taglib/flink.lib.php

修改代码 打开 flink.lib.php 文件,找到第 87 行左右的代码(根据版本可能略有不同):

修改前 (默认代码):

// ... 前面代码 ...
$artlist = "<dl class=\"friendlink\">\r\n";
// ... 中间循环代码 ...
$artlist .= "    <dd><a href='".$row['url']."' target='".$row['target']."'>".$row['name']."</a></dd>\r\n";
// ... 后面代码 ...
$artlist .= "</dl>\r\n";
return $artlist;

修改后 (改为 <ul><li> 结构):

// ... 前面代码 ...
// 将 <dl> 改为 <ul>
$artlist = "<ul class=\"friendlink-list\">\r\n";
// ... 中间循环代码 ...
// 将 <dd> 改为 <li>
$artlist .= "    <li><a href='".$row['url']."' target='".$row['target']."'>".$row['name']."</a></li>\r\n";
// ... 后面代码 ...
// 将 </dl> 改为 </ul>
$artlist .= "</ul>\r\n";
return $artlist;

模板代码调整

你的模板代码也需要相应调整,去掉默认的 <dl> 结构:

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

CSS 样式

为新的 <ul><li> 添加样式:

.flink-list {
    list-style: none; /* 去掉默认的列表点 */
    padding: 0;
    margin: 0;
}
.flink-list li {
    display: inline-block; /* 让链接在同一行显示 */
    margin: 5px 10px 5px 0;
    padding: 5px 10px;
    border: 1px solid #ddd;
    border-radius: 4px;
}
.flink-list li a {
    text-decoration: none;
    color: #333;
}
.flink-list li a:hover {
    color: #007bff;
}

优点:

  • HTML 结构更清晰:直接输出了语义化的 <ul><li>
  • CSS 更简单:不需要隐藏任何标签,样式直接作用于 <li>

使用自定义函数/标签 (最灵活,适合高级用户)

如果你不想修改核心文件,又想要完全自定义的输出,可以创建一个自定义函数。

创建自定义函数文件 在你的模板目录下创建一个文件,myfunctions.php

编写函数myfunctions.php 中写入以下函数:

/**
 * 自定义友情链接标签,输出 <li> 结构
 * @param string $typeid 链接类型
 * @param int $row 显示数量
 * @return string
 */
function my_flink($typeid = '', $row = 10)
{
    global $dsql;
    $typeid = intval($typeid);
    $row = intval($row);
    $innertext = '';
    $artlist = "<ul class=\"my-flink-list\">\r\n";
    $query = "SELECT * FROM `#@__flink` WHERE ischeck=1";
    if ($typeid > 0) {
        $query .= " AND typeid = '$typeid'";
    }
    $query .= " ORDER BY pos DESC ORDER BY id DESC LIMIT 0, $row";
    $dsql->SetQuery($query);
    $dsql->Execute();
    while ($row = $dsql->GetArray()) {
        $innertext .= "    <li><a href='".$row['url']."' target='".$row['target']."'>".$row['name']."</a></li>\r\n";
    }
    $artlist .= $innertext;
    $artlist .= "</ul>\r\n";
    return $artlist;
}

在模板中调用 在你的模板文件中,引入这个函数文件并调用:

{dede:include file='myfunctions.php'/}
<div class="flink">
    <h3>友情链接</h3>
    {dede:my function='my_flink()'/}
</div>

CSS 样式 与方法二中的 CSS 类似,只需将类名 .friendlink-list 改为 .my-flink-list 即可。

优点:

  • 完全不修改核心:升级无忧。
  • 完全可控:可以随心所欲地修改函数逻辑,比如增加更多参数,改变 HTML 输出结构等。

总结与推荐

方法 优点 缺点 适用场景
方法一 (CSS) 简单、安全、升级无忧 HTML 结构略有不完美,依赖 CSS 绝大多数情况下的首选,特别是对新手和希望网站稳定运行的站长。
方法二 (修改核心) HTML 结构清晰,CSS 简单 升级会覆盖修改,需要重新操作 确定不会频繁升级 DedeCMS,且追求最标准 HTML 结构的开发者。
方法三 (自定义函数) 最灵活、升级无忧 需要一定的 PHP 基础,步骤稍多 对代码有完全控制权,有二次开发需求的高级用户。

对于绝大多数用户,我强烈推荐 方法一,因为它在效果、安全性和易用性之间取得了最佳平衡。

-- 展开阅读全文 --
头像
char转int,如何实现数值转换?
« 上一篇 前天
织梦新闻手机版源码如何获取与使用?
下一篇 » 前天

相关文章

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

目录[+]