跳转到主要内容
lcnphp 提交于 1 April 2013

(注:本文比较偏向代码方面,希望读者有一定的drupal开发基础)

废话少说,先看我要介绍的效果  demo

由于views的过滤器总是不那么尽如人意,或者样式方面定制起来比较困难,本人的前端技术比较差,views和panels的忠实用户请勿喷smiley,所以本篇文章介绍一下基于现有的模板来开发一套内容过滤器的功能。

以某网站的一个产品列表页面作为例子,产品分为:品牌  、 类型 、系列 三大分类,每个分类下面有若干个小分类,比如品牌有:SUMSANG、HTC,类型有:手机壳、手机套,系列有:流沙系列、裸壳系列。比如我们要搜索

[HTC牌子的]  [流沙和裸壳系列的]  [手机壳和手机套]

查询的条件过滤:1. 过滤出品牌为htc的 ; 2.过滤出系列为流沙或裸壳   3. 过滤出类型为手机套或手机壳

大致流程:

1. 添加内容

   1.1 类型product

   1.2 添加vocabulary:品牌、类别、系列以及它们的各个小分类

   1.3 添加品牌、类别、系列三个字段到product,分别指向三大分类

   1.4 装devel模块批量生成测试数据

    具体的,请安装源码以后再后台查看

2. 定义页面路径

3. 定义页面回调函数

4.根据URL参数过滤内容

主要通过product_get_products()来过滤,最终返回以$node对象为单元的数组

5. 渲染数据

theme('product', array('products' => $products)), 针对过滤以后返回的数据进行渲染,生成最终的页面,注意要先注册‘product’这个theme。

这里的template' => 'product'指定通过模板product.tpl.php来渲染内容,所以我们把前端切好的模板(html+css+js)放到这里面

重点分析:

1. 前端

2.后端

这里需要注意的是db_or()函数,也就是sql语句中的WHERE a.= '123' OR b = '456',因为我们要搜索某个大分类下的某几个小分类,所以这里是“或(OR)”的关系,而大分类之间是“与(AND)”的关系

附件: http://demo.lcnphp.com/lee.rar

源码的后台账号和密码分别是:admin和1