Drupal主题功能没有被覆盖
问题描述:
我使用Ubercart,我试图覆盖uc_cart_checkout_pane.inc
中的以下主题功能theme_address_pane()
。所以我在写template.php
以下功能:Drupal主题功能没有被覆盖
function mytheme_address_pane($form) {
return "asdf";
}
但是,它不替换为“ASDF”任何东西。我可能做错了什么?
编辑:devel
模块报告调用的函数为theme_address_pane
,而不是我覆盖的函数。
答
无论何时处理主题系统,您经常必须清除缓存才能看到它。不是整个缓存,只是主题注册表。这里drupal存储关于使用哪个主题功能和模板的信息。因此,无论何时想更改要使用的功能或模板,都必须清除缓存。
直接更改函数或模板时,不需要清除缓存。 Drupal不会缓存函数或模板本身,而只是位置/名称。所以一旦你确定drupal已经注册了它,你就可以愉快地改变你的主题功能。
答
如果你把你的template.php文件的顶部(PHP的标签内)以下:
drupal_flush_all_caches();
它将每次清除缓存加载页面。这样你就不必手动刷新缓存。但是,请务必在发布主题前将其删除,否则您会在每次加载页面时看到巨大的性能提升!
您是否清除了缓存?只有在构建主题注册表时才会检测主题函数,这将在清除缓存后发生。 – jhedstrom 2009-12-15 02:02:18