代码之家  ›  专栏  ›  技术社区  ›  Fragsworth

未重写Drupal主题函数

  •  0
  • Fragsworth  · 技术社区  · 16 年前

    我正在使用UberCart,我正在尝试重写以下主题函数 theme_address_pane() 这是在 uc_cart_checkout_pane.inc . 所以我在 template.php :

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

    然而,它并没有用“asdf”取代任何东西。我可能做错什么了?

    编辑: devel 模块将被调用的函数报告为 theme_address_pane ,不是我重写的。

    3 回复  |  直到 16 年前
        1
  •  2
  •   googletorp    16 年前

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

    直接更改函数或模板时,不需要清除缓存。Drupal不会缓存函数或模板本身,只缓存位置/名称。因此,一旦您确定Drupal已经注册了主题函数,您就可以很高兴地对其进行更改。

        2
  •  2
  •   Brent Hardinge    16 年前

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

    drupal_flush_all_caches();

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

        3
  •  0
  •   avpaderno    16 年前

    要更改Drupal6中的主题函数,需要实现 hook_theme_registry_alter() .

    推荐文章