`
haohappy2
  • 浏览: 326279 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

some drupal advantage

阅读更多
001-- 搜索引擎友好的URL
002-- Drupal有一个优秀的模块化结构,提供了许多模块,包括短消息、个性化书签、网站管理、Blog、日记、电子商务、电子出版、留言簿、Job、网上电影院、论坛、投票等模块。Drupal模块的下载、安装、定制非常方便

003-- Drupal提供了强大的个性化环境,每个用户可以网站内容和表现形式进行个性化设置

004-- Drupal提供了基于角色的权限系统,没有必要对每个用户进行授权,只需要对角色进行授权

005-- Drupal提供的站内搜索系统能对站内的所有内容进行索引和搜索

006-- Drupal的模板系统将内容和表现分离,可以很方便地控制网站的外观+ Drupal提供内建的新闻聚合工具 + 提供完善的站点管理和分析工具
007-- Drupal的Caching机制能有效减少数据库查询次数,从而提高站点性能,降低服务器负荷

1. 模块化系统(Module system)。

Drupal把各个具有独立功能的部分抽象为模块,各个模块(除核心模块)只要按照事先巧妙设计好的统一规范来实现接口(http: //api.drupal.org/)------这些接口在drupal中表现为按照特定规则命名的PHP代码文件、特定PHP代码文件内按照特定规则命名的PHP函数、特定PHP函数内根据特定参数来执行相应功能的PHP代码块-------就能在核心代码的调度下实现模块自有的功能、在模块之间自动进行交互、通信,这样使得整个系统的功能扩展更灵活更规范。各个模块之间的功能相对独立,单个模块内部的变动一般不会对其他模块原有功能造成影响,单个模块的问题一般不会导致整个系统不可用,这样就可以大大降低系统开发和维护的成本。
Drupal 模块化的安装使用也很方便,只要将相应文件复制到modules目录下,就可以在'管理-设置'里面方便地开启使用了。

2. 钩子机制(Hooks system)

钩子机制其实是drupal模块化系统的关键部分。Drupal模块化系统基于一个"钩子"的概念,一个钩子是一个以foo_bar() 方式命名的php函数。其中foo是模块的名字,bar是钩子的名字。每个钩子都定义了一系列的参数和返回类型,执行特定的功能。例如钩子 myblog_load($node)会在系统载入模块myblog对应的节点(node)信息时候执行,把模块对应的节点特定信息附加到节点中去。钩子可以使得模块(module)可以在drupal核心的调度之下进行交互,包括和核心本身进行交互。Drupal的模块机制大大简化的实现模块具体功能的开发、维护效率,因为你只需要实现特定的钩子函数就能获得对应的功能,而根本不用关心这些函数是如何被调用、如何与系统交互。

3. 内容类型面向节点

这个术语是借用编程语言中面向对象的概念。在编程语言中,面向对象编程是指在编写应用程序时候,以对象为基本单位,在基本对象(object)的基础上,通过封装、继承、抽象、多态、重载等方式,建立起整个复杂的应用程序架构。面向对象编程通过把客观世界抽象为对象的组合及其相互交互,有效地降低了程序开发的抽象性和复杂度。
drupal把所有的内容类型都看作节点,各种内容类型都是在基本节点的基础上进行扩展而实现的。例如你的drupal站点有一个叫做供应(supply)的内容类型,那么这个内容类型就自动有了基本内容类型(node)的属性和方法了,然后你可以在这个基础之上通过添加少量额外的属性和方法来实现supply了。这跟面向对象的概念不谋而合,因此我把它称为drupal的内容类型面向节点特性。
把所有的内容类型当作节点的好处是,这样它们就可以基于相同的底层数据结构了。对于开发者来说,这意味着你可以对所有的内容以同样的代码方式进行许多操作。可以在节点上非常容易的进行一组操作,并且你也可以为你自己的节点类型添加许多额外的功能。由于所有的内容都是节点,所以所有的内容都可以轻易的使用 drupal内置的支持对内容的搜索、创建、编辑和管理等操作。这种内容一致性对于客户端用户的体验来说也同样明显。由于创建、编辑和删除节点的表单拥有一个类似的外观,这样就保持了用户体验的一致性。
不过所有内容类型均基于node,我认为也有缺点,就是drupal核心在执行node相应钩子函数的时候,会尝试执行所有节点类型对应的钩子函数,这样一旦内容类型增多,系统性能就会直线下降。

4. 表单API(Form API)
Drupal提供了一个应用程序接口(API)来生成、验证、处理HTML表单。表单的生成、验证、处理函数都是按照约定的命名规则进行命名,例如内容类型myblog的表单生成函数默认为myblog_form(&$node,&$param),对应的表单验证函数为 myblog_form_validate($form_id, $form_values),而表单处理函数为myblog_form_submit($form_id, $form_values)。drupal核心会在恰当的时候根据命名规则去执行相应的函数去生成、验证、处理表单。
另外,表单API将表单抽象为一个关于属性和值的嵌套数组。在生成页面时,表单呈现引擎会在适当的时候将数组呈现出来。
表单API的作用不但可以大大简化站点开发中最常见的表单生成、验证、处理的工作,更加大大提高了对表单变更的适应能力。

5. 主题机制(Theme system)
Drupal支持为站点配置不同的主题。一个主题是由一组展示你站点外观的文件------主要是模板文件------组成。模板文件按照约定的命名规则来进行命名。例如node.tpl.php文件为默认的节点内容显示模板文件,而node-supply.tpl.php为节点内容supply的内容显示模板文件;又如page.tpl.php为默认的页面内容显示模板文件,而page-supply.tpl.php为模块supply的页面内容显示模板文件。你甚至可以在template.php中自定义自己模板文件来实现特定的内容显示模板(参考 http://api.drupal.org/api/group/themeable)。
模板机制的好处是你可以把站点数据处理和数据显示完全分离,这样就可以把开发人员的精力从繁琐的内容显示格式的工作中解脱出来,专注于实现站点的业务逻辑功能。其次,模板机制也使得我们可以轻易的改善站点的外观而不需要调整现有程序。

6. 菜单机制(Menu system)
Drupal通过菜单钩子hook_menu来实现它的菜单机制。只要在模块中的hook_menu钩子函数中按照约定的规则来定义菜单,drupal核心就会在站点界面中实现相应的菜单(具体请参见http://api.drupal.org/api/group/menu/)。通过菜单机制,开发者可以轻易的设计和调整站点的菜单系统,大大解放了开发者的劳动。
6. Ajax支持
Drupal内置对jQuery和JSON的支持,jQuery和JSON的完美结合,使得Drupal有了一个轻量级、高效的AJAX实现,大大提高了编写AJAX应用的效率。
0
1
分享到:
评论

相关推荐

    some drupal modules

    drupal modules drupal modules drupal modules drupal modules

    drupal-9.0.1_drupal9_drupal9教程_drupal9开发实例_

    Drupal 9.0.1是Drupal内容管理系统的一个重要版本,带来了许多新特性和改进,旨在提升网站构建者的体验和网站的性能。Drupal是一款开源的PHP框架,被广泛用于创建复杂、可扩展的Web应用程序和网站。这个9.0.1版本的...

    Drupal7宝典+Drupal开发指南+Using Drupal

    Drupal是开源的内容管理系统(CMS),在全球范围内被广泛用于构建各种网站,从个人博客到复杂的商业平台。本资源包包含了三本书籍,可以帮助你深入理解和掌握Drupal7的各个方面: 1. **Drupal7宝典**: 这本书全面...

    Drupal data Drupal data

    Drupal 是一个强大的开源内容管理框架,它用于构建各种类型的网站,从小型个人博客到大型企业级应用程序。在“Drupal data Drupal data”的标题和描述中,虽然没有提供具体的信息,但我们可以推断这可能涉及到与...

    drupal7与drupal6版本修改内容

    ### Drupal 7 与 Drupal 6 版本修改内容 #### 概述 Drupal 是一个开源的内容管理系统(CMS),被广泛用于构建各种类型的网站。从 Drupal 6 升级到 Drupal 7,Drupal 社区引入了大量的改进和新功能,以提高用户体验...

    Drupal专业开发指南(Drupal5)

    ### Drupal专业开发指南(Drupal5):关键知识点解析 #### 一、Drupal概述 - **定义**:Drupal是一款开放源代码的内容管理系统(Content Management System, CMS),被广泛应用于搭建多种类型的网站,包括博客、论坛、...

    drupal7安装说明

    Drupal 7 是一个流行的开源内容管理系统,用于构建各种类型的网站。本教程将详细介绍如何在本地环境中安装 Drupal 7,特别是针对使用 Apache2、PHP5 和 MySQL5 的集成环境,如 AppServ。 首先,确保你已经安装了...

    drupal6版本(这是drupal6)

    Drupal 6 是一个开源的内容管理系统(CMS),发布于2008年,是Drupal历史上的一个重要版本。这个版本引入了许多新功能和改进,为网站开发者提供了更强大的工具和更大的灵活性。在本文中,我们将深入探讨Drupal 6的...

    Drupal资料大全(推荐几本不错的drupal电子书)

    Drupal是世界上最受欢迎的内容管理系统之一,尤其在企业级网站和复杂应用程序的构建中备受青睐。它以其模块化的架构、强大的社区支持和丰富的功能而闻名。如果你正在寻找提升Drupal技能的资源,以下是一些推荐的...

    drupal入门第一步

    Drupal是一款强大的开源内容管理系统,广泛用于构建复杂且功能丰富的网站。"Drupal入门第一步"这个主题主要涵盖以下几个关键知识点: 1. **XAMPP的安装与设置**:XAMPP是一个集成开发环境,包含了Apache服务器、...

    drupal-7.23安装包

    Drupal 是一个广泛使用的开源内容管理框架,用于构建各种类型的网站,从小型个人博客到大型企业级平台。7.23 版本是 Drupal 发展历程中的一个重要里程碑,它提供了丰富的功能和安全性更新。 Drupal 7.23 版本安装...

    drupal高级开发手册

    ### Drupal高级开发手册知识点概述 #### 一、Drupal框架简介 - **定义与起源**:Drupal是一款免费开源的内容管理系统(CMS),由Dries Buytaert于2001年创立。该系统基于PHP语言开发,支持MySQL数据库。 - **特点**...

    drupal 6.28 的包

    Drupal 6.28是Drupal内容管理系统的一个较旧版本,发布于2011年,主要服务于那些需要在Windows环境下运行Drupal的用户。Drupal是一个开源的PHP框架,用于构建功能丰富的网站和应用程序。这个6.28版本包含了该平台的...

    一本关于Drupal 7的英文书 Beginning Drupal 7

    ### 关于《Beginning Drupal 7》的知识点梳理 #### 一、书籍基本信息 - **书名**:《Beginning Drupal 7》 - **作者**:Todd Tomlinson - **出版社**:Apress - **出版年份**:2010年 - **ISBN-13(纸质版)**:...

    Drupal宝典.doc

    ### Drupal宝典:掌握高效建站利器 #### Drupal——水滴般灵动的CMS系统 在当前互联网时代,网站构建已不再是复杂的技术难题,尤其是当诸如Drupal这样的内容管理系统(CMS)出现后,网站建设变得异常便捷。Drupal...

Global site tag (gtag.js) - Google Analytics