我正在使用Ubercart而我正在尝试覆盖theme_address_pane()
中的以下主题函数uc_cart_checkout_pane.inc
。所以我在template.php
中编写了以下函数:
function mytheme_address_pane($form) {
return "asdf";
}
但是,它并没有用“asdf”替换任何东西。我能做错什么?
编辑:devel
模块报告被调用的函数为theme_address_pane
,而不是我被覆盖的函数。
答案 0 :(得分:2)
每当处理主题系统时,您通常必须清除缓存才能看到它生效。不是整个缓存,只是主题注册表。这里drupal存储有关使用哪些主题功能和模板的信息。因此,无论何时您想要更改要使用的功能或模板,都必须清除缓存。
直接更改功能或模板时,不需要清除缓存。 Drupal不会缓存函数或模板本身,而只缓存位置/名称。因此,一旦确定drupal已经注册,您就可以愉快地改变主题功能。
答案 1 :(得分:2)
如果您将以下内容放在template.php文件的顶部(在php标记内):
drupal_flush_all_caches();
每次页面加载时都会清除缓存。这样您就不必手动刷新缓存。但是,在主题发布之前一定要删除它,否则你会看到每个页面加载都有巨大的性能损失!
答案 2 :(得分:0)
要改变Drupal 6中的主题功能,您需要实现hook_theme_registry_alter()
。