Я перечитывал документы снова и снова, пытаясь обернуть голову вокруг этой, казалось бы, простой задачи.По сути, у меня есть шаблон с div 'skip navigation', жестко запрограммированный в html.tpl.php, который я не хочу на первой странице.
Моя идея состояла в том, чтобы установитьПеременная $ vars ['skiplink'] в theme_preprocess_page.Поскольку эта переменная содержит несколько строк HTML-разметки, я стремился к чему-то, что видно из темы гирлянды:
function garland_preprocess_page(&$vars) {
// Move secondary tabs into a separate variable.
$vars['tabs2'] = array(
'#theme' => 'menu_local_tasks',
'#secondary' => $vars['tabs']['#secondary'],
);
<snip>
Я хотел бы иметь HTML в Themable функции или даже в шаблоне, но я не могудаже заставить этот фрагмент работать:
/**
* Override or insert variables into the page template.
*/
function morin_preprocess_page(&$vars) {
// add skiplink markup
$vars['skiplink'] = 'hello world';
}
Это генерирует уведомление:
Примечание: неопределенная переменная: пропустить ссылку в include () (строка 14 в / var / dev / morin/www/sites/all/themes/morin/templates/html.tpl.php).
Кто-нибудь может дать мне подсказку?Мне бы очень хотелось понять, как это сделать с помощью обоих методов (шаблон и функция).Мне также интересно, должно ли это быть сделано в модуле?
Я понимаю, что есть, вероятно, 10 способов обшарить эту кошку, поэтому любые идеи о плюсах / минусах используемых методов приветствуются.
Хорошо, я понял, что использую неправильную функцию препроцесса, установка $ vars ['skiplink'] в preprocess_html - это путь к переменным верхнего уровня. Мне все еще предстоит ясно определить, как связать эту переменнуюв файл шаблона.