苹果cms教程

苹果CMS V10视频多条件筛选模板开发教程

发布时间:2025-04-06共12人阅读

一、筛选页面基础配置信息

苹果CMS V10视频筛选功能支持多维度条件过滤,包含视频分类、地区、语言、上映年份、推荐等级、名称首字母、审核状态、TAG标签、扩展分类等筛选方式,是影视列表模板的核心功能模块。

系统默认视频筛选页面固定配置如下,所有筛选功能均基于该文件开发:

  • 模板文件路径:html/vod/show.html

  • 页面专属AID:12

  • 当前分类数据变量:$obj

  • 全局筛选参数变量:$param

$obj 用于读取当前视频分类的基础信息与扩展字段,$param 负责接收、存储URL传递的所有筛选参数,是实现多条件叠加筛选、保留筛选状态的核心变量。

二、筛选URL参数完整对照表

筛选功能依靠URL传参实现数据精准匹配,支持单条件筛选与多条件组合筛选,所有可用参数、规则及作用如下:

参数示例值是否必填参数说明
id1是视频分类ID,锁定当前筛选分类范围
area大陆否按影视出品地区筛选
lang国语否按影视配音语言筛选
year2019否按影视上映年份筛选
level9否按内容推荐等级筛选
letterA否按视频名称首字母筛选
state1否按内容审核状态筛选
tag国产大片否按自定义TAG标签筛选
class科幻片否按自定义扩展分类筛选
orderdesc否数据排序方式,支持正序、倒序
bytime否数据排序依据,自定义排序字段

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 列表调用标签,可完整实现多条件高级筛选、自定义排序、结果分页展示等全套功能。开发时保留已有筛选参数、仅更新当前操作维度,可有效实现筛选条件叠加,提升用户浏览体验。