drupal概览

最近半年多时间都在用drupal开发各类网站,对drupal算是有一定程度的熟悉了,感触也颇多,抽空做一些记录也算是对这一阶段学习的一些总结吧,如果有朋友一起来交流那就更好了。

不过俺这写的可不是教程啊,没什么具体代码分析,主要是还没那水平,而且教程的话网上真的很多,drupal官方的就很详细了。

drupal适合谁?

话说如果你只是想找个程序写写blog啥的,或者要推荐给一个不是太熟悉web开发的朋友一套建站系统用的话,那可千万别选drupal,至少不要选drupal core(drupal也有许多发行版),drupal安装完后的默认使用方式在我看来比较不太适合没有什么开发经验的人来用,至少在中国是这样,甚至有些开发者上手的时候也感觉很迷茫(包括我- -)?

我觉得选用drupal的首先应该是开发者,需要有一个基础的系统,在这个系统上根据自己的需求进行扩展开发。

其次即使不是熟悉web开发的人,也应该是对网站相关知识有所了解的人,那样即使不是自己写代码,也能通过drupal网站上数量众多的模块来完成各种类型的网站。

既然drupal是用来做基础系统开发网站的话,为啥不直接用一个php框架呢。

我感觉其实drupal就是一个php框架了,只不过它自带了一部分常规网站的基本功能,使得安装好后基本就能开始用了,用来开发网站的好处就是速度很快,初始的完成度要比一般的php框架高很多,再根据需求安装一些现有模块,普通网站的大部分功能等于都有了,接着需要自己定制的基本就是:开发设计一套自己的网站主题,对一些细节进行调整,对某些比较特殊的业务需求当然要自己开发功能模块。

drupal的开发风格

与一般常见的php mvc框架不同的是,drupal没有完全使用php里的oo语法,说白点就是没有那么多class,主要是基于函数的命名约定来实现hook机制,这点做过wordpress开发的朋友应该比较好理解。

对drupal进行扩展开发,基本就是开发module,drupal基本就是通过module机制建立起来的,除了一些启动文件和常用函数库外,其他基本就都是module,包括核心的一些功能也都是module,一个module可以是独立的,也可以依赖其他module,一个个module就像一快快积木一样,根据需要搭出自己想要的网站。

而module中的php代码,很大一部分都是hook函数,只要根据命名约定定义函数即可,然后在函数中进行需要的操作,在系统运行的时候hook函数会在适当的时机被调用。在自己写的模块中也可以调用自定义的hook,让其他模块可以实现hook,进行扩展操作。

这样的机制使得系统开发起来非常的灵活,在任何地方都可以捕获到某个操作,比如我要在自己的模块中实现新用户建立的时候发一封邮件给网站管理员: 那只需写一个hook_user_insert函数,当新用户建立的时候,系统就会调用我定义的这个函数,然后把用户对象传进来,所以我只要在这个函数内执行发送邮件的代码即可。

在开始开发之前要做的

如果你准备开始接触drupal开发了,一些心里准备还是要有的- -

首先我觉得drupal是一个非常庞大并且复杂的系统,不像有些web框架,照着快速入门一上来基本就能开始写代码了。如果你报着一上来就想写个啥功能的想法钻进drupal里,你可能会觉得完全无从下手,玩了一段时间可能就没兴趣了。

刚开始接触drupal的时候最好先要理解它里面的一些重要的概念,比如什么content type、node、field、taxonomy、block等,要理解这些东西比较快的方法当然就是装个drupal然后登陆到后台开始使用了,然后再结合看文档,全面的了解下druapl的基本结构

话说,象我这种智商不太高的人,理解这些东西确实还是花了些时间的,当初坚信drupal是因为得知白宫都开始用这玩意了,然后花了点时间把开发文档基本都看了一遍,才渐渐的有了云开雾散的感觉。

当然了,也不用太担心学drupal会很费时间,只是相对一般的php mvc框架会稍微多花一点时间去入门,基本上看英语文档如果没什么大障碍的话,用1-2天了解drupal基本结构后就能开始照着文档自己 写模块了。这点时间对于以后高速的开发效率还是值得的,而且drupal虽然没有大量的使用OOP语法,但是它的开发流程都是相当有规律可循的,只要了解了基本的编码规则,之后再深入学习的时候,就会觉得非常的快。