field:arcurl 是什么?
field:arcurl 是一个字段标签,它的作用是在循环中(例如文章列表)获取当前这篇文档的完整访问URL(链接地址)。

你需要在文章列表里给每篇文章标题加上一个可以点击的链接,这个链接的地址就是通过 field:arcurl 来获取的。
基本语法和用法
field:arcurl 通常和 {dede:list} 或 {dede:arclist} 这两个列表标签一起使用,因为它必须在循环体内才能获取到“当前文章”的信息。
在 {dede:list} 标签中使用
{dede:list} 是在栏目页中调用该栏目下的文章列表。
示例代码:

{dede:list pagesize='10'}
<li>
<!-- 使用 field:arcurl 作为 a 标签的 href 属性 -->
<a href="[field:arcurl/]">[field:title/]</a>
<span>[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
</li>
{/dede:list}
代码解析:
{dede:list}: 开始一个文章列表循环。<a href="[field:arcurl/]">: 创建一个链接。href="[field:arcurl/]": 这里是核心。[field:arcurl/]会被替换为当前这篇文档的实际URL,可能被替换为https://www.yoursite.com/a/2025/1234.html。
[field:title/]: 显示文章的标题。</a>: 链接结束。{/dede:list}: 循环结束。
在 {dede:arclist} 标签中使用
{dede:arclist 是一个更强大的列表标签,可以跨栏目调用文章,常用于首页、封面页等。
示例代码:
{dede:arclist titlelen='30' row='6'}
<div class="news-item">
<h3><a href="[field:arcurl/]">[field:title/]</a></h3>
<p>[field:description function='cn_substr(@me, 100)'/]...</p>
</div>
{/dede:arclist}
代码解析:

{dede:arclist titlelen='30' row='6'}: 调用6篇文章,标题长度限制为30个字符。<a href="[field:arcurl/]">: 同样,这里使用field:arcurl来获取每篇文章的链接地址。{/dede:arclist}: 循环结束。
field:arcurl 的工作原理(URL生成规则)
理解 field:arcurl 如何生成URL,对于排查问题和自定义网站结构非常重要,织梦的URL主要由以下几个系统设置决定:
-
核心 > 频道设置 > 文档默认html后缀
- 是:生成的URL是
栏目目录/文章ID.html的形式。a/123.html。 - 否:生成的URL是
plus/view.php?aid=文章ID的动态URL形式。plus/view.php?aid=123。
- 是:生成的URL是
-
核心 > 选项 > 是否使用伪静态
- 是:会根据你设置的伪静态规则(通常在后台“系统” -> “系统基本参数” -> “模块设置” -> “伪静态规则”中配置)来生成URL。
a/123.html可能会变成a/123_s.html或其他形式。 - 否:不使用伪静态,URL就是上面第1步生成的形式。
- 是:会根据你设置的伪静态规则(通常在后台“系统” -> “系统基本参数” -> “模块设置” -> “伪静态规则”中配置)来生成URL。
field:arcurl 的值:
它最终输出的URL是 网站根目录 + 栏目目录 + 文章ID + (后缀/伪静态规则) 的组合。
高级用法和常见问题
field:arcurl vs phpurl
很多新手会混淆 field:arcurl 和 phpurl。
| 作用 | 示例值 | 使用场景 | |
|---|---|---|---|
field:arcurl |
获取当前文章的链接 | /a/123.html |
在文章列表中,为文章标题创建链接。 |
phpurl |
获取 plus 目录的URL |
/plus/ |
调用织梦的PHP脚本时使用,例如调用评论 plus/feedback.php。 |
错误示例:
<!-- 错误!这会把所有文章都链接到反馈页面 --> <a href="[field:phpurl/]feedback.php?aid=[field:id/]">[field:title/]</a>
自定义URL(不使用默认的arcurl)
你可能想用其他字段作为链接,或者用外部链接,这时,field:arcurl 就不适用了。
场景A:使用自定义字段作为链接
假设你有一个自定义字段 link,里面存的是外部链接。
{dede:list}
<a href="[field:link/]" target="_blank">[field:title/]</a>
{/dede:list}
场景B:调用跳转链接
织梦有一个功能,可以给文章设置跳转链接,这时,你需要使用 function 来获取这个跳转地址。
{dede:list}
<!-- 如果设置了跳转,则显示跳转链接,否则显示正常链接 -->
<a href="[field:id runphp='yes']
$arcRow = GetOneArchive(@me);
if($arcRow['redirecturl']){
echo $arcRow['redirecturl'];
}else{
echo $arcRow['arcurl'];
}
[/field:id]">[field:title/]</a>
{/dede:list}
这段代码的意思是:先获取当前文章的完整信息,然后判断 redirecturl 字段是否为空,如果不为空(说明设置了跳转),就使用跳转链接;否则,还是使用正常的 arcurl。
SEO优化:使用绝对路径
为了SEO和分享,有时候需要生成带有完整域名(绝对路径)的URL,可以通过 function 来实现。
{dede:list}
<a href="[field:arcurl function='str_replace("..","",$GLOBALS['cfg_basehost'])@me'/]">[field:title/]</a>
{/dede:list}
或者更简单的方式(如果你的织梦版本支持):
{dede:list}
<a href="{dede:field name='arcurl'/}">[field:title/]</a>
{/dede:list}
在一些新版本中,{dede:field name='arcurl'/} 会自动处理为绝对路径。
- 记住:
field:arcurl是在循环体内获取当前文章URL的字段标签。 - 核心用途:为文章列表中的文章标题创建可点击的链接。
- 语法:
<a href="[field:arcurl/]">文章标题</a>。 - 原理:它的值由后台的“文档默认html后缀”和“是否使用伪静态”设置共同决定。
- 进阶:当需要特殊链接(如自定义字段、跳转链接、绝对路径)时,需要结合
function或其他字段来实现。
希望这个详细的解释能帮助你完全理解 field:arcurl 的用法!
