eyoucms的图集在很多时候充当相册功能的作用,调用的话也很简单volist标签循环输出就可以,痛就痛在这个volist标签分页居然不支持,怎么办?
以下办法通过前端切割数据进行显示,配合eyoucms静态缓存清除,达到前端图集分页的目的:
地表最强eyoucms图集分页代码
一、数据处理:
{eyou:arclist row=’1′ titlelen=’30’}
{eyou:arcview id=’field4′}
{php}
$p_num = 3; //每页显示条数
$p_btn = 2; //分页按钮整数阈值,越大显示越多
$p_con = $field4[image_list]; //图集json
$ck = ‘page’.$field4[typeid];
$thenum = $_COOKIE[$ck];
if(!$thenum){ $thenum = 1; }
$p_totle = count($p_con);
$p_list = [1];
if($p_totle > $p_num && $p_num > 0) {
$p_con = array_slice($p_con, ($thenum-1)*$p_num, $p_num); //内容切割
$p_all = $p_totle/$p_num;
$p_allint = intval($p_all);
$p_all = $p_all > $p_allint ? $p_allint+1 : $p_allint;
for ($c = 0; $c < $p_all; $c += 1) {
if($c >= $thenum-$p_btn && $c < $thenum+($p_btn-1)) {
$p_list[$c] = $c+1;
}
}
$p_list[$p_all-1] = $p_all;
}
{/php}
<script type=”text/javascript”>
//放在变量$ck之后,在列表渲染之前刷新
var url = window.location.href;
theurl = url.indexOf(“clear”);
var clear = url+’&clear=1′;
var ck = document.cookie.indexOf(“{$ck}=”);
if(ck == -1 && theurl == -1){
location.replace(clear);
}
function page(obj) {
document.cookie=”{$ck}=”+obj.title;
theurl == -1 ? location.replace(clear) : location.reload();
}
</script>
{eyou:volist name=”$p_con” id=’field5′}
<li class=”projectitem”>
<a rel=”nofollow” href=”{$field5.image_url}” target=”_blank” class=”item_link”>
<div class=”project_img”>
<img src=”{$field5.image_url|thumb_img=###,500,320,3}” />
</div>
<div class=”project_info”>
<div>
<p class=”title”>{$field4.title}</p>
<p class=”subtitle”>{$field5.intro}</p>
</div>
</div>
</a>
<a rel=”nofollow” href=”javascript:;” target=”_blank” class=”details”>more</a>
</li>
{/eyou:volist}
{/eyou:arcview}
{/eyou:arclist}
二、分页的输出:
{eyou:foreach name=’$p_list’ item=’p’}
<a rel=”nofollow” href=”javascript:;”{eyou:eq name=’$thenum’ value=’$p’} class=”active”{/eyou:eq} title=”{$p}” onclick=”page(this)”>{$p}</a>
{/eyou:foreach}
———————————–
最后,明白这个原理,作用就不仅仅是图集了,任何数据输出,都可以用这个超级代码进行切割分页显示。