在织梦的列表查询标签 {dede:arclist} 中,使用 idnot 或 arcidnot 参数来排除当前文章的ID。

(图片来源网络,侵删)
下面我将分几种常见场景,为您提供详细的代码和解释。
在文章页(article_article.htm)中调用“相关文章”
这是最典型的应用场景,你希望在当前文章的页面上,展示其他一些相关文章,但绝不能包含当前文章本身。
方法:使用 {dede:arclist}
-
获取当前文章ID: 在文章内容页模板
article_article.htm中,织梦会自动生成一个变量aid,它就是当前文章的ID,我们可以直接使用这个变量。
(图片来源网络,侵删) -
编写织梦标签: 在模板中你希望显示相关文章的位置,插入以下代码:
{dede:arclist row='8' titlelen='30' idnot='~aid~'} <li> <a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a> </li> {/dede:arclist} -
代码解析:
row='8':表示调用8篇文章。titlelen='30'最多显示30个字符。idnot='~aid~':这是关键!idnot是arclist标签的一个属性,用于排除指定的文章ID。~aid~是织梦的变量替换语法。aid是当前文章的ID, 是分隔符,最终织梦会将其解析为idnot='当前文章的ID',从而在查询时过滤掉这篇文章。
在列表页(list_*.htm)中调用排除当前文章的列表
假设你在列表页上,除了显示常规的文章列表,还想在侧边栏或某个特定位置再调用一个列表,但这个列表要排除当前正在浏览的这篇文章。
方法:同样是使用 {dede:arclist} 标签,但需要获取当前文章ID

(图片来源网络,侵删)
-
获取当前文章ID: 在列表页中,当前浏览的文章ID不能像在文章页那样直接通过
aid获取,我们需要通过URL参数来获取,URL的格式通常是https://www.yoursite.com/list.php?tid=栏目ID&aid=文章ID。 我们可以使用织梦的Get函数来获取aid的值。 -
编写织梦标签:
{dede:arclist row='5' titlelen='25' idnot='~Get("aid")~'} <div class="other-article"> <h3>其他文章</h3> <ul> <li> <a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a> </li> </ul> </div> {/dede:arclist} -
代码解析:
idnot='~Get("aid")~':这里我们使用了Get("aid")来从URL中获取aid这个参数的值,并用 包裹起来,实现排除当前文章的效果。
制作“上一篇”和“下一篇”链接
这个功能虽然也排除当前文章,但通常使用专门的标签 {dede:prenext/} 来实现,它比 arclist 更高效、更直接。
方法:使用 {dede:prenext/}
页模板 article_article.htm 中,找到合适的位置(通常在文章内容的末尾),插入以下代码:
<div class="prenext">
<div class="pre">
{dede:prenext get='pre'/}
</div>
<div class="next">
{dede:prenext get='next'/}
</div>
</div>
代码解析:
{dede:prenext/}标签会自动获取当前文章的上一篇和下一篇。get='pre':获取上一篇。get='next':获取下一篇。- 这个标签天然就排除了当前文章,并且会自动处理“已经是第一篇”或“已经是最后一篇”的情况(此时会显示“没有了”或为空)。
总结与注意事项
| 场景 | 推荐标签 | 关键参数/方法 | 说明 |
|---|---|---|---|
| 文章页相关文章 | {dede:arclist} |
idnot='~aid~' |
最灵活,可以自定义数量、排序等。 |
| 列表页排除当前文章 | {dede:arclist} |
idnot='~Get("aid")~' |
适用于在列表页中调用一个排除当前文章的子列表。 |
| 上一篇/下一篇 | {dede:prenext/} |
get='pre' / get='next' |
专用标签,性能更好,专为上下文导航设计。 |
重要提示:
- 变量大小写:织梦的变量(如
aid)通常对大小写不敏感,但养成良好习惯,保持使用小写。 - 模板缓存:修改模板文件后,如果看不到效果,请记得清除织梦的缓存,可以在后台的“系统” -> “一键更新网站” -> “更新缓存”中操作。
- 栏目ID限制:如果只想在当前栏目内调用,可以在
arclist标签中加入typeid='当前栏目ID'参数,当前栏目ID可以用~typeid~获取。
希望这些详细的解释和代码能帮助您解决问题!
