Drupal主题功能未被覆盖

时间:2009-12-15 01:39:30

标签: drupal function themes

我正在使用Ubercart而我正在尝试覆盖theme_address_pane()中的以下主题函数uc_cart_checkout_pane.inc。所以我在template.php中编写了以下函数:

function mytheme_address_pane($form) {
    return "asdf";
}

但是,它并没有用“asdf”替换任何东西。我能做错什么?

编辑:devel模块报告被调用的函数为theme_address_pane,而不是我被覆盖的函数。

3 个答案:

答案 0 :(得分:2)

每当处理主题系统时,您通常必须清除缓存才能看到它生效。不是整个缓存,只是主题注册表。这里drupal存储有关使用哪些主题功能和模板的信息。因此,无论何时您想要更改要使用的功能或模板,都必须清除缓存。

直接更改功能或模板时,不需要清除缓存。 Drupal不会缓存函数或模板本身,而只缓存位置/名称。因此,一旦确定drupal已经注册,您就可以愉快地改变主题功能。

答案 1 :(得分:2)

如果您将以下内容放在template.php文件的顶部(在php标记内):

  

drupal_flush_all_caches();

每次页面加载时都会清除缓存。这样您就不必手动刷新缓存。但是,在主题发布之前一定要删除它,否则你会看到每个页面加载都有巨大的性能损失!

答案 2 :(得分:0)

要改变Drupal 6中的主题功能,您需要实现hook_theme_registry_alter()