Drupal6: встраивание региона в файл представления .tpl.php

У кого-нибудь есть идеи о том, как я могу встроить регион в файл представления .tpl.php?

Я достаточно легко это делаю в узле .tpl.php, добавляя что-то вроде этого в theme_preproces_node():

$vars['promos'] = theme('blocks', 'promos');

Совершенно никаких проблем. Однако очевидно, что функции theme_preprocess_view() нет, и я получаю ошибки памяти, когда пытаюсь добавить тот же фрагмент в theme_preprocess().

Неустранимая ошибка: разрешенный размер памяти 104857600 байт исчерпан (попытка выделить 523800 байт) в /Users/cpharmston/Sites/Projects/Threespot/neh01/includes/database.mysqli.inc в строке 42

Я в тупике. Любые идеи?

Спасибо!


person Community    schedule 05.10.2009    source источник


Ответы (1)


«Быстрый и грязный» способ: вы можете просто поместить вызов theme('blocks', [region_name]) прямо в файл views .tpl.php.

Хотя функции предварительной обработки нацелены на лучшее разделение «бизнес-логики» и «логики отображения», они никоим образом не требуются, поэтому вы все равно можете поместить собственный код в файл .tpl.php любым удобным для вас способом.

"Правильный" способ: есть функций предварительной обработки для представлений, всего несколько. Взгляните на файл theme.inc модуля просмотров. Там вы найдете различные функции предварительной обработки для различных шаблонов, которые могут использоваться представлением (например, «неформатированный», «таблица», «список» и т. Д.). Вам просто нужно найти тот, который соответствует шаблону представления, в который вы хотите ввести новую переменную.

person Henrik Opel    schedule 05.10.2009
comment
Подайте это под DOH! категория. Я настолько увлекся разделением бизнес-логики и логики отображения, что упустил из виду очевидное. Спасибо за помощь :) - person ; 05.10.2009