Очередные изменения в drupal 7

Главные вкладки

Аватар пользователя andypost@drupal.org andypost@drupal.org 12 мая 2009 в 23:04

Прошел еще один тренд, теперь drupal_get_form возвращает не отрисованную форму, а массив. Так что, господа кодеры, настраиваемся переделывать все формы ввода

Подробности в issue http://drupal.org/node/353069

Комментарии

Аватар пользователя neochief neochief 13 мая 2009 в 0:30

Вообще-то, я только "за". До этого, чтобы получить конечную форму без рендера, надо было делать это в три шага.

Аватар пользователя gorr gorr 13 мая 2009 в 16:10

Насколько я понял, это сделано для того, чтобы к страницам, у которых коллбек функция возвращает форму можно было применить новый hook_page_alter(). В качестве примера использования указывается возможность разнести форму по регионам, что невозможно сделать с помощью hook_form_alter(). В 7-ом друпале коллбек функция должна будет возвращать массив значений, а не отрендеренную из него строку.

Аватар пользователя shp shp 14 мая 2009 в 22:08

В Друпале-7 на основе drupal_render() теперь сделана и генерация страницы.

Мне этот новый механизм тоже пока нравится. Он гораздо более гибкий, чем старый.
1. Так, active_handler теперь может формировать ВСЮ страницу, а не только контент. Страница представляет собой древовидный массив $page, active_handler может вернуть либо готовую $page, либо, как раньше - строку (тогда создается стандартная $page, а эта строка помещается в content).
2. Другие модули могут изменить $page через hook_page_alter(). В частности, через этот хук размещаются блоки.
3. В конце каждый уровень $page рекурсивно рендерится через drupal_render(), пока не получим готовую страницу.
4. Причем, для любого элемента $page можно указать тему, которой этот эл-т темизировать.
5. Также, если какой-то элемент $page есть в готовом виде, можно положить этот готовый код в $page...['element']['#markup'], соответственно, рендеринг сильно ускорится. А если еще немного переделать модули block и node, чтобы они умели отдавать #markup - вообще сказка будет с точки зрения производительности Smile

Аватар пользователя shp shp 15 мая 2009 в 18:41

Да, можно выводить ноды своим active_handler. Кстати, спасибо за hook_menu_alter, раньше я его как-то не замечал Smile Я имел в виду - неплохо было бы, чтобы дошло дело до изменения "ядерных" модулей block и node.

Аватар пользователя shp shp 15 мая 2009 в 18:43

Эта тема - на самом деле - хорошая идея, потому что за всем не уследишь, и можно много интересного пропустить. Меня, например, больше интересуют нововведения с точки зрения программиста, и особенно производительность.

Аватар пользователя shp shp 15 мая 2009 в 22:39

penexe wrote:
shp, block уже не в ядре

Принципиально это ничего не меняет Smile Хорошо, можно назвать эти модули "стандартными" Smile