Posts Tagged ‘hook’

drupal:实用的hook,直接操作数据库

November 7th, 2010

用drupal来直接操作数据库,使得任何事都变得可能。

学会了这节,估计drupal没什么东西再能难得到你了。

另一个好处就是避免了什么事都使用node,node是一个极耗性能的模块,也使node不会增长得过快。

这篇文章并不打使详细说明怎么去操作,但会指出一条明路,举一反三吧:

1.学会创建模块的install文件,这使得当你启用该模块时,直接创建一个数据表,而你uninstall这个模块的时候自动删除该表:

例如,你的模块叫:statisticsmore,你要创建一个叫statisticsmore的数据表用来存放一些统计数据,我就创建了这么一个模块用来做月统计,我们知道drupal默认的统计模块不仅性能低而且还不支持月统计,因此我稍为改了一下。

我们第一步要做的就是创建这么一个数据表:

function statisticsmore_schema() {
$schema['statisticsmore'] = array(……………………);
return $schema;}
function statisticsmore_install() {
drupal_install_schema(‘statisticsmore’);
}
省略的内容怎么写?很简单,查一下系统核心模块中的statistic模块即可,你一看即明白了
第二步要做的就是当uninstall模块时自动删除该数据表:
function statisticsmore_uninstall() {
drupal_uninstall_schema(‘statisticsmore’);
}
很简单的三个函数,复制就行。
上面三步都只是普通的操作,创建了数据表,余下的工作不就是只有四个罗:
select
insert
update
delete
这四个语法怎么学?
简单之极,我自己就是看statistic这个简单之极的核心模块去学的,就那几行代码,都懒得写注释了。
懂点英文都看得明。
余下的事就是复制修改。
这里有个小技巧,我在测试的时候,明明SQL是写对了,但就是运行出错,后来发现,如果出现这种莫明其妙的问题,不是你的代码问题,你应该用phpmyadmin帮你生成一个SQL,然后复制过来就好了。(我估计是些引号或者编码 的问题)
Share

drupal:创建动态页面,hook_menu,hook_load

November 7th, 2010

今天遇到一个项目,需要创建动态变化的目录:

例如:http://www.trackself.com/activemenu/12345

其中后面的12345是动态改变的

查了一下API,单纯的hook_menu不能实现

需要一个hook_load

这个hook_load在这时候的作用是注册了一个占位符,drupal的文档上可不是这么说的。

function selfaffiliate_load($localurl){
return $localurl;
}

我的模块叫selfaffiliate,上面这么一个函数,即注册了一个叫%selfaffiliate的占位符

而用在menu上即是

function selfaffiliate_menu(){

$items=array();

$items['activemenu/%selfaffiliate'] = array

‘title’ => ‘ad menu header’,

‘title arguments’ => array(),

‘title callback’ => FALSE,

‘description’ => ‘ad menu header’,

‘access callback’ => ‘selfaffiliate_safe’,

‘access arguments’ => array(),

‘page arguments’ => array(1),

‘page callback’ => ‘selfaffiliate_headerto‘,

//’file’ => ‘name_of_file.inc’,

//’file path’ => drupal_get_path(‘module’, ‘name_of_module_goes_here’),

‘weight’ => 0,

‘type’ => MENU_CALLBACK,

……

}

这样,当用户请求:http://www.trackself.com/activemenu/12345的时候,就会自动调用selfaffiliate_headerto(12345)函数的返回了

这两个hook合在一起果然很强大

Share

drupal anywhere 15:hook速成,接触drupal的核心

August 1st, 2010

个人认为drupal之所以强大,在于API及hook,api前面介绍过很多了,这次分享一下我使用hook的经验。
学习这节前,只需要知道$node的意义,其余则不必,可参考:drupal anywhere 6 : 入题,node_load,使用API

学习完这节后,如果你还有空看看前面的14个drupal anywhere,则drupal应该算是有小成了吧,接项目不成问题(前提当然是你能举一反三,我尽量写自己举一反三的经验出来),因为学习hook是写模块的前提。 » Read more: drupal anywhere 15:hook速成,接触drupal的核心

Share