用户登录

Drupal资源链接

http://zhupou.cn
drupal布道者,改成了"老葛的Drupal培训班",专心于培训事业
http://drupal.org
官方网站
http://drupalchina.org
中文的官方网站
http://acquia.com/
本站就是用这个版本构建的

使用节点编辑模板的技巧

在drupal,增加自定义节点之后,对于节点显示可以使用Contemplate来进行设计,把这里的内容 直接转成tpl.php可以在正式网站上使用,但对于节点的编辑模板来说,可以在drupal的模板系统中使用hook_theme功能来进行,但在实际使用中的遇到了一点点小问题。

通过DEVEL模块查看编辑节点时调用的顺序可知

garland_news_node_form < phptemplate_news_node_form < theme_news_node_form < garland_node_form < phptemplate_node_form < theme_node_form

那么我在template.php中加入garland_node_formphptemplate_node_form函数进行调用时,一切正常,但当我加入phptemplate_news_node_form或garland_news_node_form函数进行调用时,却没有出现。

查看theme registry时发现,对于node_form的theme,是系统modules/node文件中已经注册了模板,但对于特定类型的节点,系统没有为这种类型注册 特定的模板名字,这就是为什么可以使用garland_node_formphptemplate_node_form,而不能使用phptemplate_news_node_form或 garland_news_node_form对news节点进行修改的原因。

那么怎么样解决这个问题,很简单,自己注册 一下就行了,用hook_theme(下面代码要用在template.php文件中)

//注册news节点的模板 
function  garland_theme(){
      return array(
    'news_node_form' => array(
      'arguments' => array('form' => NULL),
      ),
    ); 
  }
//theme news编辑模板  想怎么改就怎么改
function garland_question1_node_form($form){
  dpm($form);
  return drupal_render($form);
}