首页 > 代码库 > 静态刷新页面来完成筛选以及数组排序,这是正确的姿势吗?(下)
静态刷新页面来完成筛选以及数组排序,这是正确的姿势吗?(下)
前提:
在一堆我不太理解的缘由下采取了静态刷新页面来做类商城的网站,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参数的键值对以及自身的键值对.
静态刷新页面来完成筛选以及数组排序,这是正确的姿势吗?(下)