dede list如何直接显示跳转网址?

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

在调用文章列表的标签({dede:list})中,通过额外的SQL查询或者利用function扩展,获取到文章的跳转地址字段,并将其显示出来。

dede list 直接显示跳转网址
(图片来源网络,侵删)

下面我为你提供几种方法,从最推荐到备用方案,并详细说明步骤。


使用自定义模型(最推荐、最灵活)

这是最规范、最强大的方法,它允许你为文章增加一个专门的“跳转网址”字段,并且在前台和后台都能完美支持。

第一步:在后台创建新的模型字段

  1. 登录DedeCMS后台。
  2. 进入【核心】 -> 【内容模型管理】。
  3. 找到你正在使用的模型(文章模型”),点击后面的【管理字段】。
  4. 在字段管理页面,点击【增加新字段】。
  5. 填写字段信息:
    • 字段名称: redirecturl (小写,无空格)
    • 字段类型: 文本(255字符)
    • 字段提示: 跳转网址 (这个会在后台添加文章时显示)
    • 是否为空:
    • 默认值: http:// (可以给一个默认值,方便用户输入)
    • 其他选项:保持默认即可。
  6. 点击【保存】。

你的文章模型里就有了一个新的“跳转网址”字段。

第二步:修改文章模板(article_add.htmarticle_edit.htm

为了让在后台添加或编辑文章时能填写这个新字段,你需要修改两个模板文件,它们位于 /dede/templets/ 目录下。

dede list 直接显示跳转网址
(图片来源网络,侵删)
  1. 打开 article_add.htm (用于新增文章)
  2. 找到类似 <textarea name="body" id="body"></textarea> 的地方(通常是内容编辑器区域)。
  3. 在它前面或后面的合适位置,添加以下代码:
    <tr>
        <td height="24" colspan="2" style="background:#f5f5f5;">
            <strong>跳转网址:</strong>
            <input type="text" name="redirecturl" id="redirecturl" value="http://" style="width:300px;" />
            <span style="color:#888;">(如果填写此项,文章标题点击后将跳转到此网址)</span>
        </td>
    </tr>
  4. 打开 article_edit.htm (用于编辑文章)
  5. 用同样的方法,在合适的位置添加上面那段代码。

这样,在后台添加/编辑文章时,就会出现一个“跳转网址”的输入框。

第三步:修改列表页模板(list_arclist.htm

这是最关键的一步,让前台列表页显示这个网址。

  1. 打开你的列表模板文件,通常位于 /templets/你的栏目目录/ 下,list_1.htm

  2. 找到 {dede:list} 标签包裹的文章循环部分。

    dede list 直接显示跳转网址
    (图片来源网络,侵删)
  3. 在需要显示网址的地方(比如文章标题下方),添加以下代码:

    {dede:list}
    <li>
        <!-- 原有的标题链接 -->
        <h3><a href="[field:arcurl/]">[field:title/]</a></h3>
        <!-- 新增:显示跳转网址 -->
        [field:redirecturl runphp='yes']
        if(@me != 'http://' && @me != ''){
            @me = '<div class="redirect-url">跳转地址:<a href="'.@me.'" target="_blank">'.@me.'</a></div>';
        } else {
            @me = '';
        }
        [/field:redirecturl]
        <!-- 其他信息,如摘要、时间等 -->
        <p>[field:description function='cn_substr(@me, 100)'/]...</p>
        <span>[field:pubdate function='MyDate("Y-m-d", @me)'/]</span>
    </li>
    {/dede:list}

代码解释:

  • [field:redirecturl]:这是调用我们刚刚创建的字段。
  • runphp='yes':允许在标签内执行PHP代码,实现条件判断。
  • if(@me != 'http://' && @me != ''):判断字段值是否不是默认值“http://”并且不为空,如果满足条件,就显示一个包含网址的<div>
  • @me = '...':如果条件满足,就重新赋值给@me,这里是一段HTML代码,用来格式化显示网址。
  • else { @me = ''; }:如果不满足条件(即没有填写跳转网址),就不输出任何内容。
  • target="_blank":建议加上,让跳转链接在新窗口打开,用户体验更好。

第四步:添加CSS样式(可选)

为了让显示的网址更好看,你可以在模板的CSS部分或单独的CSS文件中添加一些样式。

/* 在你的CSS文件中添加 */
.redirect-url {
    margin-top: 5px;
    font-size: 12px;
    color: #666;
}
.redirect-url a {
    color: #0066cc;
    text-decoration: none;
}
.redirect-url a:hover {
    text-decoration: underline;
}

使用附加表(适用于已有大量数据)

如果你的网站已经有很多文章,不想通过修改模型来增加字段,可以使用DedeCMS的“附加表”功能,这个功能本身就包含一个redirecturl字段,你只需要稍作配置即可。

  1. 检查附加表:默认情况下,DedeCMS的附加表dede_addonarticle里就有redirecturl字段,你只需要在后台添加文章时填写它即可。
  2. 修改后台模板:和方法一的第二步一样,修改 article_add.htmarticle_edit.htm,在适当位置添加一个输入框来填写redirecturl
  3. 修改列表页模板:和方法一的第三步完全一样,因为{dede:list}标签在查询主表的同时,也会自动关联查询附加表,所以可以直接使用[field:redirecturl]

这个方法的好处是无需创建新模型,直接利用了系统自带的字段。


直接修改底层(不推荐,有风险)

如果你只是临时使用,或者不想修改任何模板文件,可以尝试直接修改include/arc.listview.class.php文件。但这种方法非常不推荐,因为:

  • 升级DedeCMS后,修改会被覆盖。
  • 修改核心文件容易导致未知错误。
  • 代码耦合度高,不易维护。

如果你非要这么做,步骤如下:

  1. 修改 arc.listview.class.php
    • 找到 GetArcList 函数。
    • 在SQL查询语句中,确保选择了redirecturl字段,通常SQL语句是这样的:
      $query = "SELECT arc.*,tp.typedir,tp.typename,tp.corank,tp.isdefault,tp.defaultname,tp.namerule,
                tp.namerule2,tp.ispart,tp.moresite,tp.siteurl,tp.sitepath
                FROM `{$this->AddTable}` arc LEFT JOIN `dede_arctype` tp ON arc.typeid=tp.id
                WHERE {$this->OrFields} $typeid ORDER BY $orderby $orderWay LIMIT $startrow,$row";

      你需要确保arc.*包含了redirecturl,在MySQL中,会包含所有字段,所以通常没问题,但为了保险,可以显式加上:

      $query = "SELECT arc.id,arc.title,arc.arcurl,arc.redirecturl,tp.typedir,tp.typename,tp.corank,tp.isdefault,tp.defaultname,tp.namerule,tp.namerule2,tp.ispart,tp.moresite,tp.siteurl,tp.sitepath
                ...
  2. 修改列表模板:和方法一的第三步完全一样,在模板中使用[field:redirecturl]
方法 优点 缺点 推荐度
自定义模型 最规范、最灵活、功能强大,可扩展性强 需要修改后台和前台模板,步骤稍多 ⭐⭐⭐⭐⭐ (强烈推荐)
使用附加表 无需创建新模型,直接利用系统自带字段 依赖附加表,不如自定义模型直观 ⭐⭐⭐⭐ (非常推荐)
修改底层 快速,不涉及模板修改 风险高,升级后失效,不易维护 (不推荐,仅作了解)

对于绝大多数用户,强烈建议使用方法一或方法二,它们更安全、更符合DedeCMS的设计理念,也更容易维护。

-- 展开阅读全文 --
头像
C、C语言、E语言,哪个更值得学?
« 上一篇 昨天
织梦mail.class.php漏洞修复方法是什么?
下一篇 » 昨天

相关文章

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

目录[+]