Я понимаю, что этот вопрос был задан, но я либо просто не понимаю, либо предыдущие ответы не применимы (или я не понимаю, как их применять) к моим обстоятельствам. Вот оно:
У меня есть пользовательский модуль с именем:
«мой_модуль» в /sites/all/modules/custom/my_module
У меня есть файл модуля:
/сайты/все/модули/пользовательский/мой_модуль/мой_модуль.модуль
У меня есть имя шаблона страницы "page-mypage", которого НЕТ в моем модуле:
/sites/all/themes/mytheme/pages/page-mypath-mypage.tpl.php
Для этого я сделал хук-меню:
$items['mypath/mypage'] = array(
'title' => 'My Page!',
'page callback' => 'my_module_mypage',
'page arguments' => array(1,2),
'access callback' => true,
'type' => MENU_CALLBACK,
);
В функции я создаю некоторый контент следующим образом:
function my_module_mypage($x, $y) {
$output = "foo AND bar!";
return $output;
}
В шаблоне (опять же НЕ в папке моего модуля, а в подпапке "страницы" ТЕМЫ) у меня есть:
<?php print $content ?>
Когда я перехожу на http://mysite/mypath/mypage, я получаю "foo AND bar!"
Теперь вопрос. Мне нужна новая переменная, определенная в my_module_mypage(), с именем '$moar_content'. Я хочу вывести $moar_content на моей странице-mypath-mypage.tpl.php. Мне нужно сделать это только для этого модуля и для этого шаблона. Мне не нужно это для всей темы, поэтому я не думаю, что использование 'template.php' mytheme уместно.
Я думаю, что мне нужно использовать какую-то предварительную обработку, но все, что я пытаюсь сделать, терпит неудачу, и все, что я читаю, кажется, лишено какого-то волшебного ингредиента.
Мои мысли были такими:
function my_module_preprocess_page_mypath_mypage(&$variables) {
$variables['moar_content'] = 'OATMEAL';
}
or
function my_module_preprocess_my_module_mypage(&$variables) {
$variables['moar_content'] = 'OATMEAL';
}
или что-то. Я почти уверен, что я на правильном пути, но я натыкаюсь на кирпичную стену.