苹果CMS V10视频多条件筛选模板开发教程
发布时间:2025-04-06共12人阅读
一、筛选页面基础配置信息
苹果CMS V10视频筛选功能支持多维度条件过滤,包含视频分类、地区、语言、上映年份、推荐等级、名称首字母、审核状态、TAG标签、扩展分类等筛选方式,是影视列表模板的核心功能模块。
系统默认视频筛选页面固定配置如下,所有筛选功能均基于该文件开发:
模板文件路径:
html/vod/show.html页面专属AID:
12当前分类数据变量:
$obj全局筛选参数变量:
$param
$obj 用于读取当前视频分类的基础信息与扩展字段,$param 负责接收、存储URL传递的所有筛选参数,是实现多条件叠加筛选、保留筛选状态的核心变量。
二、筛选URL参数完整对照表
筛选功能依靠URL传参实现数据精准匹配,支持单条件筛选与多条件组合筛选,所有可用参数、规则及作用如下:
| 参数 | 示例值 | 是否必填 | 参数说明 |
|---|---|---|---|
id | 1 | 是 | 视频分类ID,锁定当前筛选分类范围 |
area | 大陆 | 否 | 按影视出品地区筛选 |
lang | 国语 | 否 | 按影视配音语言筛选 |
year | 2019 | 否 | 按影视上映年份筛选 |
level | 9 | 否 | 按内容推荐等级筛选 |
letter | A | 否 | 按视频名称首字母筛选 |
state | 1 | 否 | 按内容审核状态筛选 |
tag | 国产大片 | 否 | 按自定义TAG标签筛选 |
class | 科幻片 | 否 | 按自定义扩展分类筛选 |
order | desc | 否 | 数据排序方式,支持正序、倒序 |
by | time | 否 | 数据排序依据,自定义排序字段 |
by 排序字段支持多种系统内置规则,可按需自由选用:id、time、time_add、score、hits、hits_day、hits_week、hits_month、up、down、level、rnd、in。
三、多条件组合筛选URL示例
多个筛选参数可自由拼接组合,系统自动匹配符合所有条件的视频资源,完整组合链接示例如下:
/index.php/vodshow/1/area/大陆/by/time/class/科幻/lang/国语/letter/A/year/2020.html
四、筛选参数获取方法
模板开发中可通过 $param 变量单独调取任意筛选条件数值,用于判断页面选中状态、保留已有筛选条件,避免切换筛选选项时条件重置。
单参数调取示例:
{$param['area']}全参数调取常用代码:
{$param['class']}
{$param['lang']}
{$param['year']}
{$param['level']}
{$param['letter']}
{$param['state']}
{$param['tag']}
{$param['order']}
{$param['by']}五、高级筛选组件模板代码
借助系统内置 mac_url_type() 函数可自动生成筛选链接,核心逻辑为保留当前所有筛选参数,仅更新当前操作的筛选维度,实现多条件叠加筛选。
1、扩展分类筛选组件
<div class="ui-box filter-focus">
<div class="ui-title">
<h3>{$obj.type_name} - 高级搜索</h3>
</div>
<div class="ui-cnt">
<div class="filter-list fn-clear">
<h5>类型:</h5>
<ul>
<li>
<a {if condition="$param['class'] eq ''"} class="current" {/if}
href="{:mac_url_type($obj,['area'=>$param['area'],'lang'=>$param['lang'],'year'=>$param['year'],'level'=>$param['level'],'letter'=>$param['letter'],'state'=>$param['state'],'tag'=>$param['tag'],'class'=>'','order'=>$param['order'],'by'=>$param['by'] ],'show')}">全部</a>
</li>
{empty name="$obj.type_extend.class"}
{maccms:foreach name=":explode(',',$obj.parent.type_extend.class)" id="vo2" key="key2"}
<li>
<a {if condition="$param['class'] eq $vo2"} class="current" {/if}
href="{:mac_url_type($obj,['area'=>$param['area'],'lang'=>$param['lang'],'year'=>$param['year'],'level'=>$param['level'],'letter'=>$param['letter'],'state'=>$param['state'],'tag'=>$param['tag'],'class'=>$vo2,'order'=>$param['order'],'by'=>$param['by'] ],'show')}">{$vo2}</a>
</li>
{/maccms:foreach}
{else /}
{maccms:foreach name=":explode(',',$obj.type_extend.class)" id="vo2" key="key2"}
<li>
<a {if condition="$param['class'] eq $vo2"} class="current" {/if}
href="{:mac_url_type($obj,['area'=>$param['area'],'lang'=>$param['lang'],'year'=>$param['year'],'level'=>$param['level'],'letter'=>$param['letter'],'state'=>$param['state'],'tag'=>$param['tag'],'class'=>$vo2,'order'=>$param['order'],'by'=>$param['by'] ],'show')}">{$vo2}</a>
</li>
{/maccms:foreach}
{/empty}
</ul>
</div>
</div>
</div>2、地区、语言、年份筛选组件
三类筛选功能开发逻辑一致,仅替换对应参数名称即可,以地区筛选为例:
{maccms:foreach name=":explode(',',$obj.type_extend.area)" id="vo2" key="key2"}
<li>
<a {if condition="$param['area'] eq $vo2"} class="current" {/if}
href="{:mac_url_type($obj,['area'=>$vo2,'lang'=>$param['lang'],'year'=>$param['year'],'level'=>$param['level'],'letter'=>$param['letter'],'state'=>$param['state'],'tag'=>$param['tag'],'class'=>$param['class'],'order'=>$param['order'],'by'=>$param['by'] ],'show')}">{$vo2}</a>
</li>
{/maccms:foreach}3、首字母筛选组件
支持A-Z英文字母及0-9数字筛选,适配所有视频名称首字母匹配场景:
{maccms:foreach name=":explode(',', 'A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,0~9')" id="vo2" key="key2"}
<li>
<a {if condition="$param['letter'] eq $vo2"} class="current"{/if}
href="{:mac_url_type($obj,['area'=>$param['area'],'lang'=>$param['lang'],'year'=>$param['year'],'level'=>$param['level'],'letter'=>$vo2,'state'=>$param['state'],'tag'=>$param['tag'],'class'=>$param['class'],'order'=>$param['order'],'by'=>$param['by'] ],'show')}">{$vo2}</a>
</li>
{/maccms:foreach}4、列表排序筛选组件
实现按时间、人气、评分三种常用排序切换,自动高亮当前选中排序状态:
<div class="fn-clear">
<div class="view-filter">
<a href="{:mac_url_type($obj,['area'=>$param['area'],'lang'=>$param['lang'],'year'=>$param['year'],'level'=>$param['level'],'letter'=>$param['letter'],'state'=>$param['state'],'tag'=>$param['tag'],'class'=>$param['class'],'order'=>$param['order'],'by'=>'time'],'show')}"
class="order {if condition="$param.by eq '' || $param.by eq 'time'"}current{/if}">按时间</a>
<a href="{:mac_url_type($obj,['area'=>$param['area'],'lang'=>$param['lang'],'year'=>$param['year'],'level'=>$param['level'],'letter'=>$param['letter'],'state'=>$param['state'],'tag'=>$param['tag'],'class'=>$param['class'],'order'=>$param['order'],'by'=>'hits'],'show')}"
class="order {if condition="$param.by eq 'hits'"}current{/if}">按人气</a>
<a href="{:mac_url_type($obj,['area'=>$param['area'],'lang'=>$param['lang'],'year'=>$param['year'],'level'=>$param['level'],'letter'=>$param['letter'],'state'=>$param['state'],'tag'=>$param['tag'],'class'=>$param['class'],'order'=>$param['order'],'by'=>'score'],'show')}"
class="order {if condition="$param.by eq 'score'"}current{/if}">按评分</a>
</div>
</div>六、筛选结果列表调用
配置完筛选组件后,通过 {maccms:vod} 标签调用匹配筛选条件的视频列表,支持自定义展示数量与分页功能:
{maccms:vod num="20" paging="yes" pageurl="vod/show" type="current" order="desc" by="time"}
<li>
<a href="{:mac_url_vod_detail($vo)}" title="{$vo.vod_name}">
<img src="{:mac_url_img($vo.vod_pic)}" alt="{$vo.vod_name}"/>
<h2>{$vo.vod_name}</h2>
<p>{$vo.vod_actor}</p>
<i>{$vo.vod_remarks}</i>
</a>
</li>
{/maccms:vod}七、模板开发常见问题与注意事项
筛选模板开发过程中,标签语法不规范极易导致页面解析异常、样式错乱。需重点排查多余的标签闭合代码,例如重复的 {/if} 标签会直接导致筛选功能失效。
错误示例:
{if condition="$param['letter'] eq $vo2"} class="current"{/if} {/if}修正后规范代码:
{if condition="$param['letter'] eq $vo2"} class="current"{/if}同时需保证所有HTML标签成对闭合,避免列表、筛选按钮出现布局错乱、样式异常等问题。
八、功能总结
苹果CMS V10视频筛选功能依托 show.html 模板、$obj 分类变量与 $param 筛选参数实现,通过多类URL参数自由组合筛选条件,搭配 mac_url_type() 链接生成函数与 maccms:vod 列表调用标签,可完整实现多条件高级筛选、自定义排序、结果分页展示等全套功能。开发时保留已有筛选参数、仅更新当前操作维度,可有效实现筛选条件叠加,提升用户浏览体验。
