Вообще темизируется? И как форма или как представление? Материла в поиске что-то не нашел по 6ке.
- Как узнать имя каждой переменной-поля?
- Как можно добавить картинку рядом с определенным полем? (не бэкграундом, а просто картинку). И надпись рядом
- Как переделать поле в раскрывающийся список или чекбокс? (именно темизацией)
- Как сменить слово "применить" на "поиск"?
Комментарии
<?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("
"); // Получаем массим переменных нашей формы
}
}
?>
Опять меняем нашу ф-ю
<?php
function MYMODULE_form_alter(&$form, $form_state, $form_id) {
switch($form_id) {
case 'views_exposed_form':
$form['field_myfield']['#prefix'] = '
$form['field_myfield']['#suffix'] = '
';
$form['field_myfield']['#options'] = array(
1 => 'First',
2 => 'Second',
3 => 'Third',
); // Определяем набор выпадающего списка
}
}
?>
field_myfield заменить на свое название поля, которое можно посмотреть на странице управления полями типа материала.
По аналогии можно переопределять и чекбоксы, и другие элементы
еще шаблон есть views-exposed-form.tpl.php в нем правда только положение элементов можно изменить, кнопку там передвинуть и тд
спасибо, полезно
Споткнулся здесь. Создал модуль с именем MYMODULE, узнал id формы (views_exposed_formviews_exposed_form). Дальше вставляю данный код. Пишет, ошибка в строчке, которая начинается с drupal_set_message (' . Все form_id заменил на views_exposed_formviews_exposed_form . Что не так?
Нашел, меняется. А как там подобраться к отдельному полю? Или чекбоксу. Там же один <?php print $widget->widget; ?> отвечает сразу за все поля.
сорри, поторопился.
вот так правильно
<?php
drupal_set_message('
');
?>
Ага, так работает. Вывел сообщение на 77000 строк. Вставляю 3й код, пишет ошибка в строке
Вот здесь my_field это что? Я вставлял вместо этого field_obshaya_value. Или нужно field_obshaya, или даже filter-field_obshaya?
подправил код. попробуйте
Да, теперь без ошибок, только у вас правая скобка лишняя.
А название поля какое вставлять? Пробовал разные, которые написаны в сообщении, не идет.
field_obshaya, field_obshaya_value_op, field_obshaya_value. Исходное CCK поле называется field_obshaya.
Ничего не меняется. Итого вставлен код:
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'); // Определяем набор выпадающего списка
}
<?php
$form['field_obshaya']['#type'] = 'select';
$form['field_obshaya']['#options'] = array(
1 => 'First',
2 => 'Second',
3 => 'Third',
); // Определяем набор выпадающего списка
?>
должно работать
Спасибо, в таком виде получается, только если писать field_obshaya_value.
Также, если вставлять строчку из первого кода print $form_id;, выскакивает ошибка аякса, а без него представление редактироваться не может. Но эта строка здесь и не нужна.
У меня field_obshaya_value - было числовым полем. А если вставить ваш последний код, то поля, например, с 3кой не найдутся. Только с нулями. Видимо, 3 => 'Third', он ищет строку 3. А как изменить, чтобы число "3" искал?
Или он и ищет число, только ему обязательно min и max надо дать?
Нашли решение тоже встретил темизацию exposed фильтра, числовое поле - min до max ?
Вот тоже интересно. Если max не задать, то не найдет ничего. Что делать?