Drupal使用心得

drupal清缓存时出现白屏

     近日,在维护一个drupal网站的时候,由于自定义模块的表结构进行了更改,更新了.install文件,之后上传至空间。在清除缓存的时候,出现了浏览器空白的情况。使用性能---清除缓存,也是白屏,刷新页面出现缓存清除成功消息。
    之后查看报告,发现是install报告有乱码,下载下来编辑没有任何问题,编码也是UTF-8的。上传上去,清除缓存,还是有问题。最后,偶然间发现一款可以在线编辑文件的FTP,Cute FTP,安装上之后,在线编辑install文件,打开之后,在文件开始的地方,问题找到了,一个火星字母赫然在目,原来是上传文件到空间之后,因为和本地运行环境的不同,文件可能会出现乱码,删掉乱码,保存。再试着清除缓存,一切正常了。
     当然这样的问题出现的机会很少,但是如果出现了,也会造成不少麻烦。在此,推荐这款可以在线编辑的FTP:Cute FTP。当然这么好用的软件,不会是免费的,不过有一个月的试用期,另外这样的问题估计一年出不了几次,试用版的也就足够了,当然是有破解版的,不过破解版的软件,终归可能会有这样那样的问题,所以还是请支持正版吧,虽然我们只是试用,呵呵。


本文永久地址:http://drupalsh.cn/node/2551 , 转载请注明出处.

关于Drupal中的patch

博客很久没有更新了,最近头有点痛。青岛的夏天来了,今天好热。。

好像跑题了,言归正转。最近有个朋友问我Drupal中的patch是怎么回事,他说用drupal半年了,但是没有遇到过要用patch的情况,于是就很迷惑。drupalchina论坛里经常见到有人提到patch,但是patch究竟是怎么回事,下面就patch的来龙去脉,做一个简单的说明。

Patch,英文意思是补丁,它并不是drupal的产物,它是一个linux的命令,说起它,不得不提linux的另一个命令:diff.在数学领域,diff是用来对2个集合求差的,patch是求合,在linux命令中,diff用来比较二个文件的不同地方,比如你是一个项目管理者,你让手下给你修改一下模块,修改好交给你后,你想看看他改了什么地方,就可以用diff命令,格式为:diff [命令行选项] 原始文件 新文件

例如

[hahalee@builder]$ diff -u a.module b.module

diff的常用参数如下:

-r 递归处理目录  -u 输出统一格式(unified format)    -N patch里包含新文件 -a   patch里可以包含二进制文件


本文永久地址:http://drupalsh.cn/node/1095 , 转载请注明出处.

Radioactivity-热门文章模块

 http://drupal.org/project/radioactivity ,这个模块应该是处理 最热文章 功能最专业的模块, 它可以结合 http://drupal.org/project/fivestar , 以及内置的comment模块,每个node被view一次,就会增加一些权重,结果可以用views输出。


本文永久地址:http://drupalsh.cn/node/985 , 转载请注明出处.

Drupal白屏的诊断方法

近来公司新装一台服务器,装上Cent os 5.3后,然后是装apache,mysql,等,以为一切万事大吉,谁知道导入一个Drupal系统后,出现白屏。检查一下,服务器配制也没有什么不对,于是重新安装了一个全新的Drupal,完全正常,这就怪了,为什么在本地一切正常,到服务器上怎么就白屏呢。

后来发现服务器的PHP是5.0系统的,想到drupal有些模块要求PHP5.2以上,就升级了一下PHP,在网上查的Linux下升级PHP方法如下

# rpm –import http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka
#
gedit /etc/yum.repos.d/utterramblings.repo
在打开的文件中加入以下内容:
[utterramblings]
name=Jason’s Utter Ramblings Repo
baseurl=http://www.jasonlitka.com/media/EL$releasever/$basearch/
enabled=1
gpgcheck=1
gpgkey=http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka
保存
# yum update php
***
***
重启apache
# service httpd restart

一切搞定,再装,竟然成功了。原来如此。。

但是,后来再用的过程中,经常还是出现莫名其妙的白屏,特别是在加载内容比较多时,比如在编辑内容时或者启用模块时,这此时候往往用的内存比较多,会不会是内存不足的问题?查看一下现在PHP的内存设置,32M,也忒小了点,马上开始升级内存。


本文永久地址:http://drupalsh.cn/node/718 , 转载请注明出处.

关于drupal的主题设置

 Drupal的主题系统为我们内置了很多自定义的选项,比如可以通过 admin/build/themes/settings/yourtheme_name 来设置你网站的logo,icon,还可以设置是不是显示网站的Site slogan,Mission statement,Search box等等,那么,如果在我们的主题中加入额外的其它设置呢,通过一个例子演示一下。

 

这个例子的目的是让管理员可以通过后台来管理你网站的header图片。

为了实现这个目的,需要用到你主题下面的二个文件,theme-settings.php和template.php文件。如果没有,你可以创建这二个文件。

theme-settings.php的工作只有一个,就是实现一个钩子函数 - hook_settings().在这个钩子里实现你的主题设置功能,它返回一个form形式的数组。在里面的代码如下:

 


本文永久地址:http://drupalsh.cn/node/661 , 转载请注明出处.

hook_link和hook_link_alter钩子函数

一般文章下面都有一些链接信息,比如一般有分类信息(Taxonomy),如果开启评论,会出现 添加新评论链接,等等,那么如何添加这些link呢?

Drupal中有个钩子,叫做hook_link,参数如下:hook_link($type, $object, $teaser = FALSE),
第一个参数 $type, 可能的值为node,comment等。
$object,如果type为node, 则$object就为node对象。
$teaser 如果为$node类型,则0,1表示该link是否显示在teaser中.

参考:http://api.drupal.org/api/function/hook_link/6

那么想修改别的模块生成的link呢,很幸运,drupal为我们提供了另一个hook - hook_link_alter(&$links, $node)
$links为引用类型,结构如下:

<?php
$links
["comment"] = array(
       
'title' => t('Your title'),
       
'href' => 'create/comment',
       
'query' => 'destination=node/'.$node->nid,
        );
?>

因为是引用,所以不用有返回值.


本文永久地址:http://drupalsh.cn/node/635 , 转载请注明出处.

Drupal中创建多步表单

假如一个内容类型有很多很多个表单元素,那么我们就应该考虑用多步表单了。

有个模块,http://drupal.org/project/multistep ,这个模块信赖于CCK的Fieldgroup,用起来也挺方便。

但是如何用程序创建多步表单呢?下面用一个简单的例子来演示一下。这个例子有二步,第一步包含title,body,第二步是一个textarea,可以输入一

些额外信息。

drupal通过 $form_state['storage']['step'] 来检测多步表单。

第一步,我们构造表单,先检测$form_state['storage']['step'],如果没有值,显示第一页,如果有,则显示第二页。

<?php

/**
* Implement hook_form().
*/
function multistep_form(&$node, $form_state) {

// Initial step: display title and body fields.
if (!isset($form_state['storage']['step'])) {
$form['title'] = array(
'#title' => t('Title'),
'#type' => 'textfield',
'#required' => TRUE,
'#default_value' => isset($form_state['storage']['title']) ? $form_state['storage']['title'] : $node->title,
);


本文永久地址:http://drupalsh.cn/node/548 , 转载请注明出处.

Drupal的表格(Table)系统

Drupal的设计理念就是数据和表现层相分离,正得益于此,我们可以随意定制自已的主题。

今天,我们来看一下如何定制表格(Table).

假定我们从数据库中读取了一些数据.

<?php
$result
= db_query('SELECT ....');
while (
$data = db_fetch_object($result)) {
// We assemble the data for theming here, but '''no HTML''' generated yet!
}
?>

接下来,构造一个数据

<?php
while ($data = db_fetch_object($result)) {
 
$row = array();
 
$row[] = array('data' => $data->col1, 'class' => 'nice-cell');
 
$row[] = array('data' => $data->col2, 'class' => 'nice-cell');
 
$row[] = array('data' => $data->col3, 'class' => 'nice-cell');
 
// and so on until we have all our cells for a row, which is when we store it.
 
$rows[] = $row;
}
// 构造$header

$header = array('data' => t('Column 1'), 'class' => 'header-cell-class');
?>

注意,这里可以给

表格table加class

,接下来,我们可以

<?php


本文永久地址:http://drupalsh.cn/node/460 , 转载请注明出处.
同步内容