Drupal 7 token模块应用研究

简介

关于token模块,简单描述就是占位符替换,在程序中基本都是用token表示。在drupal 7系统中, token是系统内核提供的核心功能之一,但是该功能只有API,没有任何操作界面,也就是说,该功能只服务于程序级别。大多数情况下我们需要社区模块 “token”。

系统内核提供的token功能,在drupal 6中是 “token” 模块的一部分,在drupal 7中,部分最核心功能被包含到drupal 7 核心代码中,但是更多的功能和操作留在了”token”模块中,这是drupal 保持自己的通用性和小内核、高效率的根本,至少我个人认为这个是正确的。

但是这个也带来一些问题,例如 include/token.inc中的函数是以“token”为前缀开始的,而”token”模块中的函数也是以“token”前缀开始的,这样一来似乎有些冲突,不过实际看来似乎大家配合都很默契 :) .

 

“token”功能和模块的要点

1.  token 的数据是通过 cache 模块保存的。

2.  token的最核心功能在”include/token.inc”中,而不是 “token”模块,但是”token”模块提供了丰富的附加扩展功能。

3.  相对与“token”模块而言,真正对include/token.inc程序有效的函数全部定义在 “token.tokens.inc”文件中,并且该文件的include定义是在”system.module”中完成的。
(题外话: 这个对于”token”模块是一个巧合,如果system.module没有定义“system_hook_info”函数中相关的”token_*”和”tokens”项,那么”token”模块中的,token.tokens.inc文件就是无效的,而实际上,system_hook_info函数中,只定义了一些token相关项,那么我是否可以猜测”module_invoke_all”函数中的,自动寻找HOOK程序路径的相关代码是否专门为token功能编写? 这的确是一个问题,不过好在这个功能可以扩展到任何hook, 只要这些hook的’group’ 定义通过”[custom module name]_hook_info”函数定义在你的“custom module”中即可。)

 

继续编辑中…

关于wordpress AKISMET模块

前天抱着试试看的态度激活了这个模块,并获取了一个API KEY,今天进入博客发现没有垃圾评论,akismet模块显示已屏蔽6条评论。非常高兴,这个问题困扰我已经很久,在此力推akismet模块,并准备在试用一段时间后,正式付费使用,有好东西还是要支持的。

必定wordpress我们用的很好,却没有付一分钱,如果我是wordpress开发程序员,这样工作要饿死的。

同时也鼓励大家,发现好的程序和应用在力所能及的情况下,尽量付费,必定我们都是程序员,也希望有好的程序、自己也可能开发开源项目,总是没有任何收入,义务劳动难以支撑。

在此为wordpress鼓掌。

对开发者非常有用的16个 JavaScript 库

0. CodeMirror

CodeMirror 是一款“Online Source Editor”,基于Javascript,短小精悍,实时在线代码高亮显示,他不是某个富文本编辑器的附属产品,他是许多大名鼎鼎的在线代码编辑器的基础库。

对开发者非常有用的16个 JavaScript 库

视频:

1. html5media

html5media是一个JavaScript音频/视频播放器能够让每一个浏览器都能够播放在HTML5多媒体标签中定义的多媒体文件。 对于不兼容的浏览器,该播放将采用支持Flash的FlowPlayer播放器来代替。

对开发者非常有用的16个 JavaScript 库

Read more…

开发日志 – 20120401

– VIM 操作命令 –
1. 多文件编辑使用:edit [filename] [filename]
2. 多窗口编辑命令:split
3. 窗口之间切换:CTRL+W+[up|down|W]
4. 复制多行:3,5y, 复制第三行到第五行
5. 粘贴:p
6. 剪贴多行:3.5d, 剪贴第三行到第五行

 

– APACHE 如何通过NameVirtualHost配置泛域名解析
1.   ServerName aaa.com
ServerAlias *.aaa.com
2. 如果aaa.com 中有一个二级域名另有它用,可将该二级域名设置的NameVirtualHost代码片段置于 泛域名解析之前,apache会从上倒下解析NameVirtualHost, 如果一个匹配都没有,第一个为默认,如果有匹配,从配置文件上方开始向下优先匹配。

 

– IIS 服务器IIRF 与 apache WriteRule 差别
1.  IIRF 的默认第一位参数包含前置 ‘/’, apache WriteRule 默认第一位参数不包含前置‘/’
2. IIRF有RedirectRule ,apache 只有  WriteRule.

PHP 匹配中文UTF8格式字符串标准正则

“/^([x{4e00}-x{9fa5}]+)$/u”,其中 u修饰副表示 preg_utf8,见详细说明http://cn2.php.net/manual/en/reference.pcre.pattern.modifiers.php,’x’表示十六进制字符,’{…}’大括号中的字符表示一个十六进制字符,在utf8格式下,中文的范围是4e00 — 9fa5.

影响会议效果几点

1议题不清目的不明。

2重要人员缺席。

3参会人员没有准备。

4枝节上费时过多主要议题缺时间讨论。

5任务无明确执行人和时间 线。

Read more…

关于drupal7新创建模块的schema安装

关于drupal7新创建模块的schema安装,如果该模块已经安装过一次,那么新schema不能安装,需要手动删除system表中数据, 参考 include/install.inc:drupal_get_installed_schema_version 函数。

如果模块未安装,函数“drupal_get_installed_schema_version”返回值应该是“-1”,如果已经安装,返回值“0”, 手动删除项参考SQL

$result = db_query(“SELECT name, schema_version FROM {system} WHERE type = :type”, array(‘:type’ => ‘module’));

Python 桌面开发资料

1.PyQt4资料链接

http://www.riverbankcomputing.com

http://wiki.woodpecker.org.cn/moin/PyQt

http://www.commandprompt.com/community/pyqt/book1

http://wiki.python.org/moin/PyQt

http://code.google.com/p/pyqt-doc-cn/

2. 写代码时,最好的帮助文档:

http://www.riverbankcomputing.com/static/Docs/PyQt4/html/classes.html

3. 教程电子书

Getting_Started_With_PyQt4_v1.pdf

 a book about PyQt4 development

【箴言】哈佛大学校训

你所浪费的今天,是昨天死去的人奢望的明天;你所厌恶的现在,是未来的你回不去的曾经。

重点推荐:珊文·铃木1992年在联合国地球峰会上的演讲

原文地址:http://blog.sina.com.cn/s/blog_482170850100chsl.html

珊文·铃木1992年在联合国地球峰会上的演讲。  


她是12岁的加拿大小女孩,她自己筹钱到巴西的里约热内卢,在联合国的峰会上,她做了5分钟的发言。
一开始大家觉得这只是漫长会议中的另一场发言而已,随着她大声说出的每一句话,会场开始变得非常安静。坐在听众席上的高官、重要人物、各国领导、科学家们,有的表情尴尬,有的似乎被什么击中,有的开始擦眼泪。还有更多的人,他们低下了头,好象不知道该怎么和这个小孩对视。

Read more…

Drupal 7中,如何通过程序正确输出一个内容类型创建表单

参考:node/node.pages.inc:node_add(); 函数,源码如下:

function node_add($type) {
global $user;

$types = node_type_get_types();
$node = (object) array(‘uid’ => $user->uid, ‘name’ => (isset($user->name) ? $user->name : ”), ‘type’ => $type, ‘language’ => LANGUAGE_NONE);
drupal_set_title(t(‘Create @name’, array(‘@name’ => $types[$type]->name)), PASS_THROUGH);
$output = drupal_get_form($type . ‘_node_form’, $node);

return $output;
}

这里有个问题,如果在以上代码只设置uid而未设置name, 那么默认是非注册用户,也就是说可以创建成功,但是用户关联错误。

学习–佛法四字

佛法四个字:一是缘。世间万物皆有相缘,缘是机遇,缘是达观。二是空。四大皆空,空是境界,看破红尘,放眼世界。空是智慧,包容宽恕,虚怀若谷,海纳百川。三是悟。悟为慧根,启发心智,世事洞明皆学问。四是善。心怀悲悯,心存感恩,积善行,帮助别人!@任志强(腾讯)

D7 定制forum的二三事

以下所有言论定位在drupal 7 forum 模块。

1. 在后台添加 container 和 forum的区别在哪里?

先说相同点,都是一个term数据,可以在taxonomy 的 forum下面找到,但是你在taxonomy-> 的 forum 下面新建一个term在forum模块中,只是新增加一个forum 而不是 container。 这个区别在于, 如果通过forum模块添加一个container, 会先创建 term, 其次会得到一个 term ID, 然后吧这个term ID 保存在 一个叫 “forum_containers” 的缓存中,通过 variable_set(‘forum_containers’, $containers); 或者  variable_get(‘forum_containers’, array()); 提取数据,这就是为什么在taxonomy 里面创建不出来一个 container的原因。

由此可知,一个forum模块的 forum其实就是 taxonomy 的一个term.

dupal 7 -> form -> checkboxes option settings

“default_value” have to be a array for checkboxes field type.

 

$form['agreement-fieldset']['agree'] = array(
‘#type’  => ‘checkboxes’,
‘#options’ => array(‘yes’=>t(‘agree’), ‘no’=> t(‘not agree’)),
‘#default_value’ =>array(‘no’),
‘#description’ => ‘hello,world’,
‘#required’ => true
);

转载自任志强微薄 – 格言

世间事,莫强求;平常心,待人生;是与非,莫计较;恩与怨,莫挂怀;悲与喜,莫冲动;名与利,莫贪求;想得开,愁云散;看得开,幸福来!  @任志强(腾讯)

Seo 1 plugin by abhbass