dede当前文章地址

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

核心标签:{dede:field.arcurl /}

获取当前文章地址最核心、最常用的标签是 {dede:field.arcurl /},这个标签会自动解析并输出当前正在浏览的文章的完整 URL。

dede当前文章地址
(图片来源网络,侵删)

页 (article_article.htm)

这是最简单直接的情况,在文章内容页模板中,你可以直接使用 {dede:field.arcurl /} 来获取当前文章的链接。

示例:

假设你想在文章标题旁边添加一个“复制链接”的按钮。

{dede:field.title/}
<a href="{dede:field.arcurl/}" target="_blank" title="查看原文">复制链接</a>

说明:

dede当前文章地址
(图片来源网络,侵删)
  • {dede:field.title/}:获取当前文章的标题。
  • {dede:field.arcurl/}:获取当前文章的完整 URL,https://www.yourdomain.com/a/2025/1234.html
  • target="_blank":让链接在新标签页中打开,这是一个很好的用户体验实践。

在文章列表页 (list_article.htm)

在列表页中,情况会稍微复杂一些,因为列表页会循环输出多篇文章,你需要使用 {dede:list} 循环标签,并在循环内部使用 {dede:field.arcurl/} 来获取每一篇文章的地址。

示例:

在列表页模板中,你想让每篇文章的标题都指向其对应的文章详情页。

<ul>
  {dede:list pagesize='10'}
    <li>
      <!-- a 标签的 href 属性中使用 {dede:field.arcurl/} -->
      <a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a>
      <span>[field:pubdate function="MyDate('Y-m-d', @me)"/]</span>
    </li>
  {/dede:list}
</ul>

说明:

  • {dede:list}:开始一个文章列表的循环。
  • [field:arcurl/]:在 {dede:list} 循环内部,{dede:field.arcurl/} 可以简写为 [field:arcurl/],它们的作用是完全一样的。
  • [field:title/]:同样,在循环内部获取文章标题。
  • [field:pubdate ...]:获取并格式化文章发布日期。

在其他自定义页面或模型中

如果你在自定义的模型页面(例如产品页、下载页等)或者非标准的页面中需要获取文章地址,方法也是类似的。

自定义模型页面 (如 product.htm)

如果你的自定义模型继承了文章模型(通常都会继承),那么你可以直接使用 {dede:field.arcurl /}

示例:

<h1>{dede:field.title/}</h1>
<p>产品详情页地址:<a href="{dede:field.arcurl/}">{dede:field.arcurl/}</a></p>

在首页、频道页等非列表/内容页

在这些页面,你无法直接使用 {dede:field.arcurl /},因为系统不知道你指的是“哪一篇文章”,你必须通过一个具体的文章记录来获取其 URL。

这时,你需要使用 {dede:arclist}{dede:sql} 标签来查询一篇文章,然后在其循环内部获取它的 URL。

方法 A:使用 {dede:arclist}

<!-- 获取 ID 为 1 的文章的链接 -->
{dede:arclist idlist='1'}
  <a href="[field:arcurl/]" title="[field:title/]">查看指定文章</a>
{/dede:arclist}

方法 B:使用 {dede:sql} (更灵活)

<!-- 获取标题为“关于我们”的文章的链接 -->
{dede:sql sql="Select * from dede_archives where title='关于我们'"}
  <a href="[field:arcurl/]" title="[field:title/]">查看关于我们</a>
{/dede:sql}

常见问题与注意事项 (FAQ)

为什么我的 {dede:field.arcurl /} 输出的是动态链接而不是静态链接?

DedeCMS 的 URL 生成规则由后台设置决定。

  • 检查后台设置:登录 DedeCMS 后台 -> 系统 -> 系统基本参数 -> 核心设置
  • 查看“是否使用伪静态”:这里的选项决定了 URL 的形式。
    • :会生成类似 https://www.yourdomain.com/a/2025/1234.html 的静态链接(前提是你已经配置好了服务器的伪静态规则,如 Nginx 或 Apache 的 rewrite 规则)。
    • :会生成类似 https://www.yourdomain.com/plus/view.php?aid=1234 的动态链接。
  • 检查栏目目录:确保栏目的“目录”一项填写正确,并且目录名不包含中文或特殊字符。

{dede:field.arcurl /}[field:arcurl/] 有什么区别?

  • 作用域不同
    • {dede:field.arcurl /}:通常用在单篇文章内容页 (article_article.htm),此时它处于全局上下文中,不需要循环。
    • [field:arcurl/]:是 {dede:field.arcurl /} 的简写形式,必须用在 {dede:list}{dede:arclist} 等循环标签的内部,用于获取循环中当前项的 URL。
  • 可读性:在循环外部,使用 {dede:field.arcurl /} 更能清晰地表达意图。

如何获取带参数的链接?

有时你可能需要在文章链接后面附加自定义的参数,例如用于追踪来源,你可以通过字符串拼接的方式实现。

示例:

<!-- 在链接后添加 ?source=home 参数 -->
<a href="{dede:field.arcurl/}?source=home">来自首页的链接</a>
<!-- 在链接后添加 #comment 锚点,跳转到评论区 -->
<a href="{dede:field.arcurl/}#comment">发表评论</a>
场景 推荐标签 示例
(article_article.htm) {dede:field.arcurl /} <a href="{dede:field.arcurl/}">查看原文</a>
文章列表页 (list_article.htm) [field:arcurl/] (在 {dede:list} 循环内) <a href="[field:arcurl/]">[field:title/]</a>
自定义模型页 {dede:field.arcurl /} <a href="{dede:field.arcurl/}">产品链接</a>
其他页面 (需指定文章) [field:arcurl/] (在 {dede:arclist}{dede:sql} 循环内) {dede:arclist idlist='1'}<a href="[field:arcurl/]">链接</a>{/dede:arclist}

希望这份详细的指南能帮助你完美解决在 DedeCMS 中获取文章地址的问题!

-- 展开阅读全文 --
头像
织梦企业模板带手机版
« 上一篇 今天
C语言为何没有内置string类型?
下一篇 » 今天
取消
微信二维码
支付宝二维码

目录[+]