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

步骤 1:修改核心函数文件
织梦的文章列表数据由 include/taglib/arclist.lib.php 文件处理,我们需要修改这个文件,让它在生成链接时自动添加 target="_blank" 属性。
-
找到文件: 通过FTP或你的主机控制面板,进入织梦后台的安装目录,找到并打开以下文件:
include/taglib/arclist.lib.php -
定位代码: 在该文件中,找到处理链接的代码,通常在
GetArcList函数内,寻找类似$row['url'] = ...的行,织梦V5.7及更高版本中,这部分代码大致在第320行左右(不同版本可能略有差异)。你会找到类似下面这样的代码:
(图片来源网络,侵删)//处理链接 $row['url'] = $row['arcurl']; if($row['redirecturl']){ $row['url'] = $row['redirecturl']; } -
修改代码: 在找到的代码块下面,添加一行代码,用于给链接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来隐藏这个参数,让链接看起来和原来一样。

-
找到CSS文件: 通常在你的模板目录下的
style.css文件中,或者在织梦后台的“默认模板管理”里修改。 -
添加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} 标签的地方,文章链接都会在新窗口打开了。
其他方法
直接修改模板标签(适用于特定位置)
如果你只想让某一个特定位置的文章列表新窗口打开,而不影响全站,可以直接在模板文件里修改标签。
-
找到模板文件:你想修改首页的文章列表,就找到
templets/default/index.htm文件。 -
修改
{dede:arclist}:在标签内添加channelid和typeid属性,并指定一个临时的、不存在的栏目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)中,文章正文里“阅读更多”或“相关文章”等链接的打开方式。
-
找到模板文件:
templets/default/article_article.htm -
修改对应标签:找到调用这些链接的标签,
{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) 是最佳选择,它最规范,也最能保证网站的长期维护性,操作时请务必小心,修改前备份原文件,以防出错。
