织梦新窗口文章链接如何设置?

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

核心方法:修改文章列表模板 (arclist.lib.php 和模板标签)

这是最标准、最推荐的方法,因为它能确保所有通过 {dede:arclist} 标签调用的文章列表(包括首页、列表页、相关文章等)都遵循新窗口打开的规则。

织梦 新窗口文章链接
(图片来源网络,侵删)

步骤 1:修改核心函数文件

织梦的文章列表数据由 include/taglib/arclist.lib.php 文件处理,我们需要修改这个文件,让它在生成链接时自动添加 target="_blank" 属性。

  1. 找到文件: 通过FTP或你的主机控制面板,进入织梦后台的安装目录,找到并打开以下文件: include/taglib/arclist.lib.php

  2. 定位代码: 在该文件中,找到处理链接的代码,通常在 GetArcList 函数内,寻找类似 $row['url'] = ... 的行,织梦V5.7及更高版本中,这部分代码大致在第320行左右(不同版本可能略有差异)。

    你会找到类似下面这样的代码:

    织梦 新窗口文章链接
    (图片来源网络,侵删)
    //处理链接
    $row['url'] = $row['arcurl'];
    if($row['redirecturl']){
        $row['url'] = $row['redirecturl'];
    }
  3. 修改代码: 在找到的代码块下面,添加一行代码,用于给链接URL后面附加 target="_blank" 参数。

    修改后的代码块应该看起来像这样:

    //处理链接
    $row['url'] = $row['arcurl'];
    if($row['redirecturl']){
        $row['url'] = $row['redirecturl'];
    }
    // 新增:强制所有arclist链接在新窗口打开
    $row['url'] .= (strpos($row['url'], '?') === false ? '?' : '&') . 'target=_blank';

    代码解释

    • $row['url'] .= ...:表示在原有的URL末尾追加内容。
    • (strpos($row['url'], '?') === false ? '?' : '&'):这是一个巧妙的三元运算符,它检查URL中是否已经包含 (即是否已有其他参数)。
      • 如果没有 ,就追加 。
      • 如果已经有 ,就追加 &
      • 这样可以确保URL参数格式正确。
    • target=_blank:这就是我们要传递的参数。

步骤 2:修改CSS样式(可选但推荐)

直接在URL后面加参数可能会导致链接显示为 .../article.php?id=123&target=_blank,这不太美观,我们可以通过CSS来隐藏这个参数,让链接看起来和原来一样。

织梦 新窗口文章链接
(图片来源网络,侵删)
  1. 找到CSS文件: 通常在你的模板目录下的 style.css 文件中,或者在织梦后台的“默认模板管理”里修改。

  2. 添加CSS规则: 在CSS文件中添加以下规则:

    /* 织梦新窗口打开链接样式 */
    a[target="_blank"]::after {
        content: ""; /* 可以在这里添加一个外部链接的小图标, content: "↗"; */
        margin-left: 3px;
        /* 如果需要图标,可以这样写:
        content: "";
        display: inline-block;
        width: 12px;
        height: 12px;
        background-image: url('/images/ext_link.png');
        background-size: contain;
        vertical-align: super;
        */
    }

    注意:这里的 target="_blank" 是浏览器解析URL参数后生成的HTML属性,所以我们用CSS选择器 a[target="_blank"] 来定位这些链接,并给它们加上一个特殊样式(比如一个小箭头),让用户知道这个链接会在新窗口打开。

步骤 3:清除缓存

完成以上修改后,务必清除织梦的缓存,否则看不到效果。

  • 后台清除:登录织梦后台 -> “系统” -> “清除缓存” -> “一键更新网站缓存”。
  • 浏览器清除:按 Ctrl + F5 强制刷新你的网站页面。

所有使用 {dede:arclist} 标签的地方,文章链接都会在新窗口打开了。


其他方法

直接修改模板标签(适用于特定位置)

如果你只想让某一个特定位置的文章列表新窗口打开,而不影响全站,可以直接在模板文件里修改标签。

  1. 找到模板文件:你想修改首页的文章列表,就找到 templets/default/index.htm 文件。

  2. 修改 {dede:arclist}:在标签内添加 channelidtypeid 属性,并指定一个临时的、不存在的栏目ID。

    {dede:arclist typeid='999' channelid='1' row='8'}
    <li>
        <a href="[field:arcurl/]" title="[field:title/]" target="_blank">[field:title/]</a>
    </li>
    {/dede:arclist}

    注意

    • 这种方法不推荐,因为它绕过了核心逻辑,且需要手动维护一个无效的栏目ID。
    • 最直接的方式是直接给 <a> 标签加上 target="_blank" 属性,如上所示,但这只对当前模板文件有效。

修改文章内容页(文章详情页)的链接

如果你想修改文章内容页(article_article.htm)中,文章正文里“阅读更多”或“相关文章”等链接的打开方式。

  1. 找到模板文件templets/default/article_article.htm

  2. 修改对应标签:找到调用这些链接的标签,{dede:likearticle/} 或其他自定义的标签,在其 <a> 标签上直接添加 target="_blank"

    修改相关文章标签:

    {dede:likearticle row='10'}
    <li><a href="[field:arcurl/]" target="_blank">[field:title/]</a></li>
    {/dede:likearticle}

总结与推荐

方法 优点 缺点 适用场景
修改 arclist.lib.php 一劳永逸,全站统一,符合织梦逻辑 需要修改核心文件,有一定技术门槛 强烈推荐,适用于绝大多数情况
修改模板标签 灵活,只影响特定位置 需要手动修改每个模板,不统一 只想让某个栏目或某个页面特殊处理时
页模板 精确控制内容页内的链接 页有效 需要单独设置文章详情页内的链接行为

对于绝大多数用户来说,方法一(修改 arclist.lib.php 是最佳选择,它最规范,也最能保证网站的长期维护性,操作时请务必小心,修改前备份原文件,以防出错。

-- 展开阅读全文 --
头像
织梦会员注册如何新增自定义字段?
« 上一篇 今天
dede如何申请友情链接?
下一篇 » 今天

相关文章

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