Я создаю сайт с помощью Drupal, и у меня небольшая проблема. Я рендеринг формы с использованием hook_menu. Форма хорошо, и все хорошо. Затем я добавляю еще немного разметки на страницу с помощью hook_page_alter (). Hook_page_alter выглядит так:
function renderer_page_alter(&$page) {
if(drupal_is_front_page()) {
$q = db_query('SELECT name, mname, number_of_instances FROM {event_type} ORDER BY number_of_instances DESC');
foreach($q as $event) {
$options['name'][] = $event->name;
$options['mname'][] = $event->mname;
}
$tri = array(
'#theme' => 'frontpage_canvas',
'#options' => $options
);
return $page['content']['triangles'] = $tri;
}
}
Итак, в моей локальной установке MAMP содержимое отображается сначала с результатами hook_page_alter (), а затем с формой. Однако при удаленной установке порядок меняется (с кнопкой «Отправить» для формы вверху страницы и остальным содержимым под ней). Единственное различие между установками (о которых я могу думать) состоит в том, что удаленная установка - это Drupal 7.8, а локальная - Drupal 7.9.
Я бы хотел, чтобы удаленная установка выполнялась так же, как и локальная. Кто-нибудь сталкивался с подобной проблемой раньше?
Основная структура визуализированного HTML выглядит следующим образом:
<div class=content>
//all the form information is in here
</div>
<div class=rendered>
//all the output from hook_page_alter() is here
</div>
РЕДАКТИРОВАТЬ: Проблема в том, что по какой-то причине, block.tpl.php добавляет два div:
<div id="block-system-main" class="block block-system first last odd">
<div class="content">
//My form markup is in here
</div>
</div>
//The hook_page_alter markup is in here.
Итак, есть ли способ заставить Drupal добавить разметку hook_page_alter к тому же div, в котором отображается форма? Поскольку способ визуализации в данный момент, свойство #weight
не влияет на позиционирование.
Спасибо