arclist 与 list 怎么选
list只输出当前栏目内容,适合列表页主循环。arclist可以按栏目、标签、模型、关键词、标志跨范围筛选,适合首页、侧栏和聚合页。- 两者都支持
paginate="1",但同一页面只能有一个分页上下文。
排序与筛选的边界
orderby 只支持 published_at、pubdate、views、sort、id,不支持随机和点赞排序;flag 传多个值时取交集,不是并集。
{djm:arclist typeid="3" orderby="views" orderdir="desc" row="10" startday="30" titlelen="40"}
<a href="[field:url/]">[field:title/]</a>
<span>[field:views/] 次阅读</span>
{/djm:arclist}
startday 限制最近多少天,keyword 匹配标题与摘要,tag 用标签别名精确筛选,model 按模型编码过滤。
分页:pagesize 不是每页条数
pagelist pagesize 是页码数量,每页条数由 list / arclist 的 row 决定。需要自定义结构时用块级写法,循环内可用 page、current、total_pages、url、prev_url、next_url、is_first、is_last。
{djm:list row="10" paginate="1"}
<a href="[field:url/]">[field:title/]</a>
{/djm:list}
{djm:pagelist pagesize="5"}
<a class="[field:is_last/]" href="[field:url/]">[field:page/]</a>
{/djm:pagelist}
块级写法需要自己维护当前页样式与禁用状态,如果只是换文案,优先用 prevtext、nexttext、firsttext、lasttext。
热门与相关
hotlist 默认按发布时间排序,必须显式写 orderby="views" 才是按阅读数;related 按当前内容的栏目和标签匹配,默认排除自己。
{djm:related row="6" exclude="1" titlelen="30"}
<a href="[field:url/]">[field:title/]</a>
{/djm:related}
上下篇
prenext 支持 tpl 自定义链接结构,占位符可用 [field:title/]、[field:url/],也兼容 {title}、[url]。
{djm:prenext type="next" nextnone="已经是最后一篇" tpl="<a href='[field:url/]'>下一篇:[field:title/]</a>"}
性能注意点
row上限 100,列表页按 12–15 条分页即可,不要在一页里堆多个大列表。- 循环内避免再嵌套
arclist,需要关联内容时用related或在控制器层拼好数据。 - 页面缓存开启后,主题文件变化会自动失效;反向代理层仍可能缓存旧页面,调试时加查询参数绕过。
参数与字段的完整清单见标签手册。
讨论