苹果CMS指南

苹果CMS V10播放页主要用于展示当前影片的播放内容、播放线路以及剧集信息。播放页可以通过当前影片数组 $obj 获取影片基础数据,同时结合 $param.sid 和 $param.nid 获取当前播放组以及当前播放集的信息。

苹果CMS V10播放页模板文件

播放页模板文件通常位于:

html/vod/play.html
  • 页面aid:15

  • 当前影片数组:$obj

  • 必带参数:id

播放页和影片详情页一样,都可以使用当前影片的 $obj 数组。影片基础字段可以参考苹果CMS V10视频字段说明,也可以在模板中使用以下方式查看当前影片的完整数据:

{:print_r($obj)}

需要注意的是,播放地址、播放线路、剧集列表以及剧情等数据通常属于数组结构,需要根据实际数据进行读取和遍历。

苹果CMS V10播放页标签

以下是播放页中常用的播放组、剧集以及播放器相关数据调用方式:

{$param.sid} 当前播放组序号
{$param.nid} 当前集数序号
{$obj.player_info.link_next} 下一页地址,最后一页时指向当前页链接
{$obj.player_info.link_pre} 上一页地址,第一页时指向当前页链接
{$obj['vod_play_list'][$param['sid']]} 获取当前播放组数据
{$obj['vod_play_list'][$param['sid']]['player_info']} 播放器信息
{$obj['vod_play_list'][$param['sid']]['server_info']} 服务器组信息
{$obj['vod_play_list'][$param['sid']]['url_count']} 总集数
{$obj['vod_play_list'][$param['sid']]['urls']} 集数信息
{$obj['vod_play_list'][$param['sid']]['urls'][$param['nid']]} 当前集数信息
{$obj['vod_play_list'][$param['sid']]['urls'][$param['nid']]['name']} 当前集数名称
{$obj['vod_play_list'][$param['sid']]['urls'][$param['nid']]['url']} 当前集数URL

播放组与剧集参数说明

  • $param.sid:当前播放组的序号,用于确定当前播放线路。

  • $param.nid:当前剧集的序号,用于确定当前播放的是第几集。

  • vod_play_list:当前影片的播放组数据。

  • player_info:当前播放组对应的播放器信息。

  • server_info:当前播放组对应的服务器信息。

  • url_count:当前播放组中的剧集数量。

  • urls:当前播放组的剧集数据集合。

  • name:当前剧集名称。

  • url:当前剧集播放地址。

苹果CMS V10下载页调用方法

下载页获取播放组和剧集数据的方式与播放页基本一致。如果需要在下载页获取对应数据,可以将 vod_play_list 修改为 vod_down_list,其他参数结构按照当前版本实际数据保持一致。

{$obj['vod_down_list'][$param['sid']]}
{$obj['vod_down_list'][$param['sid']]['urls']}
{$obj['vod_down_list'][$param['sid']]['urls'][$param['nid']]}

实际使用时建议先通过 print_r($obj) 查看当前页面返回的数据结构,再根据实际字段进行调用。

苹果CMS V10播放器调用方法

播放页需要通过播放器相关标签输出播放器数据,以下两个标签通常需要配合使用:

{$player_data} 播放数据
{$player_js} 加载播放器

{$player_data} 用于输出播放器所需的数据内容,{$player_js} 用于加载播放器相关的JavaScript代码。具体播放器表现取决于后台播放器配置以及当前模板的调用方式。

获取关联视频和关联文章

苹果CMS V10可以根据当前影片的关联数据,调用与当前影片相关的视频和文章。例如,可以使用 $obj.vod_rel_vod 获取关联视频ID,并通过 maccms:vod 标签调用对应的视频内容。

<h2>与<strong>“{$obj.vod_name}”</strong>关联的视频</h2>
<ul class="img-list dis">
    {maccms:vod num="6" ids="'.$obj['vod_rel_vod'].'" 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></p>
                <i>{$vo.vod_version}</i>
                <em></em>
            </a>
        </li>
    {/maccms:vod}
</ul>

<h2>与<strong>“{$obj.vod_name}”</strong>关联的文章</h2>
<ul class="img-list dis">
    {maccms:art num="6" ids="'.$obj['vod_rel_art'].'" order="desc" by="time"}
        <li>
            <a href="{:mac_url_art_detail($vo)}" title="{$vo.art_name}">
                <img src="{:mac_url_img($vo.art_pic)}" alt="{$vo.art_name}"/>
                <h2>{$vo.art_name}</h2>
                <p></p>
                <i>{$vo.vod_from}</i>
                <em></em>
            </a>
        </li>
    {/maccms:art}
</ul>

其中,$obj.vod_rel_vod用于关联视频,$obj.vod_rel_art用于关联文章。循环中的 $vo 表示当前查询到的视频或文章数据。

苹果CMS V10版权跳转

如果后台配置了影片的跳转URL,可以在详情页或播放页根据 $obj.vod_jumpurl 判断是否需要执行跳转。

<script>
    {if condition="$obj.vod_jumpurl neq ''"}
        location.href='{$obj.vod_jumpurl}';
    {/if}
</script>

上述代码会判断当前影片的 vod_jumpurl 是否为空。如果存在跳转地址,则通过JavaScript跳转到指定地址。

苹果CMS V10按剧集进行跳转

如果需要针对某一集单独设置跳转地址,可以在对应剧集URL中使用约定的标记,例如将需要跳转的地址设置为 jump://baidu.com。播放页再判断当前剧集URL是否包含 jump:。

<script>
    {if condition="strpos($obj['vod_play_list'][$param['sid']]['urls'][$param['nid']]['url'],'jump:')!==false"}
        location.href='{$obj['vod_play_list'][$param['sid']]['urls'][$param['nid']]['url']|str_replace="jump:","http:",###}';
    {/if}
</script>

这种方式可以根据当前的 sid 和 nid 判断具体播放组中的具体剧集,因此不会影响没有设置跳转标记的其他剧集。

苹果CMS V10 iframe播放器页面

苹果CMS V10还可以使用独立的iframe播放器页面。该页面主要用于特定播放权限场景,例如后台开启收费播放或试看功能时使用。

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

  • 页面aid:无

  • 当前影片数据:$obj

  • 播放器数据:$player_data

  • 播放器脚本:$player_js

iframe播放器页面的参数与播放页存在较多相似之处,同样需要使用 {$player_data} 和 {$player_js} 输出播放器。

iframe播放器完整示例

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no">
    <title>iframe播放器</title>
    <style>*{word-wrap:break-word;outline:none} html,body{width:100%;height:100%;background:#000;color:#fff;}
    .player_popeom{ width:500px;height:150px; position:absolute;text-align:center; top:50%;left:50%;margin:-75px 0 0 -250px; }
    .player_popeom a{ padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px;color:#fff;background-color:#5cb85c;border-color:#4cae4c; }
    </style>
    <script src="{$maccms.path}static/js/jquery.js"></script>
    <script>var maccms={"path":"__ROOT__","mid":"{$maccms['mid']}","url":"{$maccms['site_url']}","wapurl":"{$maccms['site_wapurl']}","mob_status":"{$maccms['mob_status']}"};</script>
</head>
<body topmargin="0" leftmargin="0" marginheight="0" marginwidth="0">
{$player_data}
{$player_js}

{if condition="$popedom.code gt 1"/}
<div class="player_showtry" style="display:none;">
    <div class="player_box">
        <div class="player_popeom">
            {if condition="$obj.vod_points_play eq 0"}
            <p>试看{$popedom.trysee}分钟结束,完整观看本影片需要升级会员组,请升级后观看。</p>
            <small>提示:购买VIP会员组,享受超级权限,谢谢支持。</small>
            <p><a href="{:url('user/index')}" target="_blank">会员中心</a> <a href="{:url('user/upgrade')}" target="_blank">马上升级</a></p>
            {else/}
            <p>试看{$popedom.trysee}分钟结束,完整观看本影片需要花费{$obj.vod_points_play}积分,请支付后观看。</p>
            <small>提示:一次支付,永久观看,不重复扣费,谢谢支持。</small>
            {if condition="$user.group.group_id eq 1"}
                <p><a href="{:url('user/login')}" target="_blank">马上登录</a></p>
            {else/}
                <p><a href="{:url('user/buy')}" target="_blank">马上充值</a> <a href="javascript:;" onclick="window.parent.MAC.User.BuyPopedom(this)" data-id="{$obj.vod_id}" data-sid="{$param.sid}" data-nid="{$param.nid}" data-type="4" data-mid="1">确认购买</a></p>
            {/if}
            {/if}
        </div>
    </div>
</div>

<script>
    window.setTimeout(function(){
        $('.MacPlayer').html($('.player_showtry').html());
    },1000*60*{$popedom.trysee});
</script>
{/if}
</body>
</html>

iframe播放器代码说明

示例中通过 {$player_data} 和 {$player_js}初始化播放器,同时根据 $popedom 和当前影片的播放积分设置控制试看及收费提示。

  • $popedom.code:用于判断当前播放权限状态。

  • $popedom.trysee:试看时长相关数据。

  • $obj.vod_points_play:当前影片每集播放所需积分。

  • $obj.vod_id:当前影片ID。

  • $param.sid:当前播放组序号。

  • $param.nid:当前剧集序号。

  • $user.group.group_id:当前用户组相关信息。

  • MAC.User.BuyPopedom():用于调用父页面中的购买播放权限方法,实际效果取决于当前模板和程序脚本。

播放页模板开发注意事项

  • 修改播放页前建议备份原来的 html/vod/play.html 文件。

  • 使用复杂数组字段前,建议通过 {:print_r($obj)} 查看实际返回结构。

  • $param.sid 和 $param.nid分别对应播放组和剧集序号,调用剧集数据时需要保持对应关系。

  • 播放地址、下载地址等数据属于动态数组结构,不建议仅根据固定示例猜测字段层级。

  • 如果修改播放器代码后出现无法播放的问题,应检查播放器配置、播放组、播放器JS以及浏览器控制台报错。

  • 收费播放和试看功能需要结合苹果CMS后台权限设置以及模板中的播放器代码共同实现。

总结

苹果CMS V10播放页主要通过 $obj 获取当前影片数据,通过 $param.sid 和 $param.nid定位当前播放组与当前剧集,再结合 vod_play_list 获取具体播放信息。

在模板开发过程中,掌握 $player_data、$player_js、vod_play_list、vod_down_list 等核心数据和标签,可以完成播放线路、剧集列表、关联内容、试看及收费提示等功能的调用。