- 相关推荐
drupal学习总结
原理
模块(Modules)
drupal是一个高度模块化,开源的web内容管理框架。它被设计为可被定制的,但是定制是通过覆写核心功能或者增加模块来完成的,而不是修改核心组件中的代码。Drupal中一般通过三种方式来添加功能:启用已存在的模块(核
心模块),安装Drupal社区成员编写的模块(第3方模块),编写自己的模块。
钩子
Drupal的所有功能都通过模块来实现,而模块又通过钩子来和系统联系起来,被系统调用的。钩子可以看作是Drupal的内部事件,不同的事件类型由不同钩子函数来调用,这些钩子函数的命名规则都是由drupal定义好的。我们只需要了解什么样的事件动作要用什么钩子来实现调用。这样,当我们在网站上执行某些操作时,drupal就会根据我们操作的类型来查找相应的钩子,通过钩子,调用符合条件的模块。
主题(Themes)
Drupal是被设计为内容和显示分离的,这样既利于开发,也方便维护。所以,当后台的数据内容要被显示时,就会通过主题(主题函数或主题模版)来进行包装,最后显示在页面上的是数据和主题包装后的效果。Drupal支持多种模版引擎,比如smarty,PHPTemplate. 主题也是通过主题钩子来实现调用的,
首先,我们先写好相应的模版文件,
然后在模块中通过“模块名+theme”来注册这些主题。
最后当模块要输出数据时,就会通过theme(“主题”,“数据”)来调用相应的主题模版,并把数据也传进模版,然后theme函数把整合后的html页面返回。
节点(nodes)
Drupal中的内容类型都被看做是一个节点来管理,并且所有节点的底层结构都是一样的。这样有利于扩展。
区块(blocks)
区块用来展示一些特定内容的信息。比如在线用户数,流量统计等,一般用于首页。 一个区块包括标题和内容。
执行过程
1. 从index.php开始,Drupal的大多数请求都从这里开始。
2. 对于每个请求,Drupal通过一系列的引导指令阶段来引导它自己
3. 建立初始链接以供数据库查询使用
4. 检查请求IP是否来自一个被禁的主机;如果是,那么将拒绝访问。
5.Drupal 加载足够的支持代码来决定是否需要从页面缓存中提供一个页面。如果在会话中显示请求来自于匿名用户并且启用了页面缓存,那么将从缓存中返回页面,执行到此停止。
6. 在路径阶段,将加载处理路径和路径别名的(aliasing)的代码。该阶段使得用户可读的URL被转化为Drupal路径,并处理内部Drupal 路径的缓存和查询操作。
7.加载一个通用函数库,主题支持,和支持回调映
射,文件处理,Unicode,PHP 图片工具集,表单的创建和处理,自动排序的表格,和结果集的分页。并加载所有启用了的模块。最后Drupal 调用init钩子,这样在对请求正式开始处理以前,将有机会通知相应的模块。
8.现在是时候获得浏览器的请求并将它委托给一个处理它的函数。
9.当Drupal 为浏览器请求的URL 找到一个存在的回调函数,并且用户有权访问该回调函数,那么控制权将转移给回调函数。
10.回调函数做了流程要求做的事情,并收集满足请求所需要的数据。
11.主体化涉及到将已被取回,操作或者创建的数据转化为HTML。Drupal 将使用管理员选用的主题来为网页提供一个合适的外观,并将生成的HTML 移交给web浏览器。
使用方法
环境和目录设置
1. 在sitesdefaultsettings.php里设置数据库连接信息。
2. 核心模块和主题目录不要动,所有新开发的模块和主题模版都集中在sitesallmodules
和sitesall hemes中。
3. 新添加的模块在系统的“管理站点构建”中设置启用/禁用。
4. Drupal中的所有文件和数据库默认都是用的utf-8编码。
模块开发步骤:
1.首先为模块起一个名字,比如叫mytest,然后模块目录名,info文件,module文件都用这个名字命名。
2.在sitesallmodules里建立一个文件夹叫mytest,在mytest文件夹下建立如下文件: mytest.info:用来向Drupal提供一些关于我们模块的信息
mytest.install:启用模块时用来创建数据库信息(如果此模块涉及到改数据库的话)。 mytest.module:模块内容。
如果有自己的主题模版,在sitesall hemes建立一个主题,模版文件和css,图片等文件都放到这个目录下
3.模块中的钩子函数
1.hook_menu:菜单钩子,每一个菜单钩子里都是一个联合数组。从菜单钩子开始,执
行一系列的功能操作。通过菜单钩子,可以创建网站各个模块功能的入口链接。 菜单钩子的回调类型(type):
1. MENU_CALLBACK 普通的菜单回调,不在菜单区块显示,只能通过url访问
2、MENU_NORMAL_TIEM 可以在菜单区块显示
3. MENU_DEFAULT_LOCAL_TASK //可以继承父菜单的类型
2. 表单函数名_submit($form,$form_values) :提交表单操作。
3.表单函数名_validate($form_id, $form_values):对表单里输入的内容进行验证,
如果不符合条件,将会提示错误信息。
4. drupal_get_form() 生成表单html,
5.User_access():测试用户是否有访问权限。有则反回true,没有则反回false.
6.hook_perm():定义用户权限。
7.hook_user($op, &$edit, &$user, $category = NULL) 对用户帐号进行操作,以及修改$user 对象.
8.节点中用到的钩子
hook_($node)保存一个新的节点时将会调用此钩子
hook_update($node) 编辑完一个节点时调用该钩子。
hook_(&$node) 删除一个节点时调用
hook_view($node, $teaser = FALSE, $page = FALSE) 显示一个节点信息
hook_access() 用来限制对一个节点类型的访问
9. 数据库操作:
db_query() 执行sql语句,返回一个结果集
db_fetch_object()从结果集中取出一行作为一个对象。
db_fetch_array()取出的结果作为一个数组
10.主题
Hook_theme() 注册模块要用到的主题钩子
Theme_主题名() 定义主题函数,用这种方法可以不写主题模版,在这里直接定义主
题样式。
Theme(‘主题名’,’参数’) :调用主题函数,此函数返回处理后的html,用于输出到览器。
个人理解
了解drupal的关键在于理解它的模块化框架和钩子系统,它的功能都是通过模块来实现的,每个模块又可以被启用或者禁用,而系统对模块的控制就是通过钩子来实现的。也就是说模块只有通过钩子才能被系统所调用。
要灵活的运用drupal,我觉的首先要掌握drupal为实现各个功能而定义的钩子函数,这样,当我们在写模块时,就知道什么功能要用什么钩子函数。
【drupal学习总结】相关文章:
进修学习总结_学习总结_03-29
跟班的学习总结范文-学习总结08-08
学习的总结07-03
学习总结09-07
论语个人学习总结-学习总结09-28
学习师德师风学习总结03-31
师德师风学习学习总结09-15
跟班学习总结05-23
学生学习总结07-10
学习反思总结12-21