使用theme()和theme links()来输出链接HTML有什么区别?

时间:2010-04-14 16:16:38

标签: drupal drupal-6

使用以下两个选项输出链接HTML有什么区别?

theme('links', $primary_links, array('class' => 'links primary-links'))

theme_links($primary_links, $attributes = array('class' => 'links primary-links'))

非常感谢

2 个答案:

答案 0 :(得分:4)

在没有任何模板自定义的默认Drupal安装中,它们将输出相同的内容。

但是,theme()函数本质上是Drupal中主题系统的包装器。通过传递'links'作为第一个参数,您告诉Drupal查找链接主题,无论这是一个函数还是一个模板。在这种情况下,主题是一个被调用的函数(theme_links())。

如果您想要更改主题,可以通过覆盖它来实现。例如,您可以创建函数myTheme_links()并使其覆盖默认的theme_links()。如果直接调用函数theme_links(),则必须将此代码更改为相应的主题函数。但是,如果您使用theme()函数,则不会有任何其他更改,因为此函数知道何时覆盖主题并采取适当的操作。简而言之,使用theme()函数是未来校对代码的更灵活的解决方案,并且可能考虑了Drupal的处理方式。

有关主题的更多信息,请查看Drupal's theme documentation

答案 1 :(得分:3)

简短版本是:

如果您使用theme_links(),则无法使用my_theme_links命名约定覆盖主题中的主题功能,因为您可以直接调用它。

如果您使用theme('links') drupal将基于优先级确定要使用哪些可能的主题函数。这是Drupal及其主题系统如此灵活的部分原因。一切都可以被覆盖。