Когда я должен добавить новый tpl.php файл, и когда я должен реализовать функцию темы?
Вопрос из двух частей, оба тесно связаны.
- Могут ли все шаблоны быть реализованы как функция в template.php, и как отдельный tpl.php файл?
- В тех случаях, когда вы можете сделать и то, и другое, есть ли преимущества у любого из подходов?
1 answers
Существует два типа тематизации чего-либо (theme('function', $args);
)
Функции
Вызов theme
приведет к вызову функции темы: theme_foo
с аргументами, которые вернут выводимую строку HTML. Их можно перезаписать, создав функцию THEME_NAME_foo
в template.php
Шаблоны
Для функций темы шаблона происходят две вещи: preprocess_foo
вызываются функции, которые будут заполнять переменные для шаблона. Таких не может быть перезаписанные, но новые могут быть добавлены, так как изменяют массив, который будет содержать все переменные, используемые в шаблоне по ссылке. Сам файл шаблона можно перезаписать, создав файл с соответствующим именем. При использовании предложений некоторые из них в определенных случаях могут иметь приоритет над другими. (node-forum.tpl.php
используется для узлов типа форума против node.tpl.php
используется для всех узлов, если лучшего соответствия не существует.)
Ответ
Короче говоря, это зависит от определения функции темы, если вы должны использовать
- шаблон и/или функция предварительной обработки
- функция темы
Но никогда не бывает случая, когда вы можете использовать их сочетание.
Итак
- Нет, ни один файл шаблона не может быть реализован в качестве функции темы.
- Нет, вы никогда не сможете использовать одновременно функцию темы и шаблон, но вы можете использовать функцию предварительной обработки и шаблон.