通配符和参数替换

g089h515r806 的头像
Submitted by g089h515r806 on 星期一, 2009-08-03 14:53

在实际中,一个Drupal路径的一部分通常是用来查看或者修改一个对象的,比如一个节点对象或者一个用户对象。例如,路径node/%/edit用来编辑一个节点,而路径user/%则用来根据用户ID来查看用户的相关信息。让我们看一下后者的菜单项,你可以在modules/user/user.module中的hook_menu()实现中找到它。这个路径匹配的URL应该看起来是这样的http://example.com/?q=user/2375。在你的Drupal站点上点击查看“我的帐号”页面,就能看到这样的URL了。

Drupal版本:

通配符和页面回调参数

g089h515r806 的头像
Submitted by g089h515r806 on 星期一, 2009-08-03 14:49

老葛的Drupal培训班 Think in Drupal

菜单路径中的通配符,不影响将URL中的额外部分作为参数传递给页面回调,这是因为通配符只匹配到下一个/字符。继续使用我们的menufun/%路径作为例子,对于URL http://example.com/?q=menufun/foo/Fred,通配符所匹配的字符串就是foo,而对于路径中的最后一部分(Fred),它将作为一个参数传递给页面回调。

Drupal版本:

菜单项中的通配符

g089h515r806 的头像
Submitted by g089h515r806 on 星期一, 2009-08-03 14:48

到目前为止,我们在菜单项中所用的都是普通的Drupal路径名字,比如menufun 和menufun/farewell。但是Drupal还经常使用这样的路径,比如user/4/track或node/15/edit,在这些路径中,有一部分是动态的。现在,让我们来看看动态路径是如何工作的。

Drupal版本:

标题参数

g089h515r806 的头像
Submitted by g089h515r806 on 星期一, 2009-08-03 14:46

Drupal的翻译函数,可以接受一个字符串和一个用来替换的数组(更多关于t()函数的详细,参看第18章),例如:

Drupal版本:

定义标题回调

g089h515r806 的头像
Submitted by g089h515r806 on 星期一, 2009-08-03 14:45

如果没有在菜单项中定义标题回调的话,Drupal将默认使用t()函数。我们也可以明确地给出这个回调函数的名字,在title callback键中声明它就是了:

Drupal版本:

技术的积累

g089h515r806 的头像
Submitted by g089h515r806 on 星期一, 2009-08-03 03:54

今天上午,学会了整合FCKeditor和image assist,从永岛告诉我客户的需求,到选取模块,再到实现两个模块之间的整合,也花去了6个小时的时间了。客户的需求其实很简单,也很常见,就是想在Fckeditor中插入图片,点击图片,能够链接到图片的节点页面,或者说是原始页面。相关的模块一大堆,需要选用哪一个。选了模块以后,还要学习如何整合。比如,最后选择了image assist,那么就要整合它和fckeditor之间集成,有些模块之间的集成不是一下子就搞定的。需要多做一些工作。有时候选择的模块可能是错误的。那样需要花费更多的时间。

上个月去外研社,白小雨让我现场帮他解决问题,在短短的2个小时内,我帮他搞定了3个问题,这些都是困扰他们多时的问题。还有很多其他的例子,别人会很惊讶,这样的问题我都会,这么简单就搞定了。是的,就是那么简单。

对于每个简单的问题,在学会其相应的解决办法的过程,都是需要花费不短的时间的。我之所以能够那么短的时间,解决问题,就是因为我用了2年的时间,重复同样的事情,两年来,我一直从事Drupal的技术工作,从而积累了大量的经验。这是一个过程,需要慢慢积累。一个问题解决了,下次遇到同样的问题,就省事不少。一个问题解决了,下次遇到同样的问题,思考一下有没有更好的解决办法。

日积月累,是一个过程。

会员自由标签:

标题的本地化和定制

g089h515r806 的头像
Submitted by g089h515r806 on 星期日, 2009-08-02 14:27

Drupal支持多语言,它使用t()函数来翻译字符串。所以你可能会想,菜单项中的title键应该是这样定义的:

'title' => t('Greeting') // No! don't use t() in menu item titles or descriptions.
 
    然而,你想错了。菜单字符串是以原始字符串的形式存储在menu_router表中的,而菜单项的翻译则被推迟到了运行时进行。真实情况是,Drupal有一个默认的翻译函数(t()函数),它被指定用来翻译菜单标题。你将在后面看到,如何将默认翻译函数修改为你选择的函数,以及如何向该函数传递参数。负责翻译的函数被称为title callback(标题回调),而传递过来的参数则被称为title arguments(标题参数)。
 老葛的Drupal培训班 Think in Drupal

Drupal版本:

页面

Subscribe to Think in Drupal RSS