编写.info文件
概述
drupal用.info文件来存储主题和模块的metadata。
对于模块来说,.info文件用于:
- 为Drupal站点管理界面解析信息;
- 为模块的激活和卸载提供标准和需求;
- 提醒drupal一个模块的存在;
- 便于一般的模块管理。
我们需要.info文件来识别模块。
示例
下面是一个.info文件的例子:
name = Really Neat Widget
description = Provides a really neat widget for your site's sidebar.
core = 7.x
package = Views
dependencies[] = views
dependencies[] = panels
files[] = tests/example.test
configure = admin/config/content/example
.info文件用该使用和模块一样的名称,并与模块文件一起存放在同一个文件夹内。比如,如果您的模块文件叫做example.module那么您的.info文件应该叫做example.info。
.info文件和.ini文件的格式一样,用等于号定义了不同元素的值(key=value),您也可以用引号把值括起来,引号括起来的值可以是多行的。
.info文件可以包含注释,用分号起始的行被视为注释,不会被解析。
元素
.info文件可以包含一下元素:
name(必须包含的)
- 这是模块的显示名,将出现在模块的页面。因为这是模块要被显示的正规名字,所以我们每一个词的首字母要大写。而且要是便于用户识别的(不要包含下划线等等)。如果模块名包含了特殊的别名(css, UI, wysiwyg等)或者第三方商标(jQuery,Javascript ), 我们则遵照标准的命名。
name = Really Neat Widget
description(必须包含的)
- 这是一个简短的最好只有一句的对模块功能的描述,它将显示在模块页面。注意,冗长的描述语言会使模块页面混乱,所以请注意言简意赅。字数被限制在255个字符。
description = Provides a really neat widget for your site's sidebar.
- 描述可以包括超链接。下面这个例子包含了一个超链接来链接到作者的页面。当然也也可以链接到drupal.org的文档node。这比readme文件更加有用,当您要激活模块时,您可以方便的在线查看。
description = Domain manager by <a href="http://petermoulding.com">Peter Moulding .com</a>.
core(必须包含的)
- 您模块工作的drupal版本。比如Drupal7的话就是7.x。注意模块不能细分到具体的版本号,比如6.x是正确的,而6.2则是错的。
core = 7.x
stylesheets(可选择的)
- drupal7允许您在.info文件中添加css文件到每一个页面,和主题的.info文件功能相同。下面是一个在node模块中的.info文件例子:
stylesheets[all][] = node.css
scripts(可选择的)
- 您可以在.info文件中添加javascript到drupal的每一页。这是集成javascript的最佳方法。而且这也是我们推荐的添加主流javascript文件的方法:
scripts[] = somescript.js
files(可选择的)
- Drupal现在支持动态代码注册。所有的模块必须把包含类和接口声明的文件在.info文件里声明。比如:
name = Really Neat Widget
...
files[] = example.test
dependencies(可选择的)
- 这是一个包含了您模块所需要的其他模块的数组。如果里面的模块没有出现在模块列表,您的模块是不能被激活的。如果这些模块没有被激活,系统将提示需要激活一下模块来激活本模块。
这个数组的值必须是模块文件名(以.module结尾),并全部小写,空格是不被允许的,就像下面的例子:
dependencies[] = taxonomy
dependencies[] = comment
- 如果您想提别标记出所需模块iaode版本号,drupal夜在这个数组里提供方法。版本号不是必须添加的,除非您的模块必须需要某一版本的模块,一般是不许要添加版本号的。例子如下:
dependencies[] = modulename (major.minor)
- 在这里major代表了主版本号,minor代表了分版本号。.x是可以代替所有的分版本号的。就像下面的例子:
name = Really Neat Widget
description = An example module
dependencies[] = exampleapi (1.x)
...
- 在上面的例子中,example模块需要exampleapi模块来激活,版本1.0或者任何1.x的版本都可以。
dependencies[] = exampleapi (1.0)
- 上面的例子只能允许版本你1.0的exampleapi模块来激活。
dependencies[] = exampleapi (1.x)
- =或者==代表等于
- >大于
- >=大于等于
- !=不等于
- 上面的例子需要吧呢不能1.0或者任意1.x的exampleapi模块来激活。
- dependencies[]的元素也可以使用比较运算符:
dependencies[] = exampleapi (>1.0)
- 上面的例子必须要版本号大于1.0的模块。
- 您也可以制定核心模块的版本号:
dependencies[] = exampleapi (>7.x-1.5)
- 上面的例子需要drupal7的任何版本,并且模块的版本号大于1.5.
- 此外,多版本也是支持的,只需要用逗号把不同版本隔开:
dependencies[] = exampleapi (>1.0, <=3.2, !=3.0)
package(可选择的)
- 如果您的模块与某些其他模块一同工作,或者您的模块功能与其他模块功能有较大不同,您可以在.info文件里添加一个package名。如果您不添加,那么drupal将默认将您的模块放到‘other'(“其他”)的模块列别中。一般来说我们只有在大型的模块租中才用到package名,或者这个模块对另外一组模块有一个功能的延伸, 比如Fields, Views, Commerce, Organic Groups等模块组。其他的模块我们一般都不设定package名。一般只有4个或4个以上的模块互相依赖或者有依赖关系,我们才把他们放到一个package。"Development" package是个例外,它将用于任何的编码工具模块中。
- 在模块页面中,相同package的模块被显示在一起。所以字符应该保持一致性并遵循drupal的规则。
package = Views
- Administration
- Commerce
- Development
- Fields
- Media
- User interface
- Views
- Voting (如果他需要VotingAPI)
- 推荐的packge例子:
- 在记录当前所有的package名,但这并不是我们推荐使用的。
php(可选择的)
- 和drupal6一样,模块和主题可以吧他们需要的PHP版本标出 我们可以将类似于以下的例子加入到.info文件中去:
php = 5.3
- 这里说明了模块或者主题不会在PHP5.3版本一下工作。如果模块用到了最新php版本的功能,这个元素将会很重要。如果php版本号没有被表明,那么说明该主题或模块对php的版本要求和drupal核心模块一样 。只有在模块要求的php版本号比核心模块高的时候,这个元素才需要标注。
version(不鼓励)
- 这个版本号将被drupal.og生成,如果您的你模块已经建立并且被压缩封装。但是如果您的模块并不是在drupal.org的服务器上的,您可以随便用任意版本号。
- 因为GIT中的.info文件不包含ersion,所以如果您是从git中获得的模块,您将不会有version号。如果您是用git直接获取模块,那么建议您用
- 模块来提供一个准确的version号。
- 因为核心模块应用的不同的打包方法,所以版本号已经提前设定好。第三方模块不用遵循核心模块的例子。
configure(可选择的)
- 在durpal7.x中,这代表了该模块配置页面的路径。如果这个模块被激活了,那么将会有“Configure"和Permissions"两个链接出现在模块列表页面。这就是“Configure"链接的路径。
configure = admin/config/content/example
required(可选择的)
- 在drupal7.x中,主题和模块可以注明他们是绝对必须的,无论如何不能卸载的。用required = TRUE就可以让drupal在安装时就激活此主题或模块。一般来说,这只用于核心模块。
hidden(可选择的)
- 在drupal7.x中,主题或模块可以注明他们是不能被显示在模块列表页面的。用hidden = TRUE就可以达到这个目的。一般用于测试的模块,当用SimpleTest测试时,一般用户不能激活该模块。
project(不鼓励,打包专用)
- 模块的管理者不可以用这个元素。drupal.org将自动为这个元素赋值,来表明这个模块的出处。这个主要在
- 模块中应用,这样drupal就可以检查package的版本号并提示管理员任何更新。
project status url (只能应用在自定义模块中,不能用于drupal.org的模块)
- 这里允许管理员来提供一个URL来用Update status模块检查更新状态。在drupal.org发布的模块是不能用这个参数的。URL应该指向一个接受类似于http://my.domain.com/projects/{project}/{core}请求的RRS feed。比如:project status url应该被指向http://my.domain.com/projects。
更多关于.info文件格式信息请参考drupal_parse_info_file() documentation
纠错
我已经写core = 7.x,但是系统还是"This version is incompatible with the 7.x version of Drupal core",这是怎么回事?
注意dependencies[]在drupal7的格式已经变了,错误的例子:
name = Really Neat Widget
...
dependencies = foo bar ; 5.x dependency format.
core = 6.x
正确的写法:
name = Really Neat Widget
...
; Note the [], and that each of the dependencies is on its own line:
dependencies[] = foo
dependencies[] = bar
core = 7.x
描述和口音
非英语用户注意:如果您要在description中加入非英文字母,请注意编码格式和HTML编码编译。比如此类字母“ö”
编写.info文件的更多相关文章
- 编写.gitignore文件的几个小技巧
记录几个编写.gitignore文件的小技巧,可能你早就知道了,但我是google了一番才找到写法. 忽略所有名称为bin的文件夹 bin/ 只忽略第一级目录中,名称为bin的文件夹 /bin/ 忽略 ...
- TypeScript Writing .d.ts files(编写声明文件)
当使用扩展的JavaScript库或者插件API的时候,将需要使用声明文件(.d.ts)来描述库的类型.本文内容将包括如何编写声明文件相关的一些高级概念,然后用一些例子来展示如何将各式各样的概念与声明 ...
- 工具软件发现(编写chm 文件的工具)
编写chm 文件的工具 1.PrecisionHelper 安装之后,发现 编写的很不方便,直接在html 上编写-- 不好用 2.Winchm (推荐) 很好用,赞!至少对比了上面那个复杂的操作之后 ...
- 教会你如何编写makefile文件
最近一直在学习makefile是如何编写的.当我们写的程序文件比较少的时候,敲入gcc /g++,当你在大型工程中,在一个个编译文件的话,你可能就会很郁闷.linux有一个自带的make命令,它让你的 ...
- VC2010编写Dll文件(转)
源:VC2010编写Dll文件 1. 打开VS2010[Flie / New / Project / Visual C++ / Win32 / Win32 Console Application]在下 ...
- 用记事本编写helloworld文件但是javac时报错
刚开始编写第一个java文件时遇到的错误: javac HelloWorld.java HelloWorld.java:1: 错误: 写入HelloWorld时出错: HelloWorld.class ...
- Hibernate.编写xml文件无自动提示信息
Hibernate.编写xml文件无自动提示信息 注意: 配置 xxxx.hbm.xml 文件的自动提示.和配置 hibernate.cfg.xml 文件的提示,操作步骤是一样的.只是复制的文件内容. ...
- java通过poi编写excel文件
public String writeExcel(List<MedicalWhiteList> MedicalWhiteList) { if(MedicalWhiteList == nul ...
- 如何编写makefile文件
最近一直在学习makefile是如何编写的. 当我们写的程序文件比较少的时候,敲入gcc /g++,当你在大型工程中,在一个个编译文件的话,你可能就会很郁闷.linux有一个自带的make ...
- 根据给定文件编写Makefile文件 两种方法编译
实例一 1.分析源文件代码依赖关系 mian.c #include "test1.h" #include "test2.h" #include <stdi ...
随机推荐
- Django的AutoField字段
[Django是一个机智的框架] 默认情况下Djang会为ORM中定义的每一张表加上一个自增ID列,并且用这个列来做主键:出于一个MySQL-DBA的工作经历我觉得 Djanog还真是机智:这样么说主 ...
- Mongodb是用Sum 和Where条件
Sum 按照条件求和 db.aa.aggregate([ { $group: { _id: null, total: { $sum: "$value" } } }, //$valu ...
- Android 版本对于 API
Android版本 API 代号 官网链接 Android 2.3.3 API 10 Gingerbread 官网 Android 3.0 API 11 Android 3.1 API 12 Andr ...
- 如何只打印中间的符号(c语言)
经常有这样的问题,要求打印如下格式: a,b,c,d,e 进而要求,如果abcde有为0的值,取消打印,假设:a=1,b=0,c=12,d=0,e=5或者,a=0,b=2,c=0,d=10,e=0等等 ...
- Atitit jdbc 处理返回多个结果集
Atitit jdbc 处理返回多个结果集 Statement接口提供了三种执行SQL语句的方法: executeQuery.executeUpdate和execute.使用哪一个方法由SQL语句所 ...
- Atitit nodejs5 nodejs6 nodejs 7.2.1 新特性attialx总结
Atitit nodejs5 nodejs6 nodejs 7.2.1 新特性attialx总结 1.1. Node.js 4.0.0 已经发布了 .这是和 io.js 合并之后的首个稳定版本,它 ...
- haproxy-1.7.7 源码安装
安装一下依赖 yum install openssl-devel openssl 编译安装 make TARGET=linux2628 USE_OPENSSL=1 ADDLIB=-lz make in ...
- .NET MVC EF框架数据库连接配置
1:数据库的配置和连接 Web.config <connectionStrings> <add name="SQLConnectionString" connec ...
- SVN Cleanup failed to process the following paths错误的解决
在使用TortoiseSVN工具执行Cleanup操作时经常出现Cleanup failed to process the following paths的错误,具体如下图: 网上搜索了一下,找到了解 ...
- COMPILING ACTIONSCRIPT 3.0 WITH SUBLIME TEXT 2
At Clock we typically spend our time developing JavaScript and PHP, however, occasionally Flash pres ...