РЕШЕНО! Темизация формы. По шагово на примере.

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

Аватар пользователя iNFerNo iNFerNo 14 ноября 2011 в 15:40

Я создал тип материала. Набил его полями, и теперь необходимо темизировать форму создания этого типа материала.

Например есть Поле - персоны, со списком выпадающим фио, которое имеет заголовок - Персоны.

1. Требуется изменить его на: Выберите одну из персон из списка
2. Требуется изменить его на: оставить без заголовка, а добавить сверху поля описание действий пользователя или описание этого поля.

Что мне для этого нужно?

1. Ищу id формы этой

Вкл. файрбаг и нахожу следующее:

id="edit-field-noderef-person-nid-nid"

И видимо нужно использовать следующее

<?php
function названиетемы_theme() {
  return array(
    'edit-field-noderef-person-nid-nid_form' => array(

      'arguments' => array('form' => NULL),
    ),
  );
}
?>

<?php
  function названиетемы_edit-field-noderef-person-nid-nid_form($form) {

$form['person'] = array(
   
    '#title' => t('Person'),
  );

  }
?>

и что дальше делать ?

Комментарии

Аватар пользователя iNFerNo iNFerNo 14 ноября 2011 в 15:57

а если в свой модуль то тоже ошибки

  function mymodule_form_alter(&$form, $form_state, $form_id) {

    switch ($form_id) {

      case 'edit-field-noderef-person-nid-nid_form':

$form['person'] = array(

    '#title' => t('Person'),
           );

        break;
  }

}

Аватар пользователя Orion76 Orion76 14 ноября 2011 в 16:48

правильный $form_id проще найти ,вставив
echo $form_id.'</br>';
в функцию mymodule_form_alter

edit-field-noderef-person-nid-nid_form - это идентификатор поля, а не формы

Аватар пользователя iNFerNo iNFerNo 14 ноября 2011 в 17:04

я вставил. но он находит лишь

question_node_form
shoutbox_add_form

а для конкретной поля чото нету или мне нода формы и нужна?

Аватар пользователя aa2ndrew aa2ndrew 14 ноября 2011 в 18:38

Должно быть так:


<?php function mymodule_form_alter(&$form$form_state$form_id) {
    switch (
$form_id) {
        case 
'question_node_form':
            
$form['идентификатор_поля']['#title'] =  t('Person');
            break;
    }
?>
Аватар пользователя iNFerNo iNFerNo 14 ноября 2011 в 21:06
 switch ($form_id) {
        case 'edit-question-node-form':
            $form['edit_field_noderef_person_nid_nid']['#title'] =  t('4el');
            break;
    }

неработает чото

Аватар пользователя iNFerNo iNFerNo 14 ноября 2011 в 21:14
<label for="edit-field-noderef-person-nid-nid">Персона: </label>
<select id="edit-field-noderef-person-nid-nid" class="form-select" name="field_noderef_person[nid][nid]">
<option value="">- Нет -</option>
<option value="1553">0</option>
<option value="1528">1</option>
<option selected="selected" value="1552">2</option>
</select>
</div>
<div id="edit-title-wrapper" class="form-item">
Аватар пользователя iNFerNo iNFerNo 14 ноября 2011 в 22:23

вот как у меня

function mymodule_form_alter(&$form, $form_state, $form_id) {

  if ('profile_node_form' == $form_id) {
    $form['title']['#type'] = 'value';
    $form['title']['#required'] = FALSE;

  }

if ($form_id == 'comment_form') {
  $form['comment_filter']['comment']['#title'] = '';

  $form['submit']['#value'] = t('Submit');
  unset($form['_author'], $form['preview']);

}

   switch ($form_id) {
        case 'question-node-form':
            $form['edit_field_noderef_person_nid_nid']['#title'] =  t('4el');
            break;
    }

}

Аватар пользователя Orion76 Orion76 14 ноября 2011 в 23:21

my_module в модулях активирован?
поставьте в начале и в условиях функции что-от типа:

echo "Формальтер стартанула";
echo "Обрабатывается форма такая-то";

и т.п.