Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2736
  • 博文数量: 2
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 20
  • 用 户 组: 普通用户
  • 注册时间: 2014-03-03 14:06
个人简介

分享PHP MYSQL技术

文章分类
文章存档

2014年(2)

我的朋友

分类: Web开发

2014-07-17 17:43:12

在做之前,我们必须要知道drupal的工作原理。在这里,我们将涉及到Drupal运行所用到的技术堆栈,构成Drupal的各个文件,和各种不同的概念术语,比如节点,钩子,区块和主题。
 
什么是Drupal?
Drupal是用作建设网站的。它是一个高度模块化,开源的web内容管理框架,它重点建立在合作之上的。它是一个可扩展的,适应标准的,并努力保持简洁代码和较小脚本的系统。Drupal发布版中包含基本的核心功能,其他的额外功能可通过安装模块来获得。Drupal被设计为可被定制的,但是定制是通过覆写核心功能或者增加模块来完成的,而不是修改核心组件中的代码。它同样成功的将内容管理和内容表示两者分离。
 Drupal可以被用来建立一个Internet门户;一个个人的,部门的,或者公司的网站;一个电子商务站点;一个资源分类站点;一个在线报纸;一个图库;一个内部网,这里仅提到了一部分。它甚至可被用来教授一个远程学习课程。一个专注于安全方面的小组,通过对威胁的反应和发行安全更新来保证Drupal的安全性。还有一个繁荣的社区组织,包括用户,站点管理员,设计者,和web开发者,非常努力的工作着,以持久的改进软件。
 
技术堆栈(Technology Stack)
Drupal的设计目标是既可以运行在廉价的Web主机上,也可以适应大量运算的分布式站点。前一目标意味着使用最流行的技术,而后者则意味着仔细的严格的编码。
 
操作系统位于技术堆栈的最底层,Drupal可以不用太关注这一层。在任何支持PHP的操作系统上都可以成功的运行Drupal。
 
Drupal最常用的web服务器是Apache,当然也可以使用其它的web服务器(包括微软的IIS)。由于Drupal和Apache的这种长期的友好关系,所以在Drupal的根目录自带了一个.htaccess用来确保Drupal安装的安全性(如果你使用的是一个其它的web服务器,而不是Apache,你一定要将.htaccess中的规则转化为你系统可以理解的语句)。可以使用Apache的mod_rewrite模块来实现简洁(Clean)URLs---将URL中的“?”,“&”以及其它奇怪的符号清除掉,在Drupal中去掉的是“?q=”。这一点特别重要,当从其他的内容管理系统或者静态文件中迁移到Drupal上时,依照Tim Berners-Lee(),内容的URL不需要改变,而不改变的URIs则非常酷。
 
Drupal使用一个轻量级的数据库抽象层与堆栈的下一层次(数据库层)进行交互。这一抽象层处理SQL查询语句的清洁工作,并使得可以使用不同厂商的数据库而不用重构你的代码。在Drupal中最常用的数据库是MySQL 和 PostgreSQL。
 
Drupal使用的编程语言是PHP。PHP的名声比较坏,这是因为PHP比较好学,这样大量的PHP代码都是由新手编写的。和许多其它的编程语言一样,PHP也常被滥用或者用于快速实现的系统中。然而,也可以用PHP来编写可靠的代码。所有的Drupal内核代码都严格的遵守了编码规范
 
内核(Core)
Drupal的内核有一个轻量级的框架组成。当你从drupal.org下载Drupal时就得到了这一内核。它负责提供基本的功能用以支持系统的其它部分。
内核包括当Drupal接到请求时所要调用的系统引导指令的代码,一个Drupal常用函数库,和提供基本功能的模块比如用户管理、分类、和模板,如图1-2所示。

图1-2 Drupal内核的概貌(没有展示完所有的核心功能)
后台管理接口(Administrative Interface)
Drupal的后台管理接口与站点的其它部分紧密的集成在了一起,而且默认情况下,使用相同的主题。第一个用户,也就是用户1,是一个对站点拥有完全权限的超级用户。以用户1的身份登录后,你将在你的用户区块(参看“区块”部分)中看到管理站点的一个链接。点击这一链接,你将进入到Drupal的后台管理接口页面。根据用户对站点访问权限的不同,每个用户的区块都会有一个不同的链接。
模块(Modules)
Drupal是一个完全模块化的框架。功能都包含在模块中,而模块可以被启用或者禁用(一些必须的模块不能被禁用)。来向Drupal站点添加特性有3种方式:启用已存在的模块(核心模块),安装Drupal社区成员编写的模块(第3方模块),编写自己的模块。这样,就可以根据站点的需要来添加相应的模块,需要的功能少,所需的模块也就少,需要很多功能,就添加多一些的模块。如图1-3所示。

图1-3 通过启用其它的模块来添加更多的功能
新添的内容类型比如处方、日志、或者文件,新添的行为比如e-mail通知、P2P发布、和聚合,等等都是通过模块实现的。Drupal使用了反转控制(inversion of control)设计模式,框架只在合适的时间调用相应的模块功能。这些为了模块完成它们的任务提供的机会被称为钩子。
 
钩子(Hooks)
可以把钩子看做Drupal的内部事件。它们也被称为回调函数,这是由于他们是根据函数命名约定来构建的,而不是注册一个事件监听器(listener),它们也不是真的被回调。模块使用钩子挂在Drupal的其余部分上。
 
假定一个用户登录到了你的Drupal站点上。在用户登录时,Drupal调用用户钩子。这意味将调用所有的根据约定——“模块名”+“钩子名”——创建的函数都将被调用。例如,评论模块中的comment_user(),本地化模块中的locale_user(),节点模块中的node_user(),还有任何其它具有类似名称的函数都将被调用。如果你编写了一个名为spammy.module的定制模块,其中包含一个名为spammy_user()的用来向用户发送e-mail的函数,那么你的这个函数也将被调用,倒霉的用户每次登录都将收到一封不请自来的e-mail。
 
接近Drupal的核心功能的最常用的方式就是在模块中实现钩子。
 
提示 更多关于Drupal所支持的钩子的信息,参看在线文档,并查看“Drupal的组成部分”(“Components of Drupal,”),接着“模块系统(Drupal钩子)”(“Module system (Drupal hooks)”)。
 
主题(Themes)
当创建一个发送给浏览器的web页面时,实际主要考虑两点:聚集合适的数据和为web装饰这些数据。在Drupal中,主题层负责创建浏览器接收到的HTML。Drupal可以使用多种流行的模板方式,比如Smarty,PHP的模板属性语言(Template Attribute Language for PHP (PHPTAL)),和PHPTemplate。
 
这里需要记住的重点是Drupal提倡将内容和显示分开。
 
在Drupal中可以使用多种方式来为你的网站定制外观。最简单的方式是使用CSS来覆盖Drupal内置的类和ID。然而,如果你不想局限于此,并且想定制实际的HTML输出时,你将发现很容易就可以达到你的目的。Drupal的模板文件有标准的HTML和PHP组成。另外,Drupal页面的每个动态部分(比如盒子、列表、或者面包屑痕迹),都可以通过声明一个具有合适名字的函数来覆盖掉。接着,Drupal将使用你声明的函数。
 
节点(Nodes)
Drupal中的内容类型都根源于一个称为节点的单独的基本类型。无论它是一篇日志、一个处方,或者甚至一个工程任务,它的底层数据结构都是相同的。这一方式背后的优势是它的扩展性。模块开发者可以为节点添加特性比如级别、评论、文件附件、地理位置信息等等,而不用担心节点的类型,无管它是日志、处方还是其它。站点管理员可以根据内容类型混合和匹配功能;例如在日志而不是在处方上启用评论,或者仅为工程任务启用文件上传功能。
 
节点还包含了一个行为属性基本集,而所有其他的内容类型都继承了这一基本集。任何节点都可以被提升到首页、发布或者未发布,或者甚至被搜索。而且由于这个统一的结构,后台管理接口为节点提供了一个批量编辑的页面。
 
区块(Blocks)
区块是在你网站模板的特定位置可以启用或者禁用的信息。例如,一个区块可以展示你站点当前活跃用户数。你可能使用一个区块来展示最活跃的用户,或者即将来临的事件列表。区块一般放置在模板中的左右栏、页首、或者页尾中。区块也可以用来展示特定类型的节点,一般仅用于首页,或者由于其它标准才这样做。
 
区块常常用于为当前用户展示定制的信息。例如,一个导航区块仅包含当前用户有权访问的链接。可以通过后台管理接口页面对区块的位置和显示进行管理。

更多
阅读(231) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:opencart开发之修改联系方式页面

给主人留下些什么吧!~~