Поменять местами кнопки в форме входа D7

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

Аватар пользователя udaf udaf 21 февраля 2011 в 19:23

Как поменять местами ссылки "Регистрация, Напомнить пароль" и кнопку "Вход"? в 6 версии в template.php это делалось так:

<?php

function mytheme_theme($existing$type$theme$path) {
    return array(
        
'user_login_block' => array(
        
'arguments' => array('form' => NULL),
        ),
      );
}

function 

mytheme_user_login_block($form){
 
$output '';
  
$output .= drupal_render($form['name']);
  
$output .= drupal_render($form['pass']);
  
$output .= drupal_render($form['links']);
  
$output .= drupal_render($form['submit']);
  
$output .= drupal_render($form);

  return 

$output
}
?>

Как это теперь делается в седмой версии?

Комментарии

Аватар пользователя enemis enemis 17 февраля 2012 в 0:51

смотрим id формы делаем хук_форм_альтер. Добавляем к переменной $form['первая кнопка']['#weight']=10 и она выводиться позже.

Аватар пользователя enemis enemis 17 февраля 2012 в 0:52

И не надо так страшно рендерить все подряд у вас производительность с таким подходом вообще будет простите хреновая.

Аватар пользователя vlucas vlucas 17 февраля 2012 в 16:03

сделал так: создал свой модуль из 2-х файлов my.info и my.module

в инфо прописал все как надо
в модуле написаЛ так:


<?php
function my_form_user_login_block_alter(&$form, &$form_state) {
  
// Modification for the form with the given form ID goes here. For example, if
  // FORM_ID is "user_register" this code would run only on the user
  // registration form.

  // Add a checkbox to registration form about agreeing to terms of use.
  

$form['user_login_block'] = array(
    
//здесь я так понимаю убираем или добавляем все что надо с помощью formAPI
  
);
}

?>

работает!

Теперь назрел вопрос: знаю, что можно еще через template.php у себя в теме через препроцесс делать подобное, так вот как это зделать там, и тчо лучше в плане производительности, делать хуки в теме или как я в модуле?

Аватар пользователя enemis enemis 18 февраля 2012 в 13:53

Я могу сделать предположение что никакой разницы нет. Так как alter формирует одна и таже функция поэтому, исходя их предыдущего опыта, разница в порядке выполнения, сначала модули - затем тема. Поставьте девел и посмотрите время выполнения.