Для общего обзора вы должны прочитать о работе с переменными в функциях предварительной обработки .
Что касается соглашения об именах, это обычно довольно просто, но для вашего текущего примера есть одна загвоздка (см. Ниже):
Подпись функций предварительной обработки должна быть
[yourModuleName|yourThemeName]_preprocess_[themeFunctionName](&$variables)
, поэтому реализация шаблона для шаблона страницы в файле theme.php приведет к
themeName_preprocess_page(&$variables)
В большинстве случаев именем функции темы будет имя файла * .tpl.php без окончания .tpl.php и с подчеркиванием вместо дефисов. Но есть ловушка , если файл шаблона выбирается на основе предложений шаблона , поскольку функция предварительной обработки может быть реализована только для базового имени, но не для дополнительных предложений! (Предложения по альтернативным файлам шаблонов добавляются в функции предварительной обработки.)
Ваш текущий пример - один из таких случаев, так как content-field-field_transmission_make_model.tpl.php
является таким предложением, с базовым именем content-field.tpl.php
и соответствующей функцией темы content_field
. Таким образом, вам придется реализовать функцию препроцессора с именем yourThemeName_preprocess_content_field(&$variables)
, и в рамках этого проверить доступные записи в массиве $ variable, чтобы проверить, действительно ли вы вызваны для 'field_transmission_make_model', а не для совершенно другого поля CCK, например:
function yourThemeName_preprocess_content_field(&$variables) {
// Are we called for the right field?
if ('field_transmission_make_model' == $variables['field_name']) {
// Yes, add/manipulate entries within the variables array
$variables['new_entry'] = 'A useless new variable';
$variables['label'] = 'A useless change of the existing label variable';
}
}
(Примечание: непроверенный код, остерегайтесь опечаток)
После этого в вашем файле шаблона должна быть доступна новая переменная $new_entry
, а содержимое переменной $label
должно было измениться (все записи верхнего уровня в массиве $ variable будут превращены в отдельные переменные). для файла шаблона, названного в честь индекса массива).
Что касается вашего второго вопроса, базовое использование функций предварительной обработки одинаково для всех файлов шаблонов, но имейте в виду:
- Функции предварительной обработки доступны только для вызовов тем, использующих файлы * .tpl.php, не для функций тем
- Содержимое массива $ variable сильно варьируется в зависимости от тематики
- Другие модули могут также реализовывать функции предварительной обработки, и они будут вызываться одна за другой, поэтому, если вы хотите изменить что-то, добавленное другим модулем, вы можете сделать это только в том случае, если ваша реализация вызывается после этого (что не будет проблемой в вашем случае, так как реализации внутри темы вызываются после всех реализаций в модулях - просто хочу отметить, что может быть много реализаций одновременно)