Files
SEONexus/doc/TemplateTag.md
2026-01-09 01:28:23 +08:00

35 KiB
Raw Permalink Blame History


# 系统配置
{site:cfg code="YONG_JIU_DOMAIN" encode="false"/}

// YOUQING_LIANJIE_GUANG_GAO
{ad:list code="YOUQING_LIANJIE_GUANG_GAO" order="asc" limit=10 /}
{ad:list count="10" 
code="YOUQING_LIANJIE_GUANG_GAO"
order="asc"
d_key="d_key" d_val="Ad"  cache_life="86400"}
    <li>
        Index: {$d_key}
        Title: {$Ad.gg_wen_zi}
        Img: {$Ad.gg_tu_pian}
        Href: {$Ad.gg_tiao_zhuan_di_zhi}
    </li>
{/ad:list}

# 广告配置
{site:adcfg code="JIAO_YOU_XIA_ZAI" encode="false"/}

# 获取seo tdk
{site:seotdk code="index" valcode="stc_title" encode="false"/}

# 获取 站点信息
{site:site  valcode="site_name" encode="false"/}

# 转码
{site:wz wz="保存永久访问二维码" /}

# 小说分类 url
{site:nflurl gender="$arrNovel[gender]" category="$arrNovel[category]"  status="$arrNovel[status]" page="1"/}
{site:nflurl gender="all" category="$arrNovel[category_pinyin]"  status="all" page="1"/}
{site:nflurl   order="tuijian" page="1"/}

# 小说详情 url
{site:nurl n_id="$Novel->n_id" n_py="$Novel->n_name_pinyin"/}

# 伪造小说详情 url
{site:nnurl n_id="$arrNovel[n_id]" n_py="$arrNovel[n_name_pinyin]" n_fid="$ForgeNovel[n_forge_id]"/}

# 小说目录 url
{site:nclurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" order="zheng" page="1"/}

# 小说章节 url
{site:cpurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" c_sort="$Chapter[c_sort_num]" c_page="1"/}

# 小说最新章节 url
{site:lcpurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" /}

# 搜索详情 url
{site:souurl key="哈哈" p="1"/}

# 排行榜列表url
{site:rankurl  gender="$arrNovel[gender]" category="$arrNovel[category]"  status="$arrNovel[status]" order="$arrNovel[order]" page="1"/}
{site:rankurl  status="$arrNovel[status]" order="$arrNovel[order]" page="1"/}

# 干扰码
{site:grm domain="Request->DomainModel->d_domain" code="kuangyu-pc-index" line="50" diff="0" start="5"  end="20"  type="2" /}

# 视频分类 首页 url
{site:vciurl   parent_category="dianying" /}
{site:vciurl   parent_category="dianying" export_name="strVciurl" /}

# 视频详情 url
{site:vurl v_id="$Video.v_id" v_py="$Video.v_name_en"/}

# 视频播放 url
{site:vpurl v_id="$arrVideo.v_id" v_py="$arrVideo.v_name_en" play_type="default" play_index="1" /}
{site:vpurl v_id="$Video.v_id" v_py="$Video.v_name_en" play_type="$Request.route.strPlayType" play_index="$Request.route.intPlayIndex" /}


# 视频分类 分页 url
# 传参与默认值(传参用下面的变量名,名称不需要$符号, 值的话如果用第三方变量作为值,需要带$符号)
'vclurl' => ['attr' => 'category,class,area,lang,year,order,page', 'close' => 0],
# 样例
{site:vclurl  parent_category="dianying" category="all" area="all" lang="all" year="all" order="all"  page="1"/}
{site:vclurl  parent_category="$Request.route.strClass" category="$arrChildrenCategory.v_category_en" area="all" lang="all" year="all" order="all"  page="1" export_name="strVclurl"/}


# 视频排行榜 列表 url
# 传参与默认值(传参用下面的变量名,名称不需要$符号, 值的话如果用第三方变量作为值,需要带$符号)
$sort_type ?? "daily";  # 排序方式:
                                        # * *  'daily'     => '天',
                                        # * *  'weekly'    => '周',
                                        # * *  'monthly'   => '月',
                                        # * *  'total'     => '总',
'vrlurl' => ['attr' => 'category,class,sort_type,page', 'close' => 0],
# 样例
{site:vrlurl  class="dianying" category="all" sort_type="all"  page="1"/}
{site:vrlurl  class="$Request.route.strClass" category="$arrChildrenCategory.v_category_en" sort_type="all"  page="1"/}


# 视频详情 url
{site:nurl n_id="$Novel->n_id" n_py="$Novel->n_name_pinyin"/}

# 视频搜索详情 url
{site:vsurl key="哈哈" p="1"/}


# 图片加密
<img class="pre-img lozad" loading="lazy" src="/assets/images/loading_img_bg_default.jpg?v={site:cfg code='STATIC_FILE_VERSION' encode='false'/}"
            data-encrypted="true"
            data-src="{$vo.sp_fengmian_url}">


            <!-- <div class="page_num">
        {if condition='$intPage > 1 '}
        <a href='{$strPcPath}{site:nclurl n_id="$arrNovel[n_id]" n_py="$arrNovel[n_name_pinyin]" order="zheng" page="1"/}'
            class="z">
            {else}
            <a href="{if condition='$intPage > 1 '}/{$strFirstPath}/{$intNovelId}{if condition='$intPage > 2'}-{$intPage - 1}{/if}.html
                {else}/{$strFirstPath}/{$intNovelId}.html{/if}"
                class="z">
            {/if}
        
     
            上一页</a>
        <select onchange="self.location.href=this.value">
            {volist name="arrChapterPages" id="page"}
            <option value="/{$strFirstPath}/{$intNovelId}{if condition='$page.index neq 0'}-{$page.index+=1}{/if}.html"
                {if condition="$page.index == $intPage" }selected="selected" {/if}>
                {$page.start}-{$page.end}
            </option>
            {/volist}
        </select>
        <a href="{if condition='$intPage < $intTotalPages'}/{$strFirstPath}/{$intNovelId}-{$intPage + 1}.html{else}/{$strFirstPath}/{$intNovelId}-{$intTotalPages}.html{/if}"
            class="y">下一页</a>
    </div> -->

```php

```php
# 01、 获取多个小说数据并且遍历
# 传参与默认值(传参用下面的变量名,名称不需要$符号, 值的话如果用第三方变量作为值,需要带$符号)
        $count ?? '10';  # 查询条数
        $n_category ?? "all";  # 查询分类
        $sort_type ?? "all";  # 排序方式  news  tuijian update
        $n_status ?? "all";  # 查询状态:
                                        # * * 'all' => '所有',
                                        # * * 'lianzai' => '连载中',
                                        # * * 'wanjie' => '已完结',
        $n_sex ?? "all";  # 查询性别:
                                        # * * 'all' =>  '所有',
                                        # * * 'man' => '男生',
                                        # * * 'women' => '女生',
        $diff_key ?? "";  # 缓存键值差异
        $cache_life ?? '0';  # 缓存时间如果需要开启缓存这个字段必须传而且必须大于0
        $d_key ?? 'd_key';  # 查询出来的数据遍历的时候, 下标键变量的名称
        $d_val ?? 'd_val';  # 查询出来的数据遍历的时候, 值的名称
# 样例
{novel:list count="10" n_category="$Request.route.category" d_key="d_key" d_val="Novel"  cache_life="1000"}
    <li>
        Index: {$d_key}
        Title: {$novel.n_name}
        Author: {$novel.n_category}
    </li>
{/novel:list}



# 02-1、 获取分页小说数据并且遍历
# 传参与默认值(传参用下面的变量名,名称不需要$符号, 值的话如果用第三方变量作为值,需要带$符号)
        $page ?? '1';  # 页码
        $limit ?? '10';  # 查询条数
        $n_category ?? "all";  # 查询分类
        $sort_type ?? "all";  # 排序方式
        $n_status ?? "all";  # 查询状态:
                                        # * * 'all' => '所有',
                                        # * * 'lianzai' => '连载中',
                                        # * * 'wanjie' => '已完结',
        $n_sex ?? "all";  # 查询性别:
                                        # * * 'all' =>  '所有',
                                        # * * 'man' => '男生',
                                        # * * 'women' => '女生',
        $key ?? "";  # 查询 搜索
        $button_num ?? "10";  # 分页按钮数量
        $diff_key ?? "";  # 缓存键值差异
        $cache_life ?? '0';  # 缓存时间如果需要开启缓存这个字段必须传而且必须大于0
        $d_key ?? 'd_key';  # 查询出来的数据遍历的时候, 下标键变量的名称
        $d_val ?? 'd_val';  # 查询出来的数据遍历的时候, 值的名称
        $p_val ?? 'p_val';  # 分页页码数据,这是一个数组。和之前控制器渲染的那个数组一致的。
        $func ;  # 这个参数是一个回调方法名,用来渲染分页页码数据的,该方法需要在 NovelService 类里面实现func(array $arrParams, array $arrSort, array $arrNovel)           generateCategoryPager  generateSearchPager
# 样例
{novel:pager page="1" limit="10" n_category="$Request.route.category" d_key="d_key" d_val="novel" p_val="page_data" button_num="3" cache_life="1000" func="generateSearchPager"}
    <li>
        Index: {$d_key}
        Title: {$novel.n_name}
        Author: {$novel.n_category}
    </li>
{/novel:pager}
{php}var_dump($page_data);{/php}

# 02-2、 获取分页小说数据不遍历
# 传参与默认值(传参用下面的变量名,名称不需要$符号, 值的话如果用第三方变量作为值,需要带$符号)
        $page ?? '1';  # 页码
        $limit ?? '10';  # 查询条数
        $n_category ?? "all";  # 查询分类
        $sort_type ?? "all";  # 排序方式
        $n_status ?? "all";  # 查询状态:
                                        # * * 'all' => '所有',
                                        # * * 'lianzai' => '连载中',
                                        # * * 'wanjie' => '已完结',
        $n_sex ?? "all";  # 查询性别:
                                        # * * 'all' =>  '所有',
                                        # * * 'man' => '男生',
                                        # * * 'women' => '女生',
        $key ?? "";  # 查询 搜索
        $button_num ?? "10";  # 分页按钮数量
        $diff_key ?? "";  # 缓存键值差异
        $cache_life ?? '0';  # 缓存时间如果需要开启缓存这个字段必须传而且必须大于0
        $d_key ?? 'd_key';  # 查询出来的数据遍历的时候, 下标键变量的名称
        $d_val ?? 'd_val';  # 查询出来的数据遍历的时候, 值的名称
        $p_val ?? 'p_val';  # 分页页码数据,这是一个数组。和之前控制器渲染的那个数组一致的。
        $export_name ?? 'n_num';  # 查询出来的 所有数据集合,所有数据都可以在里面取。
        $func ;  # 这个参数是一个回调方法名,用来渲染分页页码数据的,该方法需要在 NovelService 类里面实现func(array $arrParams, array $arrSort, array $arrNovel)           generateCategoryPager  generateSearchPager
# 样例
{novel:pagerexp page="$Request.get.page" limit="30"
key="$Request.get.keyword"
d_key="d_key"
d_val="Novel" n
p_val="page_data" button_num="10" cache_life="86400" func="generateSearchPager" export_name="resData" /}
结构
resData = [
    data = []
    p_data = [
        'total' => $intTotal,
        'page' => $intPage,
        'limit' => $intLimit,
        'pages' => ceil($intTotal / $intLimit)
    ],
]
{php}var_dump($resData['p_data']);{/php}

# 03、获取替换模板替换后的数据
# 传参与默认值(传参用下面的变量名,名称不需要$符号, 值的话如果用第三方变量作为值,需要带$符号)
        $code ;  # 替换模板编码
# 样例
{site:replace code="INDEX@INDEX@TITLE"}


# 04、获取小说详情数据
# 传参与默认值(传参用下面的变量名,名称不需要$符号, 值的话如果用第三方变量作为值,需要带$符号)
        $n_id ;   # 传入的小说ID
        $n_forge_id ;   # 传入的伪造小说ID默认值0不伪造
        $n_key ;  # 查询出来的数据待使用的变量名称
# 样例
{novel:info n_id="33" n_key="arrNovel01" n_forge_id="1125940" /}
{$arrNovel01.n_name}

# 05、获取小说状态筛选条件
# 传参与默认值(传参用下面的变量名,名称不需要$符号, 值的话如果用第三方变量作为值,需要带$符号)
        $d_key ?? 'd_key';  # 查询出来的数据遍历的时候, 下标键变量的名称
        $d_val ?? 'd_val';  # 查询出来的数据遍历的时候, 值的名称
# 样例
{novel:status d_key="key" d_val="val"}
    <li> : {$key}   -    : {$val}   </li>
{/novel:status} 

# 06、获取小说性别筛选条件
# 传参与默认值(传参用下面的变量名,名称不需要$符号, 值的话如果用第三方变量作为值,需要带$符号)
        $d_key ?? 'd_key';  # 查询出来的数据遍历的时候, 下标键变量的名称
        $d_val ?? 'd_val';  # 查询出来的数据遍历的时候, 值的名称
# 样例
{novel:sex d_key="key" d_val="val"}
    <li> : {$key}   -    : {$val}   </li>
{/novel:sex} 

# 07、获取小说排序筛选条件
# 传参与默认值(传参用下面的变量名,名称不需要$符号, 值的话如果用第三方变量作为值,需要带$符号)
        $d_key ?? 'd_key';  # 查询出来的数据遍历的时候, 下标键变量的名称
        $d_val ?? 'd_val';  # 查询出来的数据遍历的时候, 值的名称
# 样例
{novel:sort d_key="key" d_val="val"}
    <li> : {$key}   -    : {$val}   </li>
{/novel:sort} 

# 08、获取小说排行榜排序筛选条件
# 传参与默认值(传参用下面的变量名,名称不需要$符号, 值的话如果用第三方变量作为值,需要带$符号)
        $d_key ?? 'd_key';  # 查询出来的数据遍历的时候, 下标键变量的名称
        $d_val ?? 'd_val';  # 查询出来的数据遍历的时候, 值的名称
# 样例
{novel:ranksort d_key="key" d_val="val"}
    <li> : {$key}   -    : {$val}   </li>
{/novel:ranksort} 


# 09、获取小说分类筛选条件
# 传参与默认值(传参用下面的变量名,名称不需要$符号, 值的话如果用第三方变量作为值,需要带$符号)
        $d_key ?? 'd_key';  # 查询出来的数据遍历的时候, 下标键变量的名称
        $d_val ?? 'd_val';  # 查询出来的数据遍历的时候, 值的名称
# 样例
{novel:category d_key="key" d_val="val"}
    <li> : {$key}   -    : {$val}   </li>
{/novel:category} 


# 10、 获取指定小说多个章节数据并且遍历
# 传参与默认值(传参用下面的变量名,名称不需要$符号, 值的话如果用第三方变量作为值,需要带$符号)
        $count ?? '10';  # 查询条数
        $n_id ;  #  小说ID
        $sort_type ?? "all";  # 排序方式
        $diff_key ?? "";  # 缓存键值差异
        $cache_life ?? '0';  # 缓存时间如果需要开启缓存这个字段必须传而且必须大于0
        $d_key ?? 'd_key';  # 查询出来的数据遍历的时候, 下标键变量的名称
        $d_val ?? 'd_val';  # 查询出来的数据遍历的时候, 值的名称
# 样例
{chapter:list count="10" n_id="$Request.get.n_id" d_key="d_key" d_val="chapter" cache_life="1000"}
<li>
    Index: {$d_key}
    章节名称: {$chapter.c_name}
    章节序号: {$chapter.c_sort_num}
</li>
{/chapter:list}

# 11、 获取小说章节详情数据
# 传参与默认值(传参用下面的变量名,名称不需要$符号, 值的话如果用第三方变量作为值,需要带$符号)
        $n_id ;   # 传入的小说ID
        $c_sort_num ;   # 传入的章节索引
        $c_page ;   # 传入的章节页码 
        $n_key ;  # 查询出来的数据待使用的变量名称
# 样例
{chapter:info n_id="1" c_sort_num="200" c_page="0" c_key="arrChapter01"  /}
{$arrChapter01.c_name}


# 12-1、 获取指定小说章节分页数据并且遍历
# 传参与默认值(传参用下面的变量名,名称不需要$符号, 值的话如果用第三方变量作为值,需要带$符号)
        $page ?? '1';  # 页码
        $limit ?? '10';  # 查询条数
        $n_id ;  #  小说ID
        $sort_type ?? "all";  # 排序方式
        $button_num ?? "10";  # 分页按钮数量
     
        $diff_key ?? "";  # 缓存键值差异
        $cache_life ?? '0';  # 缓存时间如果需要开启缓存这个字段必须传而且必须大于0
        $d_key ?? 'd_key';  # 查询出来的数据遍历的时候, 下标键变量的名称
        $d_val ?? 'd_val';  # 查询出来的数据遍历的时候, 值的名称
        $p_val ?? 'p_val';  # 分页页码数据,这是一个数组。和之前控制器渲染的那个数组一致的。
        $func ;  # 这个参数是一个回调方法名,用来渲染分页页码数据的,该方法需要在 NovelService 类里面实现func(array $arrParams, array $arrSort, array $arrNovel)
# 样例
{chapter:pager page="$Request.get.page" limit="10" n_id="$Request.get.n_id" d_key="d_key" d_val="chapter" cache_life="1000" button_num="3" sort_type="dao" func="generateChapterPager"}
<li>
    Index: {$d_key}
    章节名称: {$chapter.c_name}
    章节序号: {$chapter.c_sort_num}
</li>
{/chapter:pager}

# 12-2、 获取分页小说章节数据不遍历
# 传参与默认值(传参用下面的变量名,名称不需要$符号, 值的话如果用第三方变量作为值,需要带$符号)
        $page ?? '1';  # 页码
        $limit ?? '10';  # 查询条数
        $n_id ;  #  小说ID
        $sort_type ?? "all";  # 排序方式
        $button_num ?? "10";  # 分页按钮数量
     
        $diff_key ?? "";  # 缓存键值差异
        $cache_life ?? '0';  # 缓存时间如果需要开启缓存这个字段必须传而且必须大于0
        $d_key ?? 'd_key';  # 查询出来的数据遍历的时候, 下标键变量的名称
        $d_val ?? 'd_val';  # 查询出来的数据遍历的时候, 值的名称
        $p_val ?? 'p_val';  # 分页页码数据,这是一个数组。和之前控制器渲染的那个数组一致的。
        $export_name ?? 'n_num';  # 查询出来的 所有数据集合,所有数据都可以在里面取。
        $func ;  # 这个参数是一个回调方法名,用来渲染分页页码数据的,该方法需要在 NovelService 类里面实现func(array $arrParams, array $arrSort, array $arrNovel)           generateCategoryPager  generateSearchPager
# 样例
{chapter:pagerexp page="$Request.get.page" page="1" limit="10" n_id="$Request.get.n_id" d_key="d_key" d_val="chapter" cache_life="1000" button_num="3" sort_type="$Request.route.strOrder" func="generateChapterPager" export_name="resData" /}
结构
resData = [
    data = []
    p_data = [
        'pager' => []
        'total' => $intTotal,
        'page' => $intPage,
        'limit' => $intLimit,
        'pages' => ceil($intTotal / $intLimit)
    ],
]
{php}var_dump($resData['p_data']);{/php}

# 13、 获取干扰码
# 传参与默认值(传参用下面的变量名,名称不需要$符号, 值的话如果用第三方变量作为值,需要带$符号)

        $page_code ?? "";  # 页面编码
        $diff ?? "";  # 差异值
         $limit ?? '1';  # 查询条数
# 样例
{site:grm page_code="fdasfadsf" diff="fadsfdsa" num="10" g_key="arrGrm"  /}
{php}var_dump($arrGrm);{/php}


# 14、 获取指定类型小说排行榜并且遍历
# 传参与默认值(传参用下面的变量名,名称不需要$符号, 值的话如果用第三方变量作为值,需要带$符号)
        $count ?? '10';  # 查询条数
        $sort_type ?? "daily";  # 排序方式:
                                        # * *  'daily'     => '天',
                                        # * *  'weekly'    => '周',
                                        # * *  'monthly'   => '月',
                                        # * *  'total'     => '总',
        $n_status ?? "all";  # 查询状态:
                                        # * * 'all' => '所有',
                                        # * * 'lianzai' => '连载中',
                                        # * * 'wanjie' => '已完结',
        $n_sex ?? "all";  # 查询性别:
                                        # * * 'all' =>  '所有',
                                        # * * 'man' => '男生',
                                        # * * 'women' => '女生',
        $diff_key ?? "";  # 缓存键值差异
        $cache_life ?? '0';  # 缓存时间如果需要开启缓存这个字段必须传而且必须大于0
        $d_key ?? 'd_key';  # 查询出来的数据遍历的时候, 下标键变量的名称
        $d_val ?? 'd_val';  # 查询出来的数据遍历的时候, 值的名称
# 样例
{novel:ranklist count="10" sort_type="total" n_status="wanjie" n_sex="man" d_key="key" d_val="Novel" cache_life="86400"}
    <li>
        Index: {$d_key}
        Title: {$novel.n_name}
        Author: {$novel.n_category}
    </li>
{/novel:ranklist}


# 15、 获取随机伪造小说列表并且遍历
# 传参与默认值(传参用下面的变量名,名称不需要$符号, 值的话如果用第三方变量作为值,需要带$符号)
        $count ?? '10';  # 查询条数
        $diff_key ?? "";  # 缓存键值差异
        $cache_life ?? '0';  # 缓存时间如果需要开启缓存这个字段必须传而且必须大于0
        $d_key ?? 'd_key';  # 查询出来的数据遍历的时候, 下标键变量的名称
        $d_val ?? 'd_val';  # 查询出来的数据遍历的时候, 值的名称
# 样例
{site:forgelist count="10" d_key="d_key" d_val="novel" cache_life="1000"}
    <li>
        Index: {$d_key}
        N ID: {$novel.n_id}
        N NAME PINYIN: {$novel.n_name_pinyin}
        N FORGE ID: {$novel.n_forge_id}
        N FORGE TITLE: {$novel.n_forge_title}

    </li>
{/site:forgelist}


# 16、  视图反向控制器(注释函数),在视图开头调用,用来初始化一些操作。这里尽量不要复杂逻辑
# 传参与默认值(传参用下面的变量名,名称不需要$符号, 值的话如果用第三方变量作为值,需要带$符号)
        $func  # SiteContext 里面的方法名

# 样例
{site:helper func="initHomeTKD"  /}


# 17、  获取公共替换变量的值
# 传参与默认值(传参用下面的变量名,名称不需要$符号, 值的话如果用第三方变量作为值,需要带$符号)
    $code # ConverterMovel 里面的arrMap  的key
# 样例
{site:getval code="strNovelCategoryName"  /}


# 18、 获取多个视频数据并且遍历
# 传参与默认值(传参用下面的变量名,名称不需要$符号, 值的话如果用第三方变量作为值,需要带$符号)
        $count ?? '10';  # 查询条数
        $v_category_en ?? "all";  # 查询分类
        $v_parent_category_en ?? "all";  # 查询父分类
        $v_lang_en ?? "all";  # 查询语言
        $v_area_en ?? "all";  # 查询地区
        $v_year ?? "all";  # 查询年份
        $sort_type ?? "all";  # 排序方式  news  tuijian update  'piaofang' => '票房',
        $v_status ?? "all";  # 查询状态:
                                        # * * 'all' => '所有',
                                        # * * 'lianzai' => '连载中',
                                        # * * 'wanjie' => '已完结',
        $diff_key ?? "";  # 缓存键值差异
        $cache_life ?? '0';  # 缓存时间如果需要开启缓存这个字段必须传而且必须大于0
        $d_key ?? 'd_key';  # 查询出来的数据遍历的时候, 下标键变量的名称
        $d_val ?? 'd_val';  # 查询出来的数据遍历的时候, 值的名称
# 样例1
{video:list count="10" 
v_parent_category_en="$Request.route.strParentCategory"
v_category_en="$Request.route.strCategory"
v_lang_en="$Request.route.strLang"
v_area_en="$Request.route.strArea"
v_year="$Request.route.strYear"
sort_type="piaofang"
d_key="d_key" d_val="Video"  cache_life="86400"}
    <li>
        Index: {$d_key}
        Title: {$video.n_name}
        Author: {$video.v_category}
    </li>
{/video:list}

# 样例
{video:list count="10" v_category="$Request.route.category" d_key="d_key" d_val="Video"  cache_life="1000"}
    <li>
        Index: {$d_key}
        Title: {$video.n_name}
        Author: {$video.v_category}
    </li>
{/video:list}

# 19-1、 获取分页视频数据并且遍历
# 传参与默认值(传参用下面的变量名,名称不需要$符号, 值的话如果用第三方变量作为值,需要带$符号)
        $page ?? '1';  # 页码
        $limit ?? '10';  # 查询条数
        $v_category_en ?? "all";  # 查询分类
        $v_parent_category_en ?? "all";  # 查询父分类
        $v_lang_en ?? "all";  # 查询语言
        $v_area_en ?? "all";  # 查询地区
        $v_year ?? "all";  # 查询年份
        $sort_type ?? "all";  # 排序方式
                                        # 'all' =>  '全部排序',
                                        # 'news' => '最新入库',
                                        # 'tuijian' => '推荐',
                                        # 'update' => '最新更新',
        $v_status ?? "all";  # 查询状态:
                                        # * * 'all' => '所有',
                                        # * * 'lianzai' => '连载中',
                                        # * * 'wanjie' => '已完结',
        $key ?? "";  # 查询 搜索
        $button_num ?? "10";  # 分页按钮数量
        $diff_key ?? "";  # 缓存键值差异
        $cache_life ?? '0';  # 缓存时间如果需要开启缓存这个字段必须传而且必须大于0
        $d_key ?? 'd_key';  # 查询出来的数据遍历的时候, 下标键变量的名称
        $d_val ?? 'd_val';  # 查询出来的数据遍历的时候, 值的名称
        $p_val ?? 'p_val';  # 分页页码数据,这是一个数组。和之前控制器渲染的那个数组一致的。
        $func ;  # 这个参数是一个回调方法名,用来渲染分页页码数据的,该方法需要在 NovelService 类里面实现func(array $arrParams, array $arrSort, array $arrNovel)           generateCategoryPager  generateSearchPager
# 样例1
{video:pager page="1" limit="30" button_num="3" cache_life="86400" func="generateVideoPager" 
v_parent_category_en="$Request.route.strParentCategory"
v_category_en="$Request.route.strCategory"
v_lang_en="$Request.route.strLang"
v_area_en="$Request.route.strArea"
v_year="$Request.route.strYear"
sort_type="$Request.route.strOrder"
d_key="d_key" d_val="video" p_val="page_data"  export_name="resData" /}

# 样例2
{video:pager page="1" limit="10" v_category="$Request.route.category" d_key="d_key" d_val="video" p_val="page_data" button_num="3" cache_life="1000" func="generateSearchPager"}
    <li>
        Index: {$d_key}
        Title: {$video.n_name}
        Author: {$video.v_category}
    </li>
{/video:pager}
{php}var_dump($page_data);{/php}

# 19-2、 获取分页视频数据不遍历
# 传参与默认值(传参用下面的变量名,名称不需要$符号, 值的话如果用第三方变量作为值,需要带$符号)
        $page ?? '1';  # 页码
        $limit ?? '10';  # 查询条数
        $v_category_en ?? "all";  # 查询分类
        $v_parent_category_en ?? "all";  # 查询父分类
        $v_lang_en ?? "all";  # 查询语言
        $v_area_en ?? "all";  # 查询地区
        $v_year ?? "all";  # 查询年份
        $sort_type ?? "all";  # 排序方式
        $v_status ?? "all";  # 查询状态:
                                        # * * 'all' => '所有',
                                        # * * 'lianzai' => '连载中',
                                        # * * 'wanjie' => '已完结',
        $key ?? "";  # 查询 搜索
        $button_num ?? "10";  # 分页按钮数量
        $diff_key ?? "";  # 缓存键值差异
        $cache_life ?? '0';  # 缓存时间如果需要开启缓存这个字段必须传而且必须大于0
        $d_key ?? 'd_key';  # 查询出来的数据遍历的时候, 下标键变量的名称
        $d_val ?? 'd_val';  # 查询出来的数据遍历的时候, 值的名称
        $p_val ?? 'p_val';  # 分页页码数据,这是一个数组。和之前控制器渲染的那个数组一致的。
        $export_name ?? 'n_num';  # 查询出来的 所有数据集合,所有数据都可以在里面取。
        $func ;  # 这个参数是一个回调方法名,用来渲染分页页码数据的,该方法需要在 NovelService 类里面实现func(array $arrParams, array $arrSort, array $arrNovel)           generateCategoryPager  generateSearchPager
# 样例
{video:pagerexp page="$Request.get.page" limit="30" button_num="10"
key="$Request.get.keyword"
v_parent_category_en="$Request.route.strParentCategory"
v_category_en="$Request.route.strCategory"
v_lang_en="$Request.route.strLang"
v_area_en="$Request.route.strArea"
v_year="$Request.route.strYear"
sort_type="$Request.route.strOrder"
d_key="d_key" d_val="Video"  p_val="page_data"  cache_life="86400" func="generateSearchPager" export_name="resData" /}
结构
resData = [
    data = []
    p_data = [
        'total' => $intTotal,
        'page' => $intPage,
        'limit' => $intLimit,
        'pages' => ceil($intTotal / $intLimit)
    ],
]
{php}var_dump($resData['p_data']);{/php}

# 20、获取替换模板替换后的数据
# 传参与默认值(传参用下面的变量名,名称不需要$符号, 值的话如果用第三方变量作为值,需要带$符号)
        $code ;  # 替换模板编码
# 样例
{site:replace code="INDEX@INDEX@TITLE"}


# 21、获取视频详情数据
# 传参与默认值(传参用下面的变量名,名称不需要$符号, 值的话如果用第三方变量作为值,需要带$符号)
        $n_id ;   # 传入的视频ID
        $n_forge_id ;   # 传入的伪造视频ID默认值0不伪造
        $n_key ;  # 查询出来的数据待使用的变量名称
# 样例
{video:info n_id="33" n_key="arrVideo" /}
{$arrVideo.n_name}

# 22、获取视频状态筛选条件
# 传参与默认值(传参用下面的变量名,名称不需要$符号, 值的话如果用第三方变量作为值,需要带$符号)
        $d_key ?? 'd_key';  # 查询出来的数据遍历的时候, 下标键变量的名称
        $d_val ?? 'd_val';  # 查询出来的数据遍历的时候, 值的名称
# 样例
{video:status d_key="key" d_val="val"}
    <li> : {$key}   -    : {$val}   </li>
{/video:status} 


# 23、获取视频排序筛选条件
# 传参与默认值(传参用下面的变量名,名称不需要$符号, 值的话如果用第三方变量作为值,需要带$符号)
        $d_key ?? 'd_key';  # 查询出来的数据遍历的时候, 下标键变量的名称
        $d_val ?? 'd_val';  # 查询出来的数据遍历的时候, 值的名称
# 样例
{video:sort d_key="key" d_val="val"}
    <li> : {$key}   -    : {$val}   </li>
{/video:sort} 

# 24、获取视频排行榜排序筛选条件
# 传参与默认值(传参用下面的变量名,名称不需要$符号, 值的话如果用第三方变量作为值,需要带$符号)
        $d_key ?? 'd_key';  # 查询出来的数据遍历的时候, 下标键变量的名称
        $d_val ?? 'd_val';  # 查询出来的数据遍历的时候, 值的名称
# 样例
{video:ranksort d_key="key" d_val="val"}
    <li> : {$key}   -    : {$val}   </li>
{/video:ranksort} 


# 25、获取视频分类筛选条件
# 传参与默认值(传参用下面的变量名,名称不需要$符号, 值的话如果用第三方变量作为值,需要带$符号)
        $d_key ?? 'd_key';  # 查询出来的数据遍历的时候, 下标键变量的名称
        $d_val ?? 'd_val';  # 查询出来的数据遍历的时候, 值的名称
# 样例
{video:category d_key="key" d_val="val"}
    <li> : {$key}   -    : {$val}   </li>
{/video:category} 

# 25-2、获取视频分类筛选条件
# 传参与默认值(传参用下面的变量名,名称不需要$符号, 值的话如果用第三方变量作为值,需要带$符号)
        $d_key ?? 'd_key';  # 查询出来的数据遍历的时候, 下标键变量的名称
        $d_val ?? 'd_val';  # 查询出来的数据遍历的时候, 值的名称
        $category_type ?? 'category_type';  # 自定义 分类类型
# 样例
{video:categorytype category_type="ONE" d_key="key" d_val="val"}
<li class="{if $key == 1}active{/if}">
    <a style="color: rgb({:mt_rand(0,255)}, {:mt_rand(0,255)}, {:mt_rand(0,255)});" 
        href="">
        {$val.v_category}
    </a>
    {foreach $val.children as $intChildrenKey=>$arrChildrenCategory } 
        {$arrChildrenCategory.v_category}:{$arrChildrenCategory.v_category_en}
    {/foreach}
</li>
{/video:categorytype}


# 26、 获取指定类型视频排行榜并且遍历
# 传参与默认值(传参用下面的变量名,名称不需要$符号, 值的话如果用第三方变量作为值,需要带$符号)
        $count ?? '10';  # 查询条数
        $sort_type ?? "daily";  # 排序方式:
                                        # * *  'daily'     => '天',
                                        # * *  'weekly'    => '周',
                                        # * *  'monthly'   => '月',
                                        # * *  'total'     => '总',
        $v_status ?? "all";  # 查询状态:
                                        # * * 'all' => '所有',
                                        # * * 'lianzai' => '连载中',
                                        # * * 'wanjie' => '已完结',
        $v_category_en ?? "";  # 分类拼音
        $v_parent_category_en ?? "";  # 父分类拼音
        $diff_key ?? "";  # 缓存键值差异
        $cache_life ?? '0';  # 缓存时间如果需要开启缓存这个字段必须传而且必须大于0
        $d_key ?? 'd_key';  # 查询出来的数据遍历的时候, 下标键变量的名称
        $d_val ?? 'd_val';  # 查询出来的数据遍历的时候, 值的名称
# 样例1
{video:ranklist count="10" 
v_category_en="$arrChildrenCategory.v_category_en"
sort_type="weekly"
d_key="key" d_val="Video" cache_life="86400"}
{/video:ranklist}

# 样例2
{video:ranklist count="10" sort_type="total" v_status="wanjie"  v_category_en="分类拼音"  v_parent_category_en="父分类拼音"  d_key="key" d_val="Video" cache_life="86400"}
    <li>
        Index: {$d_key}
        Title: {$video.n_name}
        Author: {$video.v_category}
    </li>
{/video:ranklist}


# 27、获取视频语言筛选条件
# 传参与默认值(传参用下面的变量名,名称不需要$符号, 值的话如果用第三方变量作为值,需要带$符号)
        $d_key ?? 'd_key';  # 查询出来的数据遍历的时候, 下标键变量的名称
        $d_val ?? 'd_val';  # 查询出来的数据遍历的时候, 值的名称
# 样例
{video:lang d_key="key" d_val="val"}
    <li> : {$key}   -    : {$val}   </li>
{/video:lang} 


# 28、获取视频地区筛选条件
# 传参与默认值(传参用下面的变量名,名称不需要$符号, 值的话如果用第三方变量作为值,需要带$符号)
        $d_key ?? 'd_key';  # 查询出来的数据遍历的时候, 下标键变量的名称
        $d_val ?? 'd_val';  # 查询出来的数据遍历的时候, 值的名称
# 样例
{video:area d_key="key" d_val="val"}
    <li> : {$key}   -    : {$val}   </li>
{/video:area} 

# 29、获取视频年份筛选条件
# 传参与默认值(传参用下面的变量名,名称不需要$符号, 值的话如果用第三方变量作为值,需要带$符号)
        $d_key ?? 'd_key';  # 查询出来的数据遍历的时候, 下标键变量的名称
        $d_val ?? 'd_val';  # 查询出来的数据遍历的时候, 值的名称
# 样例
{video:year d_key="key" d_val="val"}
    <li> : {$key}   -    : {$val}   </li>
{/video:year} 



{video:imgalt video="$arrVideo" slot="detail_cover" item_type="poster" export_name="strAlt" /}
<img src="{$arrVideo.v_pic|default=''}" alt="{$strAlt}">

{video:imgalt video="$Video" slot="list_poster" item_type="$listCfg.item_type" export_name="strAlt" /}
<img src="{$Video.v_pic|default=''}" alt="{$strAlt}">