栏目内容过滤概述
在织梦CMS的栏目列表页中,内容过滤是指根据特定条件筛选显示的文章,例如只显示推荐文章、排除某些属性的文章、按时间范围筛选等。通过标签属性和参数的组合,可以实现灵活的栏目内容筛选。
一、使用 flag 属性过滤
flag 参数用于筛选带有特定属性的文章:
<!-- 只显示推荐文章 -->
{dede:arclist typeid='3' flag='c' row='10'}
<!-- 只显示带缩略图的文章 -->
{dede:arclist typeid='3' flag='p' row='10'}
<!-- flag属性值说明 -->
h=头条(headline)
c=推荐(commend)
f=幻灯片(flash/slide)
a=特荐(grade A)
s=滚动(scroll)
b=加粗(bold)
p=有图片(picture)
j=跳转(jump)
二、使用 noflag 排除特定属性
<!-- 排除头条和跳转类文章 -->
{dede:arclist typeid='3' noflag='h,j' row='10'}
<!-- 只显示普通文章(排除所有特殊属性) -->
{dede:arclist typeid='3' noflag='h,c,f,a,s,b,p,j' row='10' titlelen='40'}
<li><a href="[field:arcurl/]">[field:title/]</a></li>
{/dede:arclist}
三、按时间范围过滤
使用 subday 参数按天数过滤:
<!-- 只显示最近7天的文章 -->
{dede:arclist typeid='3' subday='7' row='10' orderby='pubdate'}
<!-- 只显示最近30天的热门文章 -->
{dede:arclist typeid='3' subday='30' row='10' orderby='click'}
<!-- 显示30天前的历史文章(负值表示之前) -->
{dede:arclist typeid='3' subday='-365' row='10'}
<!-- 表示显示365天之前的文章 -->
四、SQL标签实现高级过滤
<!-- 过滤:点击量大于100且为推荐文章 -->
{dede:sql sql="SELECT * FROM dede_archives
WHERE typeid=3 AND click > 100 AND flag LIKE '%c%'
AND arcrank=0
ORDER BY click DESC LIMIT 10"}
<li><a href="/plus/view.php?aid=[field:id/]">
[field:title/]<span>[field:click/]次</span>
</a></li>
{/dede:sql}
五、按自定义字段过滤
使用自定义字段进行筛选(需配合addfields):
<!-- 过滤价格为0的产品 -->
{dede:sql sql="SELECT a.id,a.title
FROM dede_archives a
LEFT JOIN dede_addonarticle ad ON a.id=ad.aid
WHERE a.typeid=5 AND ad.product_price > 0
ORDER BY ad.product_price ASC LIMIT 10"}
<li><a href="/plus/view.php?aid=[field:id/]">[field:title/]</a></li>
{/dede:sql}
六、栏目前台多条件筛选
在栏目列表页实现用户可操作的多条件筛选:
<!-- 前台筛选界面 -->
<form method="get" action="/plus/list.php">
<input type="hidden" name="tid" value="{dede:field.id/}">
<label><input type="radio" name="orderby" value="pubdate" checked> 最新</label>
<label><input type="radio" name="orderby" value="click"> 最热</label>
<label><input type="checkbox" name="flag" value="c"> 仅推荐</label>
<label><input type="checkbox" name="flag" value="p"> 有图片</label>
<button type="submit">筛选</button>
</form>
七、排除隐藏栏目和草稿
<!-- 只显示已审核的文章,排除草稿和回收站 -->
{dede:arclist typeid='3' row='10'}
<!-- arcrank值说明 -->
<!-- 0=已审核(正常) -1=待审核 -2=回收站 -->
<!-- SQL方式确保排除未审核文章 -->
{dede:sql sql="SELECT * FROM dede_archives
WHERE typeid=3 AND arcrank=0
ORDER BY pubdate DESC LIMIT 10"}
性能提示:在栏目列表页使用过多复杂的SQL过滤条件可能影响页面加载速度。建议利用织梦CMS的
arclist 内置参数进行过滤,这些参数经过了查询优化,效率高于自定义SQL。