Поменять расположение элементов на странице.

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

Аватар пользователя Lexandro Lexandro 18 мая 2007 в 9:13

Есть страница создания новой учетной записи. На не есть блоки "Информация об учетной записи", "Персональная информация", captcha. Автоматически это раполагается так:

captcha
Персональная информация
Информация об учетной записи

Надо сделать:
Информация об учетной записи
Персональная информация
captcha

Как?

Комментарии

Аватар пользователя coyotle coyotle 18 мая 2007 в 10:42

По моему этот порядок зависит от порядка выполнения соответствующих модулей, а он в свою очередь от названия модулей (в алфавитном порядке). Т.е. сначала выполняется модуль captcha, потом profile, потом user... В итоге имеем то что вы описали.
Как изменить порядок не знаю...

Аватар пользователя Dan Dan 18 мая 2007 в 10:54

Знаю только два способа, кто подскажет третий?
Оба способа - суть один, но разная реализация.
Как у тебя называются поля не знаю (лень повторять), покажу на примере убирания формы лога на странице node/add в сворачивающийся бокс.

1. Темизируем вывод формы в теме.
В template.php создаём функцию
<?php
function НазваниеТемы_node_form($form) {
if (isset($form['log']))
$form['log'] = array(
'#type' => 'fieldset',
'#title' => t('Log'),
'#collapsible' => true,
'#collapsed' => true,
'#weight' => 20,
$form['log']
);
return theme_node_form($form); // вызываем оригинальную для окончания рендеринга
}
?>

2. создаём модуль и помещаем в него одну функцию:
<?php
function НазваниеМодуля_form_alter($form_id, &$form) {
if($form['#id'] == 'node-form'){
if (isset($form['log']))
$form['log'] = array(
'#type' => 'fieldset',
'#title' => t('Log'),
'#collapsible' => true,
'#collapsed' => true,
'#weight' => 20,
$form['log']
);
?>

Идея думаю понятна.
Удачи.