我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

bW博客 http://bw.bo-blog.com/ 也玩了一段时间了,整体上感觉就是:逼格高,思路好。

苏南大叔:bW模板深度定制,如何定制处理分页? - bw模板分页
bW模板深度定制,如何定制处理分页?(图1-1)

但是用起来就是真心不顺手啊。前不久,我就吐槽说,bw的皮肤不好制作,分页麻烦。见:

代码

不过最近,苏南大叔解决了这个问题,没有修改它的库文件,仅仅在皮肤里面做了修改。
下面先奉上修改的pagination.php文件。大家可以看看思路哦。虽然代码写的不是太好,但是总归是解决了问题的。

<?php
$go = @trim($_GET["go"]);
$go_arr = explode("/", $go);
$current_page = @intval($go_arr[count($go_arr) - 1]);
$current_page = ($current_page <= 0) ? 1 : $current_page;
$params = get_defined_vars();
$currentPageLink = $conf["canonicalURL"];
//$passData = $params["this"]->passData;//非登陆状态下是null,很邪门
$passData = $this->passData;
$firstPageLink = @$passData["firstPageLink"];
$firstPageLink = $this->passData["firstPageLink"] = empty($firstPageLink) ? "#" : $firstPageLink;
$prevPageLink = @$passData["prevPageLink"];
$prevPageLink = $this->passData["prevPageLink"] = empty($prevPageLink) ? "#" : $prevPageLink;
$nextPageLink = @$passData["nextPageLink"];
$nextPageLink = $this->passData["nextPageLink"] = empty($nextPageLink) ? "#" : $nextPageLink;
$finalPageLink = @$passData["finalPageLink"];
$finalPageLink = $this->passData["finalPageLink"] = empty($finalPageLink) ? "#" : $finalPageLink;
$go_arr_final = explode("/", $finalPageLink);
$max_page = @intval($go_arr_final[count($go_arr_final) - 2]);
$base_url = ($max_page <= 0) ? join("/", array_splice(explode("/", $currentPageLink), 0, -2)) : join("/", array_splice($go_arr_final, 0, -2));
$max_page = ($max_page <= 0) ? 1 : $max_page;
if ($max_page == 1) {
    $firstPageLink = $this->passData["firstPageLink"] = "#";
    $finalPageLink = $this->passData["finalPageLink"] = "#";
}
if ($firstPageLink != "#") {
    ?>
    <a href="[[::firstPageLink]]"><span class="page">首页</span></a>
    <?php
}
if ($prevPageLink != "#") {
    ?>
    <a href="[[::prevPageLink]]"><span class="page">上一页</span></a>
    <?php
}
for ($i = 0; $i < $max_page; $i++) {
    $tmp_page = $i + 1;
    $link = $base_url . "/" . $tmp_page . "/";
    $current_css = ($tmp_page == $current_page) ? "now-page" : "";
    echo "<a href='" . $link . "' class='" . $current_css . "'><span class=\"page\">第" . $tmp_page . "页</span></a>";
}
if ($nextPageLink != "#") {
    ?>
    <a href="[[::nextPageLink]]"><span class="page">下一页</span></a>
    <?php
}
if ($finalPageLink != "#") {
    ?>
    <a href="[[::finalPageLink]]"><span class="page">尾页</span></a>
    <?php
}
?>

关键代码

关键的突破口就来来自于:

$params = get_defined_vars();
$passData = $params["this"]->passData;

用get_defined_vars()这个系统函数,获取到了当前上下文环境中可用的所有变量。然后发现了变量$this,进而找到了passData属性,进而可以修改传递到模板上用于替换的变量们。思路比较奇葩,大家就看看吧。哈哈。当然了,目前来看就用

$this->passData

就可以访问相关的变量了,但是为了记录思路过程,这里还是把get_defined_vars()贴了出来。但是这里的get_defined_vars在非登陆状态下居然拿不到数据,很邪门。

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   bw    theme