上海戴文 - Drupal开发 在线教育

你在这里

基于drupal的复合型过滤器开发例子(提供整个项目源码)

图片: 

(注:本文比较偏向代码方面,希望读者有一定的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

 

field_vote: 

猜你喜欢

评论

Good job!!!

欢迎来我的个人站(幽灵古堡)和我交流
天下Drupaler是一家~~

Cool. 效果很好。

支持无私分享yes

用custom module + template的方式,代码比较干净,个人也比较喜欢。

再次赞一个yes

后台用户名密码不正确

http://drupal.org/node/992400  这里有修改管理员密码的方法

qq 1838199902
http://www.lcnphp.com

有好几个产品类,不知道怎么套

不错嗯!

我的博客 http://www.xiezewen.com

非常不错,赞一个

这样的解决方案确实比较简洁,但是感觉没有利用上Drupal的优势。

激动,赞一个!yes 感谢分享。

_____________________________

做一只蜗牛,渐渐升到鹰的高度。
      个人drupal网站:龙马部落

一直在学druapl,这个网站对我的帮助很大.brushforyou

各位学长,

 

小弟下载案例时提示网页打不开,谁还有源码,请共享一下....

请发到小弟的邮箱:909021694@qq.com 

谢谢....忠实的drupal粉丝...