Темизация exposed фильтра

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

Аватар пользователя digital_sword digital_sword 24 февраля 2009 в 19:28

Вообще темизируется? И как форма или как представление? Материла в поиске что-то не нашел по 6ке.

  1. Как узнать имя каждой переменной-поля?
  2. Как можно добавить картинку рядом с определенным полем? (не бэкграундом, а просто картинку). И надпись рядом
  3. Как переделать поле в раскрывающийся список или чекбокс? (именно темизацией)
  4. Как сменить слово "применить" на "поиск"?

Комментарии

Аватар пользователя beerman beerman 26 февраля 2009 в 13:51

<?php
function MYMODULE_form_alter(&$form, $form_state, $form_id) {
print $form_id; // Узнаем ID нашей формы для темизации
}
?>

Далее меняем нашу ф-ю

<?php
function MYMODULE_form_alter(&$form, $form_state, $form_id) {
switch($form_id) {
case 'views_exposed_form':
drupal_set_message("

".print_r($form,1)."

"); // Получаем массим переменных нашей формы
}
}
?>

Опять меняем нашу ф-ю

<?php
function MYMODULE_form_alter(&$form, $form_state, $form_id) {
switch($form_id) {
case 'views_exposed_form':
$form['field_myfield']['#prefix'] = '

'; // Оборачиваем наш элемент в div
$form['field_myfield']['#suffix'] = '

';

$form['field_myfield']['#options'] = array(
1 => 'First',
2 => 'Second',
3 => 'Third',
); // Определяем набор выпадающего списка

}
}
?>

field_myfield заменить на свое название поля, которое можно посмотреть на странице управления полями типа материала.
По аналогии можно переопределять и чекбоксы, и другие элементы

Аватар пользователя penexe penexe 25 февраля 2009 в 5:39

еще шаблон есть views-exposed-form.tpl.php в нем правда только положение элементов можно изменить, кнопку там передвинуть и тд

Аватар пользователя digital_sword digital_sword 25 февраля 2009 в 22:44

"beerman" wrote:
<?php
function MYMODULE_form_alter(&$form, $form_state, $form_id) {
switch($form_id) {
case 'views_exposed_form':
drupal_set_message('

.print_r($form,1),'

); // Получаем массим переменных нашей формы
}
}
?>


Споткнулся здесь. Создал модуль с именем MYMODULE, узнал id формы (views_exposed_formviews_exposed_form). Дальше вставляю данный код. Пишет, ошибка в строчке, которая начинается с drupal_set_message (' . Все form_id заменил на views_exposed_formviews_exposed_form . Что не так?

"penexe" wrote:
еще шаблон есть views-exposed-form.tpl.php в нем правда только положение элементов можно изменить, кнопку там передвинуть и тд

Нашел, меняется. А как там подобраться к отдельному полю? Или чекбоксу. Там же один <?php print $widget->widget; ?> отвечает сразу за все поля.

Аватар пользователя digital_sword digital_sword 26 февраля 2009 в 7:21

Ага, так работает. Вывел сообщение на 77000 строк. Вставляю 3й код, пишет ошибка в строке

$form['my_field']['#options'] = array(1=>'First element', 2=>'Second element', 3=>'Third element'));

Вот здесь my_field это что? Я вставлял вместо этого field_obshaya_value. Или нужно field_obshaya, или даже filter-field_obshaya?

Аватар пользователя digital_sword digital_sword 26 февраля 2009 в 13:11

Да, теперь без ошибок, только у вас правая скобка лишняя.
А название поля какое вставлять? Пробовал разные, которые написаны в сообщении, не идет.
field_obshaya, field_obshaya_value_op, field_obshaya_value. Исходное CCK поле называется field_obshaya.
Ничего не меняется. Итого вставлен код:

function my_moduleq_form_alter(&$form, $form_state, $form_id) {
  print $form_id; // Узнаем ID нашей формы для темизации

    switch($form_id) {
    case 'views_exposed_form':
    drupal_set_message("<pre>".print_r($form,1)."</pre>");
    $form['field_obshaya']['#prefix'] = '<div class="myclass">'; // Оборачиваем наш элемент в div
    $form['field_obshaya']['#suffix'] = '</div>';    

    $form['#field_info']['field_obshaya']['allowed_values'] = array(1=>'First element', 2=>'Second element', 3=>'Third element'); // Определяем набор выпадающего списка

  }

Аватар пользователя beerman beerman 26 февраля 2009 в 13:52

<?php
$form['field_obshaya']['#type'] = 'select';
$form['field_obshaya']['#options'] = array(
1 => 'First',
2 => 'Second',
3 => 'Third',
); // Определяем набор выпадающего списка
?>

должно работать

Аватар пользователя digital_sword digital_sword 26 февраля 2009 в 15:56

Спасибо, в таком виде получается, только если писать field_obshaya_value.
Также, если вставлять строчку из первого кода print $form_id;, выскакивает ошибка аякса, а без него представление редактироваться не может. Но эта строка здесь и не нужна.

У меня field_obshaya_value - было числовым полем. А если вставить ваш последний код, то поля, например, с 3кой не найдутся. Только с нулями. Видимо, 3 => 'Third', он ищет строку 3. А как изменить, чтобы число "3" искал?
Или он и ищет число, только ему обязательно min и max надо дать?