核心原理
织梦的模板引擎使用特定的标签来调用数据并渲染页面,要实现“文章标题+链接”,你需要用到两个核心标签:

(图片来源网络,侵删)
-
标签:
{dede:field.title /}这个标签的作用是输出当前文章的标题。
-
文章链接标签:
{dede:field.id runphp='yes'}- 这个标签的作用是生成指向该文章详情页的URL。
runphp='yes'表示启用PHP代码执行,我们可以在这里使用织梦内置的函数GetOneArchive()来根据文章ID获取其URL。
将这两个标签组合在一起,并用HTML的 <a> 标签包裹,就实现了“标题链接”的效果。

(图片来源网络,侵删)
在文章列表页(如首页、列表页)添加标题链接
这是最常见的用法,通常在 index.htm、list_article_category.htm 等模板文件中。
方法1:使用织梦的默认链接标签(最简单)
织梦提供了一个专门用于生成文章链接的简写标签:[field:link/]。
代码示例:
{dede:arclist titlelen='30' row='10'}
<li>
<!-- [field:link/] 会自动生成一个完整的 <a> 标签,href属性指向文章链接 -->
<a href="[field:link/]">[field:title/]</a>
</li>
{/dede:arclist}
代码解析:
{dede:arclist ...}: 调用文章列表,len='30'`: 限制标题显示长度为30个字符。row='10': 调用10篇文章。[field:link/]: 这是一个简写,等同于<a href='{dede:field.id runphp='yes'} @me = GetOneArchive(@me); @me = @me['arcurl']; {/dede:field.id}'>,它会自动生成<a>标签的开始和结束部分。[field:title/]:输出文章标题。
这是最推荐、最简洁的方法。
方法2:使用 runphp 手动生成链接(更灵活)
如果你想在链接中添加额外的属性(如 target='_blank' 或 title 提示),或者需要更复杂的逻辑,可以使用 runphp 的方式。
代码示例:
{dede:arclist titlelen='30' row='10'}
<li>
<a href="{dede:field.id runphp='yes'}
@me = GetOneArchive(@me);
@me = @me['arcurl'];
{/dede:field.id}"
title="查看文章:[field:title/]">
[field:title/]
</a>
</li>
{/dede:arclist}
代码解析:
{dede:field.id runphp='yes'} ... {/dede:field.id}: 这部分是PHP代码块。@me = GetOneArchive(@me);:GetOneArchive()是织梦的核心函数,它接收一个文章ID(@me初始值就是field.id),返回一个包含文章URL等信息的数组。@me = @me['arcurl'];: 从返回的数组中提取出arcurl(文章URL)并重新赋值给@me。"查看文章:[field:title/]":这里我们给标签添加了一个title` 属性,鼠标悬停时会显示完整标题,提升了用户体验。
页(文章详情页)添加标题链接
在文章详情页(如 article_article.htm),通常我们希望文章的标题本身就是一个返回首页或返回列表页的链接,或者是一个指向文章本身的链接(虽然没必要,但有时会用到)。
示例:让文章标题指向文章本身
这在文章详情页中很常见,点击标题可以刷新当前页面。
代码示例 (在 article_article.htm 中):
<h1 class="article-title">
<a href="{dede:field.id runphp='yes'} @me = GetOneArchive(@me); @me = @me['arcurl']; {/dede:field.id}">
{dede:field.title/}
</a>
</h1>
或者使用简写标签:
<h1 class="article-title">
<a href="[field:link/]">{dede:field.title/}</a>
</h1>
示例:让文章标题指向文章所属的栏目列表页
这是一个非常好的用户体验设计,点击标题可以返回到文章的分类列表。
代码示例 (在 article_article.htm 中):
<h1 class="article-title">
<!-- 先获取当前文章的栏目ID,再根据栏目ID获取栏目链接 -->
<a href="{dede:field.typeid runphp='yes'}
$typeid = @me;
$row = GetOneType($typeid);
@me = $row['typedir'];
{/dede:field.typeid}">
{dede:field.title/}
</a>
</h1>
代码解析:
{dede:field.typeid runphp='yes'} ... {/dede:field.typeid}: 获取当前文章的栏目ID,并通过PHP处理。$typeid = @me;: 将栏目ID保存到变量$typeid。$row = GetOneType($typeid);: 调用GetOneType()函数,根据栏目ID获取该栏目的详细信息,并存入数组$row。@me = $row['typedir'];: 从数组中提取栏目的目录地址(即URL),并赋值给@me。
总结与最佳实践
| 场景 | 推荐代码 | 说明 |
|---|---|---|
| 文章列表页 | <a href="[field:link/]">[field:title/]</a> |
最常用、最简洁,适用于99%的列表场景。 |
| 文章列表页(需额外属性) | <a href="{dede:field.id runphp='yes'}@me=GetOneArchive(@me);@me=@me['arcurl'];{/dede:field.id}" title="...">[field:title/]</a> |
灵活,可添加 target, title, class 等属性。 |
| 文章详情页链接到自身) | <a href="[field:link/]">{dede:field.title/}</a> |
刷新页面,常用于面包屑导航。 |
| 文章详情页链接到栏目) | <a href="{dede:field.typeid runphp='yes'}$typeid=@me;$row=GetOneType($typeid);@me=$row['typedir'];{/dede:field.typeid}">{dede:field.title/}</a> |
用户体验极佳,方便用户返回分类浏览。 |
重要提示:
- 修改前备份:在修改任何模板文件之前,请务必备份原始文件,以防修改后出现错误,可以快速恢复。
- 清除缓存:修改模板文件后,登录织梦后台 -> 系统 -> 清除全部缓存,然后刷新前台页面才能看到效果。
- 使用织梦默认标签:优先使用
[field:link/]这样的简写标签,它们不仅代码更少,而且经过织梦官方优化,性能和兼容性更好。
希望这份详细的指南能帮助你顺利解决问题!
