采用反代方式运行苹果cms后出现很多诡异问题。。。缓存不更新,文件不更新,设置不更新,等等等。。。
这不已经2026年了,增加了新年份的筛选前端模板却死活不显示,只能放弃系统内置的视频年代设置。
主要逻辑:
根据当前年份,近10年逐年单独列出,更早的按年代划分:按 10 年段列出年代,直到70年代,以及“更早”进行兜底。
application/common/model/Vod.php
if(!empty($year)) { $where['vod_year'] = ['in',explode(',',$year)]; }
修改为
if(!empty($year)) {
$year_parts = array_values(array_filter(array_map('trim', explode(',', $year)), 'strlen'));
$year_in = [];
$year_conditions = [];
$current_short = intval(date('y'));
foreach ($year_parts as $part) {
if ($part === '更早') {
$year_conditions[] = 'vod_year <= 1969';
continue;
}
if (preg_match('/^(\d{2})年代$/u', $part, $m)) {
$decade = intval($m[1]);
$century = ($decade <= $current_short) ? 2000 : 1900;
$start_year = $century + $decade;
$end_year = $start_year + 9;
$year_conditions[] = "(vod_year BETWEEN {$start_year} AND {$end_year})";
continue;
}
if (preg_match('/^\d{4}$/', $part)) {
$year_in[] = intval($part);
}
}
if (!empty($year_in)) {
$year_conditions[] = 'vod_year IN (' . implode(',', $year_in) . ')';
}
if (!empty($year_conditions)) {
$year_clause = '(' . implode(' OR ', $year_conditions) . ')';
if (!empty($where['_string'])) {
$where['_string'] = '(' . $where['_string'] . ') AND ' . $year_clause;
} else {
$where['_string'] = $year_clause;
}
}
}
前端模板仅供参考:
{php}
$current_year = intval(date('Y'));
$year_list = [];
for ($i = 0; $i < 10; $i++) {
$year_list[] = $current_year - $i;
}
$decade_list = [];
$decade_start = intval(floor($current_year / 10) * 10);
for ($d = $decade_start; $d >= 1970; $d -= 10) {
$decade_list[] = sprintf('%02d年代', $d % 100);
}
{/php}
<div class="module-class-items scroll-box">
<div class="module-class-item scroll-content">
<div class="module-item-title">年份<i class="icon-arrow"></i></div>
<div class="module-item-box">
<a href="{:mac_url_type($obj,['area'=>$param['area'],'lang'=>$param['lang'],'year'=>'','level'=>$param['level'],'letter'=>$param['letter'],'state'=>$param['state'],'tag'=>$param['tag'],'class'=>$param['class'],'order'=>$param['order'],'by'=>$param['by'] ],'show')}" {if condition="$param['year'] eq ''"}class="active"{/if}>全部</a>
{maccms:foreach name=":$year_list" id="vo2" key="key2"}
<a {if condition="$param['year'] eq $vo2"}class="active"{/if} href="{:mac_url_type($obj,['area'=>$param['area'],'lang'=>$param['lang'],'year'=>$vo2,'level'=>$param['level'],'letter'=>$param['letter'],'state'=>$param['state'],'tag'=>$param['tag'],'class'=>$param['class'],'order'=>$param['order'],'by'=>$param['by'] ],'show')}" title="{$vo2}">{$vo2}</a>
{/maccms:foreach}
{maccms:foreach name=":$decade_list" id="vo2" key="key2"}
<a {if condition="$param['year'] eq $vo2"}class="active"{/if} href="{:mac_url_type($obj,['area'=>$param['area'],'lang'=>$param['lang'],'year'=>$vo2,'level'=>$param['level'],'letter'=>$param['letter'],'state'=>$param['state'],'tag'=>$param['tag'],'class'=>$param['class'],'order'=>$param['order'],'by'=>$param['by'] ],'show')}" title="{$vo2}">{$vo2}</a>
{/maccms:foreach}
<a {if condition="$param['year'] eq '更早'"}class="active"{/if} href="{:mac_url_type($obj,['area'=>$param['area'],'lang'=>$param['lang'],'year'=>'更早','level'=>$param['level'],'letter'=>$param['letter'],'state'=>$param['state'],'tag'=>$param['tag'],'class'=>$param['class'],'order'=>$param['order'],'by'=>$param['by'] ],'show')}" title="更早">更早</a>
</div>
</div>
</div>

研究一下,后台视频数据管理增加无豆瓣数据筛选