首页 > 代码库 > 静态刷新页面来完成筛选以及数组排序,这是正确的姿势吗?(下)

静态刷新页面来完成筛选以及数组排序,这是正确的姿势吗?(下)

前提:

在一堆我不太理解的缘由下采取了静态刷新页面来做类商城的网站,SEO的课题还不懂,大概做一个猜想

 

猜想:

多钟筛选出来的可能性,在单页面(url不变的情况下),是不可能被多个索引检索到的.如果用异步加载的方式来筛选数据,就是这种情况,url不会变.

现在是根据筛选条件生成不同的url,每个筛选都对应了一个url,增加了被索引检索到的可能性.

 

JU神跟果爷的话:

伪静态是为了方便搜索,搜索引擎收录的都是静态页面.

那么基本上可以确定为什么不用异步加载数据了.

 

之前有提到过的url生成,我已经封装成了一个简便的方法

前文的穷举生成url,把思路理顺,基本确立了一套方法来生成url

 

这种做法的基本思想就是:

1.根据需求获取当前url的GET参数

    /**
     * @param $paras 需要或者不需要的GET参数,根据mode的值来进行运算
     * @param string $mode $mode=‘set‘则为需要的GET参数,若为unset则unset掉paras中的参数
     * @return array
     *
     *
     */
    protected function _GET($paras, $mode = ‘set‘)
    {
        $arr = array();
        if ($mode == ‘set‘) {
            foreach ($paras as $v) {
                isset($_GET[$v]) ? $arr[$v] = $_GET[$v] : ‘‘;
            }
        } elseif ($mode == ‘unset‘) {
            foreach ($paras as $v) {
                if (isset($_GET[$v])) {
                    unset($_GET[$v]);
                }
            }
            $arr = $_GET;
        }
        return $arr;
    }

 

2.那么,这些参数就是我要一直使用的,构成多条件筛选的关键.最终的目的是构成URL,用穷举固然可以,或者,把数据格式化,再用foreach来遍历处理:

    /**
     * 数据格式:
     * @param paras :当前的筛选条件
     * @param data :待添加url的数据格式如下:
     *
     * array(
     *     $key1=>array(
     *            0=>[],
     *            1=>[]......
     *     ),
     *       $key2=>array(
     *            0=>[],
     *        1=>[]......
     *       )
     * )*/
    protected function _url_format($data, $paras)
    {
        foreach ($data as $k => $v) {
            foreach ($v as $a => $b) {
                $data[$k][$a][‘url‘] = ‘?‘ . $k . ‘=‘ . $b[‘id‘];
                foreach ($paras as $key => $value) {
                    if ($key != $k) {
                        $data[$k][$a][‘url‘] .= ‘&‘ . $key . ‘=‘ . $value;
                    }
                }
            }
        }
        return $data;
    }

 

这种方式对数据格式有严格的要求,所以在使用这个函数前我会把所有的数据都格式化.我对自己的要求是foreach嵌套不能超过三层..

对_url_format这个方法用文字来描述的话就是:(不建议阅读,建议理解读代码理解)

所有的条件选择$data都是以二维数组的形式存在,第一维的key是表示他们代表哪个类别的筛选,对应get参数中的key.

第二层遍历的第一步就是生成自身的url,这个很好理解

第二层的遍历里,嵌套了一个get参数的遍历.当get参数的key与当前$data的条件key不匹配时.则在该url的末尾加上get参数的其他键值.

最后生成的就是一个包含了自己需要get参数的键值对以及自身的键值对.

 

静态刷新页面来完成筛选以及数组排序,这是正确的姿势吗?(下)