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

前提:

在一堆我不太理解的缘由下采取了静态刷新页面来做类商城的网站,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参数的键值对以及自身的键值对.

时间: 2024-07-31 05:30:38

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

Asp.Net MVC 页面代码压缩筛选器-自定义删除无效内容

Asp.Net MVC 页面代码压缩筛选器 首先定义以下筛选器,用于代码压缩. /*页面压缩 筛选器*/ public class WhiteSpaceFilter : Stream { private Stream _shrink; private Func<string, string> _filter; public WhiteSpaceFilter(Stream shrink, Func<string, string> filter) { _shrink = shrink;

vue写的页面,页面a有筛选条件,跳转到其它页面,再跳转回A的时候,只有跳转修改页面modify的情况不清空筛选条件的实现方法

使用localStorage,进入修改页面,设置localstorage,跳转回筛选页面时,监听route,判定设置localStorage是否是具体的值,如果是,不清空筛选条件,否则清空,最后把删除设置的localstorage. 具体操作如下: 修改页面是modify.vue created () { const sign = 'modify' localStorage.setItem('signs', sign) } 筛选页面是a.vue '$route': function (to) {

产品列表页分类筛选、排序的算法实现(PHP)

一.简单的单条件查询 工作都是从简单的开始,先从最简单的单表查询开始,这个一般用在首页以及一些比较独立的页面,只需要查找几个符合条件的产品展示出来即可,可以使用分页或者不使用分页.下面这个是产品控制器 ProductController 中的一个函数,用于简单的查询,比如199元专区就可以使用 getTypeSimPro('price=199'); /**简单的筛选条件分类产品,单表查询 * @param string $sql 单表查询的SQL * @param int $countPerPa

SharePoint 2013 Designer系列之数据视图筛选

在SharePoint中,我们经常需要对列表进行简单的筛选,这时,数据视图就有作用了,我们可以定制对于字段的筛选,来进行展示:特别的,筛选不同于搜索,并没有对于附件或者文档的全文检索,如果需要全文检索,可以使用列表的垂直搜索功能. 1.新建一个测试页面,然后右键在高级模式下编辑,如下图: 2.在PlaceHolderMain节点里,加入webpartzone,用来添加数据视图: 3.数据视图选择News列表,如下图: 4.列表视图就选择第一个就可以了,如下图: 5.查看测试页面,如下图: 6.在

引用“人人都是产品经理“-移动端电商类页面设计说

引用:http://mt.sohu.com/20160119/n435004127.shtml 移动端产品最难的地方就是在很小的屏幕上展示出你所有的业务.有了屏幕的限制,加上移动端的客户碎片化阅读的习惯和高流失率.特别是电商类app更难展示出来.所以才有了像列表式小ICON展示方式.电商的标准配置的首页都会将banner保留下来了,作为运营推广最重要的手段之一.而电商app是要展示内容最多也是最难做的一类app.既要保证业务首页展示完整性,还要保证用户体验.所以在每一个页面设计时都要讲究一些技巧

[转载]织梦DEDE多选项筛选_联动筛选功能的实现_二次开发

织梦默认的列表页没有筛选功能,但有时候我们做产品列表页的时候,产品的字段比较多,很多人都需要用到筛选功能,这样可以让用户更方便的找到自己所需要的东西,实现这个联动筛选功能需要对织梦进行二次开发,下面就告诉大家如何对织梦进行二次开发实现这个很多人都需要的筛选功能,如下图所示: 首先需要说明的是这个功能需要在模板里面用到php标签,所以需要在后台模板引擎禁用标签里面解除这个标签的禁用,具体方法: 后台——系统——系统基本参数——其它选项——模板引擎禁用标签:php 将这个PHP去掉后保存就可以了!

SharePoint 根据时间筛选

最近在整SP列表 老大要求用列表规范周报格式. 提出要在一个视图内查看上周一至周日的内容 翻了下资料想到了以下几种方法 1.在视图页面添加时间筛选器webpart,用参数传入列表筛选 2.在列表添加按钮及TextBox 通过查询字符串 写段js传入参数查询列表 3.直接通过字段值判断 第一种实现方式截图: 第二种实现效果截图 第一种实现方式: 打开SharePoint desiger,插入两个日期筛选器 点击筛选按钮,在弹出框中选择条件 STime为新建的参数,如下图 以上在desiger的设计

使用Micrisoft.net设计方案 第三章Web表示模式 Web模式集群详细介绍 Intercepting Filter(截取筛选器)

Intercepting Filter(截取筛选器) 我们在建立Web应用程序时需要更多的控制权限,或者需要在Web请求前或后,插入自己的业务逻辑. 如何围绕 Web页面请求来实现公共的预处理和后处理步骤? 有许多方法可以解决此问题,因此您需要考虑这会涉及哪些影响因素和权衡因素: A.常见的做法是,将较低级别的功能(如处理 HTTP 头.Cookie 或字符编码)与应用程序逻辑分离,这样有助于限制更改的扩散. B.许多预处理和后处理任务是所有 Web 页面公共的,应该在中心位置实现这些功能,以避

PHP页面爬虫

爬虫想必大家都很了解,通过脚本对目标文件进行抓取. 我想获取每天菜市场菜价. 查看控制台,如果有相关信息得接口自然方便不过了,直接请求接口获取数据就可以了. 对于页面信息,需要过滤筛选. 图中信息很规律易于筛选. 首先获取整个页面,可以使用CURL方式请求页面地址,CURL方式也便于需要验证信息的页面传递参数. 过滤页面数据可以使用正则表达式匹配替换. <?php header( "Content-type:text/html;Charset=utf-8" ); $ch = cu