Какая разница между использованием theme () и theme_links () для вывода HTML ссылки? - PullRequest
1 голос
/ 14 апреля 2010

В чем разница между двумя приведенными ниже параметрами для вывода ссылки HTML?

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

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

Большое спасибо

Ответы [ 2 ]

4 голосов
/ 14 апреля 2010

При установке по умолчанию в Drupal без каких-либо настроек шаблона они будут выводить одно и то же.

Однако функция theme() по сути является оберткой для системы тем в Drupal. Передавая 'links' в качестве первого параметра, вы указываете Drupal искать тему ссылок, будь то функция или шаблон. В этом случае тема - это функция (theme_links()), которая вызывается.

Если вы хотите внести изменения в тему, вы можете сделать это, переопределив ее. Например, вы можете создать функцию myTheme_links() и переопределить ее по умолчанию theme_links(). Если вы вызываете функцию theme_links() напрямую, вам придется изменить этот код на соответствующую функцию темы. Однако, если вы используете функцию theme(), никаких дополнительных изменений не будет, так как эта функция знает, когда темы переопределены, и предпринимает соответствующие действия. В двух словах, использование функции theme() является более гибким решением для проверки вашего кода в будущем и, возможно, рассматривает способ работы в Drupal.

Для получения дополнительной информации о темах, ознакомьтесь с Документация по теме Drupal .

3 голосов
/ 14 апреля 2010

Короткая версия:

Если вы используете theme_links(), вы не можете переопределить эту функцию темы в своей теме, используя соглашение об именовании my_theme_links, поскольку вы вызываете ее напрямую.

Если вы вместо этого используете theme('links') drupal будет на основе приоритета выяснить, какую из возможных функций темы использовать. Это часть того, что делает Drupal и его систему тем более гибкой. Все может быть отменено.

...