使用以下两个选项输出链接HTML有什么区别?
theme('links', $primary_links, array('class' => 'links primary-links'))
theme_links($primary_links, $attributes = array('class' => 'links primary-links'))
非常感谢
答案 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及其主题系统如此灵活的部分原因。一切都可以被覆盖。