drupal7.x模块开发教程
- 格式:doc
- 大小:214.50 KB
- 文档页数:28
Drupal开发与建站实现的技术方案一、引言Drupal是一种开源的内容管理系统,为用户提供强大的建站能力和可扩展性。
它以其灵活性和安全性而备受欢迎,并被一些知名品牌用作其网站的内容管理系统。
本文将提供关于Drupal开发和建站实现的技术方案。
二、Drupal开发的基础Drupal是基于PHP语言开发的,因此,对PHP开发的基础要求是必要的。
学会基本的HTML、CSS和JavaScript编程,对Drupal的开发有很大的帮助。
同时,了解Drupal的框架结构,例如模块和主题等概念,是成功开发Drupal网站的关键。
三、Drupal模块的开发Drupal模块是Drupal系统的基础,能够扩展其功能。
模块提供了许多功能,例如表单验证,用户登录认证,搜索等。
模块的开发需要深入理解Drupa核心系统和其API,并遵循Drupal的开发标准。
如需开发自己的Drupal模块,可以在Drupal官方网站上找到详细的文档和教程。
四、Drupal主题的开发Drupal主题允许网站的外观和样式的自定义。
开发Drupal主题需要对Drupal的主题体系有深入的理解。
Drupal主题通常由HTML、CSS、JavaScript和PHP组成。
Drupal主题的开发需要将这些技术深入调和,并学会使用Drupal主题的API。
Drupal主题的开发还需要考虑到用户体验和可访问性等方面。
五、Drupal网站的部署Drupal网站的部署比其他网站的部署复杂一些。
在部署新网站之前,需要选择并安装一些核心模块,例如用户认证和日志记录。
要实现最佳性能,需要考虑优化数据库、配置缓存和CDN等。
Drupal网站的部署需要考虑是否安全,包括在代码中避免潜在的安全漏洞,并确保所有数据和敏感信息都受到保护。
六、总结Drupal开发和建站实现需要对PHP和相关技术有扎实的基础。
为了成功开发Drupal网站,对Drupal核心组件(模块和主题)的深入掌握是必要的。
DrupalCMS网站开发教程DrupalCMS是一种开源的内容管理系统,它可以帮助网站开发者创建和管理各种类型的网站。
本教程将引导读者从安装DrupalCMS开始,在各个方面详细介绍DrupalCMS的功能和使用技巧。
第一章:DrupalCMS介绍在本章中,将介绍DrupalCMS的背景和基本概念。
首先,将解释什么是内容管理系统,以及DrupalCMS与其他CMS的区别。
然后,将详细介绍DrupalCMS的特点和优势,以及为什么选择DrupalCMS作为网站开发的工具。
第二章:DrupalCMS安装与配置在本章中,将介绍如何安装和配置DrupalCMS。
首先,将解释如何准备您的服务器环境并下载最新的DrupalCMS版本。
然后,将详细介绍DrupalCMS的安装过程,包括数据库配置和管理员账户设置。
最后,将演示如何进行基本的站点配置和主题选择。
第三章:DrupalCMS内容管理在本章中,将介绍如何使用DrupalCMS进行内容管理。
首先,将解释DrupalCMS的内容类型和字段管理,包括如何创建和编辑内容类型以及自定义字段。
然后,将详细介绍如何创建和发布内容,并演示如何使用分类和标签对内容进行组织和搜索。
第四章:DrupalCMS模块扩展在本章中,将介绍如何使用DrupalCMS的模块扩展功能。
首先,将解释什么是DrupalCMS模块,以及如何查找和安装模块。
然后,将演示如何使用常用模块来增强网站的功能,例如搜索引擎优化、社交媒体分享等。
最后,将介绍如何开发自定义模块以满足特定需求。
第五章:DrupalCMS主题定制在本章中,将介绍如何使用DrupalCMS的主题定制功能。
首先,将解释什么是DrupalCMS主题,以及如何选择和安装主题。
然后,将详细介绍如何对主题进行自定义,例如更改页面布局、调整颜色和字体等。
最后,将介绍如何开发自定义主题以实现独特的外观和用户体验。
第六章:DrupalCMS性能优化在本章中,将介绍如何优化DrupalCMS的性能。
一.实战Drupal 7安装图文教程Drupal7成功安装的6大步骤:1.打开官方网站https:/// 下载安装包2.打开官方网站https:/// 查看安装文档3.新drupal7 mysql数据库并安装drupal74.安装drupal7的中文汉化包5.Drupal7安装过程中报错的三种解决办法6.进入网站设置画面,并成功安装完drupal71.打开官方网站https:/// 下载安装包进入下载页面进行下载:2.打开官方网站https:/// 查看安装文档3.安装drupal7(1)先将drupal7解压到环境的根下。
F:\DrMeng_Web_Site\将解压drupal-7.27目录中的内容复制到根目录下(2)用phpmyadmin建立一个drupal7的数据库。
/phpmyadmin/输入用户名:root密码:hncctv创建一个测试数据库:drupal727(3)在ie中访问/ 就直接安装drupal74.安装drupal7的中文汉化包首先:安装drupal7的中文汉化包点击Translations Homepage进入下载汉化包页面:下载汉化包后将它放到这个目录:F:\DrMeng_Web_Site\\profiles\standard\translations\drupal-7.27.zh-hans.po如下图汉化包放好后。
返回drupal7安装界面,点如下链接进入开始安装进度画面5.Drupal7安装过程中报错的三种解决办法drupal初始化错误解决-An AJAX HTTP error occurred. HTTP Result Code: 500drupal7 初始化翻译时出错:导入翻译出错请到错误页面An AJAX HTTP error occurred. HTTP Result Code: 500 Debugging information follows. Path: http://127.0.0.5/drupal/install.php?profile=standard&locale=zh-hans&i d=2&op=do StatusText: Internal Server Error ResponseText:这里如果有报错。
Drupal7模組介紹-ViewsDrupal版本:7.x* 介紹模組:Views* 模組版本:7.X-3.3* 相依模組:Chaos tool suite(Ctools)* 官方討論區:/project/issues/views?categories=All分享主題:Drupal7模組介紹-Views-part1Goals:安裝Views前言:有在玩drupal的人應該都知道,drupal已經是全世界都在使用的一個open source的平台,能夠幫助使用者快速開發出一個全新的網站,不僅安全性好,而且彈性也是不在話下。
其中一個很重要的模組就是views。
讓drupal能夠很有彈性的處理所有的資料,文案,並且整合到網站之中,學會views以後,基本上就可以建構出像樣的網站了,在這邊分享從我的角度,來看views這個模組。
安裝模組:要使用views必須要有兩個模組安裝,一個就是本身的views,另外一個則是Chaos tool suite。
以下為連結:1. views: /project/views2. ctools: /project/ctools選到網頁的最下方,看到綠色的Recommend Release,選擇對應的版本安裝即可到drupal網站的Module->install new module然後可以通過以下兩種安裝方式1. 網址安裝2. 檔案安裝大家可以選擇自己喜歡的安裝方式。
於module頁面啟用模組,這裡可以發現一個views的模組裡面,有很多很多的子模組,每一個功用都不太一樣,在這裡我views的兩個模組均啟用,而ctools則是啟用chaos tools還有Page management 兩個模組Views的功能頁面Done!完成安裝,接下來可以準備開始使用views的各項功能了。
請看接下來的分享文章。
Goals:1. 用views製作文章list,並且按照作者第一個字母分類。
一.实战Drupal 7模块安装Drupal7模块安装的步骤:
1.打开本地网站/ 用管理员kesjc登陆
2.安装Captcha模块
3.启用captcha模块
4.汉化模块:汉化captcha模块
1.打开本地网站/ 用管理员kesjc登陆
2.比如以安装Captcha模块为例。
来安装模块在搜索框中输入captcha 点search进行搜索找到captcha模块
复制模块下载链接地址:点右键,进行复制下图红色框gz的下载链接地址:
接下来回到的模块安装画面进行,captcha模块的安装
点击安装新模块。
如下图:
粘贴模块的下载地址:/files/projects/captcha-7.x-1.0.tar.gz
模块安装成功后,出现如下画面:
3.启用captcha模块
点中间那个启用刚安装成功的模块,并返回到启用模块的界面,拉动到页面底部,选中刚安装的模块,选中并启用,保存配置。
如下图:
4.汉化模块:汉化captcha模块
1.打开网址:https:///translate/languages/zh-hans
并下载captcha模块的汉化文件,如下图:
下载captcha汉化包captcha-7.x-1.0.zh-hans.po到本地如下图:
2.安装模块的汉化包:
点翻译后进后下图:
点导入模块汉化包。
即可!
模块汉化包,导入汉化成功!!。
Drupal二次开发的时候,我们经常要使用到多选列表,但是官方默认的多选下拉列表,如下图:视觉效果不堪入目,经过努力,找到了一款相貌不错的module。
下面请看使用方法:第一:去官网下载(https:///project/multiselect)模块,安装。
第二:安装完毕,接下来就要使用到Form API开发中去1.<font face="微软雅黑">/**2.* hook_menu().3.* @author masx4.*/5.function front_menu(){ $items['formexample'] = array(6.'title' => 'View the sample form',7.'page callback' => 'drupal_get_form',8.'page arguments' => array('front_nameform'),9.'access callback' => TRUE,10.'type' => MENU_NORMAL_ITEM11. );12. return $items;13.}15.* Define a form. 构造表单16.*/17.function front_nameform() {18.$form['user_name'] = array(19. '#title' => t('Your Name'),20. '#type' => 'textfield',21. '#description' => t('Please enter your name.'),22.);23. $form['selected'] = array(24. '#type' => 'select',25. '#title' => t('Selected'),26. '#multiple' => 3,27. '#options' => array(28. 0 => t('驴儿'),29. 1 => t('牛儿'),30. 2 => t('狗儿'),31. 3 => t('猫儿'),32. 4 => t('驴儿'),33. 5 => t('牛儿'),34. ),35. '#description' => t('Set this to <em>Yes</em> if you would likethis category to be selected by default.'),36. );37.$form['submit'] = array(38. '#type' => 'submit',39. '#value' => t('Submit')40.);41.return $form;42.}43./**44.* Handle post-validation form submission.处理表单46.function front_nameform_submit($form, &$form_state) {47. $name = $form_state['values']['user_name'];48. drupal_set_message(t('Thanks for filling out the form, %name',49. array('%name' => $name)));}50.}</font>复制代码第三:显示效果如下:如需了解更多Drupal开发知识,请至麦子学院官网查看!。
第10章Drupal 表单API(form API)- 表单处理流程表单APIDrupal4.7 及更高版本提供了一个应用程序接口(API)用来生成、验证和处理HTML 表单。
表单API 将表单抽象为一个关于属性和值的嵌套数组。
在生成页面时,表单呈现引擎会在适当的时候将数组呈现出来。
这种方式包含多层含义:没有直接输出HTML,我们而是创建了一个数组并让引擎生成HTML由于我们将表单的表示处理为结构化的数据,所以我们就可以对表单进行添加、删除、重新排序、和修改等操作。
当你想用一种干净平和的方式对由其它模块创建的表单进行修改时,这会特别方便。
任意一个表单元素可以映射到任意一个主题函数上可以对任意表单添加额外的表单验证或处理函数对表单操作进行了保护,从而防止表单注入攻击,特别是用户修改了表单并接着试图提交它时。
使用表单的学习曲线有点高在本章,我们将迎难而上。
我们将学习如何创建、验证、处理表单,以及当我们想要一个个性化的外观时如何编写主题函数:本章所讲的都是关于Drupal5 版本所实现的表单API。
理解表单处理流程图10-1 展示了表单的构建、验证、和提交的流程图10-1 Drupal 是如何处理表单的为了更好的与表单API 进行交互,理解API 背后的引擎是如何工作的将会非常有用。
在接下来的部分解释了调用drupal_get_form() 时都发生了什么。
流程初始化调用drupal_get_form() 后,首先初始化,$form_values(用来保存提交数据的数组)置为空数组,$form_submitted 设为FALSE。
设置一个令牌(token)表单系统的一个优点是,它尽力去保证被提交的表单是由Drupal 真正创建的。
这主要是为了安全性和防止垃圾信息的提交。
为了达到这一点,Drupal 为每一个Drupal 安装都设置了一个私钥,Drupal 将基于私钥生成一个随机的令牌作为隐藏于发送到表单中。
Drupal专业开发指南第1章Drupal 工作原理(1)第1章Drupal 工作原理(2)对请求提供服务第2章创建一个模块(1)第2章创建一个模块(2)第3章模块特定设置(1)第3章模块特定设置(2)第4章Drupal 菜单(menu)系统(1)第4章Drupal 菜单(menu)系统(2)第4章Drupal 菜单(menu)系统(3)第5章Drupal 数据库层(1)第5章Drupal 数据库层(2)第6章Drupal 用户(1)第6章Drupal 用户(2)hook_user 用户注册和登录流程第6章Drupal 用户(3)第7章Drupal 节点(Drupal node)(1)第7章Drupal 节点(Drupal node)(2)第7章Drupal 节点(Drupal node)(3)第8章Drupal 主题系统(Drupal theme)(1)第8章Drupal 主题系统(Drupal theme)(2) 安装主题第8章Drupal 主题系统(Drupal theme)(3) 模板文件第8章Drupal 主题系统(Drupal theme)(4) 高级特性1 覆写主题函数第8章Drupal 主题系统(Drupal theme)(4) 高级特性2 添加和操纵模板变量第8章Drupal 主题系统(Drupal theme)(4) 高级特性3 定义新的区块区域第9章Drupal 区块(Drupal block)(1)第9章Drupal 区块(Drupal block)(2)区块钩子方法第9章Drupal 区块(Drupal block)(3)创建区块第10章Drupal 表单API(form API)- 表单处理流程第10章Drupal 表单API(form API)- 创建基本的表单第10章Drupal 表单API(form API)- 创建基本的表单(2)第10章Drupal 表单API(form API)- 创建基本的表单(3)第10章Drupal 表单API(form API)- 创建跨页面表单第10章Drupal 表单API(form API)- 表单API 属性第10章Drupal 表单API(form API)- 表单元素第11章Drupal 过滤器系统(filter)(2)创建一个定制的过滤器第11章Drupal过滤器系统(filter)(1)第12章搜索和索引内容(1)第12章搜索和索引内容(2) 索引器第12章搜索和索引内容(3) 对非节点的内容进行索引第13章Drupal 文件(file)(1)第13章Drupal文件(file)(2)第14章在Drupal 中使用分类(Drupal taxonomy)(1)第14章在Drupal 中使用分类(Drupal taxonomy)(2)第14章在Drupal 中使用分类(Drupal taxonomy)(3)第15章Drupal 缓存(cache)(1)第15章Drupal 缓存(cache)(2)页面缓存第15章Drupal 缓存(cache)(3)缓存API第16章Drupal 会话(session)(1)第16章Drupal 会话(session)(2)会话生命周期第17章在Drupal 中使用jQuery(1)第17章在Drupal 中使用jQuery(2)第17章在Drupal 中使用jQuery(3)编写一个使用jQuery 的Drupal 模块第18章Drupal 的本地化及中文化(1)第18章Drupal 的本地化及中文化(2)第19章XML-RPC第20章编写安全的代码(1)处理用户输入第20章编写安全的代码(2)处理用户输入第20章编写安全的代码(3)db_query()第21章Drupal 开发最佳实践(1)第21章Drupal 开发最佳实践(2)第21章Drupal 开发最佳实践(3)第22章Drupal 优化(2)第22章Drupal优化(1)第23章Drupal 安装过程profile附录2 Drupal 常用资源第1章Drupal 工作原理(1)在这一章,我们为你给出一个Drupal 的概貌。
Drupal专业开发指南第1章Drupal 工作原理(1)第1章Drupal 工作原理(2)对请求提供服务第2章创建一个模块(1)第2章创建一个模块(2)第3章模块特定设置(1)第3章模块特定设置(2)第4章Drupal 菜单(menu)系统(1)第4章Drupal 菜单(menu)系统(2)第4章Drupal 菜单(menu)系统(3)第5章Drupal 数据库层(1)第5章Drupal 数据库层(2)第6章Drupal 用户(1)第6章Drupal 用户(2)hook_user 用户注册和登录流程第6章Drupal 用户(3)第7章Drupal 节点(Drupal node)(1)第7章Drupal 节点(Drupal node)(2)第7章Drupal 节点(Drupal node)(3)第8章Drupal 主题系统(Drupal theme)(1)第8章Drupal 主题系统(Drupal theme)(2) 安装主题第8章Drupal 主题系统(Drupal theme)(3) 模板文件第8章Drupal 主题系统(Drupal theme)(4) 高级特性1 覆写主题函数第8章Drupal 主题系统(Drupal theme)(4) 高级特性2 添加和操纵模板变量第8章Drupal 主题系统(Drupal theme)(4) 高级特性3 定义新的区块区域第9章Drupal 区块(Drupal block)(1)第9章Drupal 区块(Drupal block)(2)区块钩子方法第9章Drupal 区块(Drupal block)(3)创建区块第10章Drupal 表单API(form API)- 表单处理流程第10章Drupal 表单API(form API)- 创建基本的表单第10章Drupal 表单API(form API)- 创建基本的表单(2)第10章Drupal 表单API(form API)- 创建基本的表单(3)第10章Drupal 表单API(form API)- 创建跨页面表单第10章Drupal 表单API(form API)- 表单API 属性第10章Drupal 表单API(form API)- 表单元素第11章Drupal 过滤器系统(filter)(2)创建一个定制的过滤器第11章Drupal过滤器系统(filter)(1)第12章搜索和索引内容(1)第12章搜索和索引内容(2) 索引器第12章搜索和索引内容(3) 对非节点的内容进行索引第13章Drupal 文件(file)(1)第13章Drupal文件(file)(2)第14章在Drupal 中使用分类(Drupal taxonomy)(1)第14章在Drupal 中使用分类(Drupal taxonomy)(2)第14章在Drupal 中使用分类(Drupal taxonomy)(3)第15章Drupal 缓存(cache)(1)第15章Drupal 缓存(cache)(2)页面缓存第15章Drupal 缓存(cache)(3)缓存API第16章Drupal 会话(session)(1)第16章Drupal 会话(session)(2)会话生命周期第17章在Drupal 中使用jQuery(1)第17章在Drupal 中使用jQuery(2)第17章在Drupal 中使用jQuery(3)编写一个使用jQuery 的Drupal 模块第18章Drupal 的本地化及中文化(1)第18章Drupal 的本地化及中文化(2)第19章XML-RPC第20章编写安全的代码(1)处理用户输入第20章编写安全的代码(2)处理用户输入第20章编写安全的代码(3)db_query()第21章Drupal 开发最佳实践(1)第21章Drupal 开发最佳实践(2)第21章Drupal 开发最佳实践(3)第22章Drupal 优化(2)第22章Drupal优化(1)第23章Drupal 安装过程profile附录2 Drupal 常用资源第1章Drupal 工作原理(1)在这一章,我们为你给出一个Drupal 的概貌。
在本教程中,我们将会建立一个模块,这个模块将列出最近一周内所有新建立的内容节点,比如日志或者论坛的帖子。
本章将讲述如何建立最初的模块文件和目录。
开始之前如果您需要用PHP来查出您站点上的错误,请访问此链接。
它将告诉您如何更改Drupal 的设置,使drupal显示错误信息。
为您的模块命名建立模块的第一步是为它取一个不太长的名字。
这个名字将被用在所有的模块文件名和方法名中。
所以这个名字必须以字母开头并只能有小写字母和下划线。
比如,我们会用"current_posts"作为一个模块名称。
注意:一定要确保根据以上规则来取名,因为它将被用于模块名和方法名的前缀。
当您运行drupal“钩子“时(请参看后面的章节),drupal将只能识别拥有与您模块文件名称相同前缀的钩子。
请注意不要使用与您站点所有主题相同的名称,这样会使drupal混淆。
创建一个模块目录和模块文件假如我们决定用"current_posts“的模块名,我们将会在drupal的根目录的以下路径(sites/all/modules /current_posts)创建一个目录。
或者如果您要把自己的自定义模块与其他模块区分开,您也可以选择这个路径(sites/all/modules/custom /current_posts)。
然后在sites/all/modules/currents_posts目录创建一个名为current_posts.module的文件。
注意drupal 并不识别扩展名为.php的文件。
如果您为模块添加了php的扩展名,那将不会被识别。
drupal 只识别扩展名为.module的php文件。
在Drupal6中,sites/all /modules/是存放自定义模块的理想目录(sites/all/themes/是存放自定义主题的理想目录),因为这个目录存放这所有只与您的站点相关的模块和主题,在您以后升级您的核心模块时,这些自定义模块和主题不会被改写。
或者,如果您有多个子站点共享核心模块,而这个自定义模块只在其中一个站点工作,那么您可以使用这个路径来存放:sites/您的子站点/modules模块文件的开头起始于php的起始标签“<?php" . 不要把cvs版本控制系统的标签放到模块文件中,drupal应用git的使用规范来实现版本控制。
如果coder模块显示错误信息,说明此模块还没有被升级,并不符合drupal的git规范。
我们的模块还不能被执行,它还没有被激活。
稍后我们将激活这个模块。
编码标准根据drupal编码标准,我们在模块中省略"?>"。
否则我们可能会遇到服务器实时运行错误。
(注意,在本教程中,我们的示例代码中包括了“?>",这只是为了使代码显示的更好。
请在实际应用中忽略"?>")所有以{模块名}_{方法名}格式命名的方法,都是钩子,都可以被drupal直接调用。
其中{方法名}是预定义的方法名后缀。
drupal将会调用这些方法来处理数据。
所以取一个简单明了的模块名是十分重要的,drupal会知道去哪查找数据。
下一步,我们将踏入钩子的领域。
所有的Drupal模块都有一个"模块名.info"文件,用来储存该模块的元信息。
(其实可以理解成模块的描述文件)该文件的一般格式为:name = Module Namedescription = A description of what your module does.core = 7.x在本示例中,我们用我们自己的模块名"current_posts"来代替上面例子中的"Module Name".如果没有.info文件,drupal不会将我们的模块添加进模块列表。
下面就是修改后的.info文件内容:name = Current Postsdescription = A block module that lists links to recent posts.core = 7.x我们把以上内容添加到一个名为current_的文件中,并把该文件保存在模块的根目录sites/all/modules/current_posts下。
注意:如果您复制以上代码并粘贴到.info文件,留意description的内容不要有空行,否则本文件将不会正确的读取。
.Info文件的细节drupal把所有能够放到.info文件的参数都放到了这个网页,请参看。
检查我们现在有了.info文件,要想从drupal文件列表里找到我们的模块,我们只需要一个空的.module文件就可以了。
只需要在同样的模块目录下建立一个.module文件,并在.module 文件里添加<?php,我们就会发现我们的模块已经在drupal的模块列表里了。
Drupal模块中的注释语言在您的模块中添加注释来解释您的模块如何工作,是个很好的习惯。
我们需要严格的遵从drupal的注释规则来发布补丁或新模块,因为drupal用Doxygen来从代码的注释语言中生成文档。
请查询doxygen和注释规范来获得更多相关信息。
接下来的教程对大家是非常有帮助的,即使您也许目前并不需要它。
下面是我们的第一个注释:<?php/*** @file* A block module that displays recent blog and forum posts.*/?>@file告诉您此注释适用与整个文件。
注释起始于"/**", 结束于"*/"。
按照drupal指南所要求的,drupal模块中所有的方法都将用这个注释格式。
运行我们的第一个钩子钩子是drupal模块的基本。
它们让我们把自己的模块整合到drupal核心模块中去。
如果你不知到这些,请参看drupal模块的入门。
我们的第一个模块是hook_help. drupal推荐我们在所有模块中应用这个钩子。
hook_help为用户提供此模块的帮助信息。
要在drupal中运行钩子,我们要把"hook"替换成我们模块的短名,并在module文件中用同样的名字建立一个方法。
所以,要在我们的示例模块中运行hook_help,我们应该在current_posts.module文件中建立一个叫做current_post_help()的方法:<?phpfunction current_posts_help($path, $arg) {}?>$path变量提供了相关帮助信息的参数:在durpal或模块的什么地方,我们的用户会需要帮助信息。
要想处理这个参数的公认的好方法是用switch语句。
这是drupal非常流行的别写模式。
我们的模块将采用下面这个简短的钩子示例,我们还可以添加注释语言在里面。
<?php/*** Implements hook_help.** Displays help and module information.** @param path* Which path of the site we're using to display help* @param arg* Array that holds the current path as returned from arg() function*/function current_posts_help($path, $arg) {switch ($path) {case "admin/help#current_posts":return '<p>'. t("Displays links to nodes created on this date") .'</p>';break;}}?>注意我们不应该有"?>"drupal核心模块会把“admin/help#模块名"链接到drupal的帮助页面"/admin/help/ 或者?q=admin/help"。
我们最终将会添加更多的注释语言,请参看注释语言标准。
这个方法不仅允许第三方对它的翻译,更加加强了代码的安全性。
请参看Localization API来获得更多的信息。
检查在工具栏点击"模块", 我们便可以在模块列表找到我们的模块。
激活模块并点击保存,刷新本页面,您将看到我们的模块旁边有了一个"help"链接。
点击这个链接,我们就能看见current_post_help钩子返回的内容了。
或者您可以在工具栏点击帮助链接(/admin/help),您将看见我们的帮助链接被列在帮助列表上。
卸载我们的模块并点击保存。
(注意:卸载我们当前未完成的模块是很重要的,我们未完成的模块很容易破坏我们的站点。
声明区块模块可以被用来做各种事情,比如:创建区块(一段简短的内容,通常出现在页面的左右两边);建立特殊的内容类型(就像您现在正在阅读的内容);查询后台信息等等。
您也许听说过block模块--专门被用来创建区块内容(比如菜单),或者node模块--专门用来生成页面的内容(比如日志和论坛)。
在我们的例子中,我们所建立的是一种block模块,因为我们创建了一个区块(block)。
drupal7提供了至少8个block钩子可以应用。
根据我们例子的需求,我们将用到其中的两个。
第一个钩子是hook_block_info()。
您可能已经猜到了,这个钩子用来告诉Drupal我们要建立的区块的相关信息。
我们将用这个钩子来定义一个能够显示最近新提交的内容的区块。
您可以使用任意一个模块提供的block钩子,如此您将需要定义相关模块所需的所有区块,在我们的例子中,我们只需要定义一个区块。
要定义我们自己的区块,我们需要打开current_posts.module文件,并建立一个叫做current_posts_block_info方法,如下<?php/*** Implements hook_block_info().*/function current_posts_block_info() {$blocks['current_posts'] = array('info' => t('Current posts'), //The name that will appear in the block list.'cache' => DRUPAL_CACHE_PER_ROLE, //Default);return $blocks;}?>注意在我们真正的代码中不应该有"?>"在结尾。