苹果cms视频筛选调用教程

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

在苹果CMS V10中,视频筛选页面主要用于按照分类、地区、语言、年份、推荐等级、首字母、审核状态、Tag和扩展分类等条件筛选视频内容。

默认的视频筛选模板文件为:

html/vod/show.html

该页面对应的 aid 值为 12,当前分类数据主要通过 $obj 数组获取。如果需要进一步调用分类名称、扩展分类等字段,可以结合分类字段进行使用。

一、视频筛选页面的基本信息

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

  • 页面AID:12

  • 当前分类数组:$obj

  • 筛选参数:$param

其中,$obj主要表示当前视频分类的信息,而 $param 用于获取当前URL中已经传入的视频筛选条件。

二、苹果CMS V10视频筛选URL参数

视频筛选页面可以通过URL传递多个参数,实现不同条件组合筛选。常见参数如下:

参数示例值必有参数参数说明
id1视频分类ID
area大陆地区筛选
lang国语语言筛选
year2019年份筛选
level9推荐等级筛选
letterA首字母筛选
state1审核状态筛选
tag国产大片Tag标签筛选
class科幻片扩展分类、类型筛选
orderdesc正序或倒序
bytime排序依据

by 参数默认可以使用 idtimetime_addscorehitshits_dayhits_weekhits_monthupdownlevelrndin 等排序字段。

三、视频筛选URL示例

多个筛选条件可以组合到同一个URL中。例如下面的地址同时包含分类、地区、排序、类型、语言、首字母和年份等条件:

/index.php/vodshow/1/area/大陆/by/time/class/科幻/lang/国语/letter/A/year/2020.html

通过这种方式,用户访问不同的URL时,就可以得到对应条件下的视频列表。

四、如何获取当前筛选参数

苹果CMS V10的视频筛选页面可以通过 $param 数组获取当前筛选条件。

例如获取当前选择的地区:

{$param['area']}

同理,还可以获取其他参数:

{$param['class']}
{$param['lang']}
{$param['year']}
{$param['level']}
{$param['letter']}
{$param['state']}
{$param['tag']}
{$param['order']}
{$param['by']}

在制作筛选导航时,这些参数非常重要,因为生成新的筛选链接时,需要保留其他已经选择的条件,否则点击某一个筛选项目后,之前的筛选条件可能会被重置。

五、制作视频高级筛选条件

苹果CMS V10可以使用 mac_url_type() 根据当前分类和筛选参数生成对应的筛选URL。

例如下面是一个基础的类型筛选结构:

<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>

这里的核心逻辑是通过 $param 保留当前已经选择的其他条件,仅修改当前正在操作的筛选参数。

六、地区、语言和年份筛选

地区、语言和年份的实现方式与类型筛选基本相同,主要区别在于修改的参数不同。

例如地区筛选,可以将新的地区值传递给 mac_url_type()

{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}

语言和年份筛选同理,只需要将对应的 langyear 参数替换成当前循环值即可。

七、首字母筛选

首字母筛选可以通过 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}

八、视频列表排序方式

筛选条件之外,还可以给用户提供不同的排序方式,例如按照时间、人气和评分排序。

<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>

这里通过修改 by 参数实现不同的排序方式,同时利用 $param.by 判断当前使用的排序方式,并添加 current 样式。

九、获取当前筛选结果列表

筛选条件设置完成后,可以通过 {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}

上面的代码一次获取20条视频数据,并开启分页,同时使用当前筛选分类的数据作为列表内容。

十、苹果CMS V10筛选模板代码中的注意事项

在使用网上提供的筛选模板代码时,需要特别检查模板标签是否完整。原始示例中有一处首字母筛选代码出现了多余的 {/if},以及列表结束标签写法不完整的问题。如果直接复制,可能导致模板解析异常。

例如类似下面的结构:

{if condition="$param['letter'] eq $vo2"} class="current"{/if} {/if}

正常情况下只需要保留一个对应的条件结束标签:

{if condition="$param['letter'] eq $vo2"} class="current"{/if}

另外,HTML列表标签也应注意保持成对闭合,例如 <li> 应对应 </li>,否则可能影响页面结构和CSS样式。

总结

苹果CMS V10的视频筛选页面主要围绕 html/vod/show.html 展开,核心数据包括当前分类 $obj 和筛选参数 $param

通过 idarealangyearclassletter 等参数,可以组合出不同的视频筛选URL;再配合 mac_url_type(){maccms:vod} 等标签,就可以完成高级筛选、排序以及筛选结果列表的完整功能。

制作苹果CMS V10筛选模板时,建议尽量保留已有筛选参数,仅修改当前正在操作的参数,这样可以实现多条件组合筛选,并避免用户选择一个条件后其他条件被重置。