Когда я должен добавить новый tpl.php файл, и когда я должен реализовать функцию темы?


Вопрос из двух частей, оба тесно связаны.

  1. Могут ли все шаблоны быть реализованы как функция в template.php, и как отдельный tpl.php файл?
  2. В тех случаях, когда вы можете сделать и то, и другое, есть ли преимущества у любого из подходов?
 1
Author: Letharion, 2012-01-13

1 answers

Существует два типа тематизации чего-либо (theme('function', $args);)

Функции

Вызов theme приведет к вызову функции темы: theme_foo с аргументами, которые вернут выводимую строку HTML. Их можно перезаписать, создав функцию THEME_NAME_foo в template.php

Шаблоны

Для функций темы шаблона происходят две вещи: preprocess_foo вызываются функции, которые будут заполнять переменные для шаблона. Таких не может быть перезаписанные, но новые могут быть добавлены, так как изменяют массив, который будет содержать все переменные, используемые в шаблоне по ссылке. Сам файл шаблона можно перезаписать, создав файл с соответствующим именем. При использовании предложений некоторые из них в определенных случаях могут иметь приоритет над другими. (node-forum.tpl.php используется для узлов типа форума против node.tpl.php используется для всех узлов, если лучшего соответствия не существует.)

Ответ

Короче говоря, это зависит от определения функции темы, если вы должны использовать

  • шаблон и/или функция предварительной обработки
  • функция темы

Но никогда не бывает случая, когда вы можете использовать их сочетание.

Итак

  1. Нет, ни один файл шаблона не может быть реализован в качестве функции темы.
  2. Нет, вы никогда не сможете использовать одновременно функцию темы и шаблон, но вы можете использовать функцию предварительной обработки и шаблон.
 4
Author: googletorp, 2020-06-15 09:13:00