调用进程
处理进程
Path > Access_Callback >
Page_Callback > $content
输出进程
Page(Block) > theme > preprocess >
template
发邮件
$module = 'email_example';
$key = 'contact_message';
$from = 'catcat811@hotmail.com';
$to = 'catcat811@gmail.com';
$language = language_default();
$send = true;
drupal_mail($module, $key, $to, $language,
$params, $from, $send);
主题知识
Drupal分为主题表示层(theming
layers)与数据逻辑层(data/logic layers),数据逻辑层可以有输出内容,但主题表示层总是可以对这些内容改写。
大多数页面元素一般是由theme('page')拉进来的,在显示导航信息以后,它们被放置在page.tpl.php模板中
区块定制总结
总体来说可以分为三步:
第一步:在模板文件.info中定义一个新的regions.格式是:regions[内部名称] = 显示在区块内的名称.eg:regions[footer] = Footer,(Drupal是通过在模板内使用regions来控制显示区块的,所以需要定义),记得加上默认的那些regions.(如果没有定义的 话,系统将会使用默认值,若添加新的regions,将使原来的失效,所以需要加上).
第二步:由于.info在主题内存在缓存,所以添加后你需要去Administer
-> Site configuration -> Performance清除缓存.
第三步:我们需要将新的regions放在模板内,并来显示他们.若需要在页面内加入区块,则只需要在
page.tpl.php内在你想要它出现的位置添加上<?php print $内部名称 ?> 由于内部名称能够自动在page.tpl.php模板内自动转换成region 变量,所以你无须再做其他操作.若是加在其它地方,你需要在template.php内使用function 函数来处理变量,因为它不能够动态生成.
CCK字段调用
Node_load所填充的CCK字段一般以数组形式出现,变量名以字段名命名,文件类型的路径是filepath,调用例子如下:
$field_image[0]['filepath']
一般文本类型字段的值是value,调用例子如下:
$field_date[0]['value']
缓存API
cache_set($cid, $table = 'cache', $data,
$expire = CACHE_PERMANENT, $headers = NULL);
cache_get($cid, $table = 'cache');
$cache = cache_get($cid);
if($cache){
cache_set($cid,
'cache', $data, time() + 3600);
} else {
Return
$cache->data;
}
Node插入内容
Node的显示数据主要包括title,content等,node是以drupal_render呈现数据,所以可以在任意字段中插入内容。
$node->content[‘field’] = array(‘#value’
=> ‘插入内容’, ‘#weight’ => 2);
以上代码放到hook_nodeapi中就可以在body与comment之间插入内容
Imagecahce缩略图代码
缩略图显示页面上
$imagepath = db_result(db_query('SELECT
filepath FROM {files} WHERE fid = %d', $fid));
theme('imagecache', 'List_medium',
$imagepath, array_pop(explode('/', $image)), $alt, $title, $attributes);