用户登录

Drupal资源链接

http://zhupou.cn
drupal布道者,改成了"老葛的Drupal培训班",专心于培训事业
http://drupal.org
官方网站
http://drupalchina.org
中文的官方网站
http://acquia.com/
本站就是用这个版本构建的

drupal

Module Builder模块的好帮手

drupal每个模块都使用相同的架构,如hook_menu,hook_help等,这于这些工作来说,要都记住比较困难,这几天在drupal.org看看,居然看到一个能自动生成模块框架的模块。Module Builder

drush模块在windows环境中使用

drush模块是drupal的一个命令行工具,一直以为这个模块用处不大,直到前段时间看到很多安装脚本使用drush make命令来进行,才看一下这个模块,不看不知道,原来 这个模块真的是比较好用。

用patch命令来打补丁

使用drupal也有一段时间了,当看到有补丁时一向使用手工来打

--- drush_make.download.inc	2 Jun 2010 15:57:21 -0000	1.1.2.32
+++ drush_make.download.inc 4 Jun 2010 13:25:33 -0000
@@ -96,7 +96,7 @@ class DrushMakeDownload_Get extends Drus
drush_shell_exec('tar -tf %s', $filename);
$info = drush_shell_exec_output();
if ($info) {
- list($first_line) = drush_shell_exec_output();
+ $first_line = $info[count($info) - 1];
list($directory) = explode('/', $first_line);
drush_make_cd($this->project->tmp_path, 'tar -xf %s', $filename);
drush_op('unlink', $filename);

 

但有一天看到有个补丁将近8K,怎么办?特地找了一些.patch文件的使用

在views中加入自定义字段

Views Custom Field是一个加入自定字段的模块,只是这个模块可以php代码来定义表现格式,像using drupal中第三章的一个例子,发布工作之后,用views模块列出所有的工作列表,还希望看到有多少人应征了这项工作,这时可能用Views Custom Field是一个比较好的方法。

在中文上网站使用英文管理

在设置为中文的drupal网站上进行管理时,特别在使用views模块时,由于翻译的原因,可能会出现很多问题,如下拉列表不完整。

那怎么样用英文界面进行管理?

进入语言设置,添加英文语言的路径前缀:en,

配置设置为 Path prefix only.(仅使用路径前缀。)

OK

在路径中加入en,

管理界面就是英文的

用views建立一个下载列表

使用views建立一个常用下载列表,很简单的一个应用。

用CCK加一个file upload字段,设定上传的文件类型

使用filter过滤节点类型

将Row style:设置为fields 格式,并把要显示的字段选上

在Fields显示设置中,将CCK的下载文件字段设置为 URL to file并要把Exclude from display选上,就是不显示

将title中的Output this field as a link选上,设置为Link path:[field_download_fid]这样点击标题就可以下载内容

 

使用hook_form_alter关闭CCK字段的输入无效

一般情况下,我们可以使用hook_form_alter对form进行修改,但对CCK字段进行修改时,却发现找不到CCK的字段。能过google发现有2种方法。

1、修改使用hook_form_alter的模块的weight 值,将这个值变大,实际在就是延后执行,(这种方法好象对于现在的CCK模块无效,可能早期有用。

2、使用一个技巧,

保存节点之后返回指定页面

在问题节点发布之后,我不希望游客再看到这个节点(实际上游客在网站工作人员回答这前是没有权限看到这个节点的),刚开始考虑用触发器与动作,但发现在触发器与动作没有对指定的节点类型进行设置,就很简单的写了一个模块,用hook_nodeapi()做这样的动作,代码如下

function 模块名_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL){

if ($node->type=="question") {
    switch ($op) {
        case 'insert':
         drupal_goto("node/8");
          break;
      }
    }
}