form_alter

Возможность фильтрации по одному полю из двух в exposed forms

Аватар пользователя Divan Tapir

Здравствуйте. Вопрос собственно в следующем: есть 2 текстовых поля для Цены(от и до) в форме фильтрации для views. При отсутствии максимальной цены в качестве значения берется нуль. Как сделать, чтобы при отсутствии значения в этом поле, можно было поставить какое-нибудь очень большое число, но при это чтобы оно потом не отображалось в самом фильтре? Можно ли это сделать в template.php при помощи хука mytheme_form_views_exposed_form_alter?
При помощи гугла нашел следующее: https://www.drupal.org/node/675424

Пытался сделать что-то типа:

<?php
      $field_price_value_from 
= array (
        
'#type' => 'textfield',
        
'#required' => false,
        
'#default_value' => '0',
      ); 
      
$field_price_value_to = array (
        
'#type' => 'textfield',?>
0 Спасибо

[РЕШЕНО]form_alter для ctools_jump_menu

Аватар пользователя zazen

Добрый день.
Вывожу в тему jump_menu:

0 Спасибо

[РЕШЕНО] Дерзкая друпаловская AJAX кнопка "Add More" в форме ноды, которая не хочет сабмитить значения остальных полей формы.

Аватар пользователя Владислав888

Обед задержан на 3 часа, выпита сверхнорма чая...
Всё из-за дерзких кнопок "Добавить ещё", упорно не желающих передавать в $form_state['values'] значения всех остальных полей формы, кроме своих собственных.
Гениальные Form API планы рушатся, энтузиазм падает в сторону CSS и JQuery.
Без особой надежды пишу эти строки вам, закалённые Друпалурги, имеющие лишние килобайты внимания на добрый совет...

Ну а теперь без лирики и по существу.
Хотелось бы доброго совета.

Рассказ долгий, но подробный. Тому кто с динамическим API форм не знаком - в копилку.

0 Спасибо

Устаеновка параметров комментариев, настройки публикации, etc

Аватар пользователя zz9mzal

Задача: программно создаю тип материала и хочу, чтобы автоматически при установки модуля (и создания нового типа материала) соответсвующие пункты в форме отмечались по умолчанию.
Делал в лоб через form_alter - да, этот вариант работал.
Однако, вроде как есть вариант указывать соответсвующие настройки ноды в install файле.
Методом тыка обнаружил следующее: variable_set('comment_module_name', $int_var); где $int_var = 0 - отключает комментарии, 1 - толкьо чтение, 2 - чтение и запись.

0 Спасибо

Не работают поля типа файл в мультистеп форме

Аватар пользователя vector

Разбил форму регистрации и профиль пользователя на шаги.
Не загружается аватара, а у файловых полей не работает аякс (но файл загружается при сохранении формы)
Возможно, проблема заключается в нестандартном способе разбиения формы на шаги.
Нужно было сделать так, чтобы набор полей и разнесение их по шагам можно было делать в админке.
Первое - стандартная возможность друпала (профиль пользователя). Второе - использую модуль fieldgroup
Создание формы:
1. В hook_menu для адреса user/register прописал свой 'page callback'
2. В page callback просто return drupal_get_form('my_custom_form');
3. my_custom_form() :
- $register_form = drupal_get_form('user_register_form');
- потом копирую поля в свою форму: $form[$field_name] = $register_form[$field_name];
- return $form;

0 Спасибо

Новое поле в комментарии Drupal 6 [Подскажите ошибку в коде]

Аватар пользователя Айдар

Други, подскажите, где косяк? Код взят отсюда. Позволяет добавить поле к форме коммента и выводить значение. Попробовал подстроить под себя, кому не трудно, гляньте, плиз:

содержимое .install файла:

<?php
/* this module sets up any tables we need for the data we will be storing
   it may be necessary to alter some of the queries to your needs. */
function commf_schema() {
  
$schema['commf'] = array(
    
'description' => t('...??'),
    
'fields' => array(
      
'id' => array(
        
'type' => 'serial'
        
// zerofill auto_increment
      
),
      
'xid' => array(
        
'type' => 'int',
        
'unsigned' => TRUE
        
// default NULL
        //  zerofill
      
),
      
'type' => array(?>
0 Спасибо

Как прикрепить список "формат ввода" к textarea (drupal 7) ?

Аватар пользователя byte255

Здравствуйте. Создаю в админке форму:

<?php
function pp_module_name_menu() {
    
  
$items['admin/newpage'] = array(
    
'title' => 'Заявки на участие',
    
'page callback' => 'drupal_get_form',
    
'page arguments' => array('p_approved_from'),
    
'access callback' => TRUE,
    
'type' => MENU_CALLBACK
  
);/**/

  return $items;
}

function p_approved_from($form$state) {
    
$form["hello_text"] = array( 
        
"#title"=>"Вступительный текст на вкладке 'Заявки на участие'",
        
"#description" =>"",
        
"#type" => "textarea",
        
"#value" => variable_get("pp_form_hello_text""Для участия оставьте заявку... бла бла бла "),
    );
    
$form["#submit"][]= 'pp_module_name__form_submit';
    return 
$form;
}
?>

0 Спасибо

Вопрос по form_alter

Аватар пользователя bob

Мне нужно изменить форму с $form_id вида uc_product_add_to_cart_form_2360. Мало того через таксономию выводится несколько подобных форм, естественно у каждой в конце не 2360, а свой идентификатор. Не могу сообразить как это в hook_form_alter идентифицировать.

0 Спасибо

Как изменить форму комментирования?

Аватар пользователя SYr

Прошу снова помощи!

Задача тривиальная вроде, но охото сделать правильно! Плююсь чувствую что пахнет оффтопиком! Но хоть пните в нужный угол, плз!

В комментариях заполнить и скрыть сабж, незарегенному Юзеру открыть поле имя
Нашел comment_subject модуль, чувствую что рядом. Там одна функция всего и на 50% она – а сообразить не могу!

0 Спасибо

Как программно снять галку "Show summary in full view"?

Аватар пользователя lifecoder

Добрый день.
Задача - галка "Show summary in full view" в формах добавления нод.
Пошел через hook_form_alter в модуле - форма ловится, значение чекбокса меняется, вывожу форму - оно реально изменилось, но.. на отрисованной форме флаг стоит! Нрешил на то, что его переставляет некий хитрый JavaScript, отключил - результат тот же.

Код подмены:

0 Спасибо

как удалить поле на форме ?

Аватар пользователя vrazbros

На сайте есть тип контента book (сделал с помошью cck)

На форме добавления "book" хочу убрать поле, которое в базе называется как "field_place_value", а на форме "Место где будет отпущена книга"

но когда я распечатываю всю форму и ищу поле place:

0 Спасибо

добавить пункт меню в Secondary links[API.Drupal]

Аватар пользователя iHappy

Всем доброго времени суток господа.
Не могу понять как можно добавить пункт меню в Secondary links в модуле.
Если в Обычное меню можно добавить пункт меню легко и просто. То в Secondary links я не могу найти даже намека((

Подскажите как это реализуется?

0 Спасибо

Правильно обрезать форму ноды в пользовательском профиле

Аватар пользователя orangeudav

Добрый день. Вопрос наверняка старый, как говно мамонта, но хочу решить его ручками.

Использую CCK+Content Profile. Делаю дополнительный страницы в профиле пользователя. Я считаю что пользователю совершенно не нужно показывать пункты Revision information, Authoring information и Publishing options ни на одной странице внутри его профиля. Как их убрать?

0) CSS хаки не предлагать, это грязный способ.

1) Можно перехватывать _form_alter и делать

<?php
unset($form['revision_information']);
unset(
$form['options']);
unset(
$form['author']);
?>

но тогда форма не проходит валидацию.

2) Далее появилась мысль запомнить где-нибудь куски $form['revision_information'], $form['options'] и $form['author'] и подставлять их в момент обработки ответа от формы, но была отброшена как бредовая.

3) Другой вариант - обработчик самостоятельно придумывает отброшенные куски формы. Там-то и придумывать не надо, только дату таймстэмпа и пользователя от которого пришла форма. API говорит нам что должна вызываться функция моймодуль_validate в которой и можно корежить форму, но у меня она ни разу не вызвалась хоть сто раз ноды пересохрани.

Какие еще хуки можно повесить чтобы перехватить пришедшую форму?
Я вообще в правильную сторону думаю?

0 Спасибо

Темизация полей, переданных через hook_form_alter

Аватар пользователя ingumsky@drupal.org

Добрый день!

Сейчас решаю вопросы, связанные с использованием _form_alter, — вставка нужных полей в существующую форму, их последующая валидация и сабмит. Вроде бы всё примерно понятно кроме одного момента — правильной темизации этих полей. Предположим, я хочу, чтобы мои три строки одинаковых полей были вставлены в форму на странице типа story и темизированы через стандартный theme('table', $header, $rows), а не в один столбец, как это происходит по умолчанию. Приведу пример того, как это вижу я, поправьте меня, пожалуйста, если я ошибаюсь.
<?php
function players_form_alter(&$form, &$form_state, $form_id) {
if ($form_id == 'story_node_form') {
$form['#submit'] += array('players_nameform_submit' => array(&$form, &$form_state, $form_id)); // players_nameform_submit будет заниматься вставкой в отдельную таблицу БД значений из моего куска формы
$form['#validate'] += array('players_nameform_validate' => array()); // players_nameform_validate проверит правильность введённых значения из моего куска формы
$form['#theme'] += array('players_nameform' => array()); // theme_players_nameform темизирует мой кусок формы нужным образом.
$form['#size'] = 3;
for ($i = 0; $i < $form['#size']; $i++) {
// Рисуем строки полей
}
}
}
?>
Меня в первую очередь интересует:
1. Правильно ли делать это через апдейт параметров формы #submit, #validate и #theme?
2. Не повредит ли это сабмиту, проверке и темизации остальной формы?
3. Правильно ли для шестого друпала указаны параметры для players_nameform_submit

0 Спасибо

Модернизация формы профайла

Аватар пользователя AndreyAney

Добрый день!

Подскажите пожалуйста, почему у меня не возвращаются в форму данные после сохранения?
Создал модуль с хуком:

function hook_alter_form_alter (&$form, $form_state, $form_id)  {
        switch ($form_id) {
                case 'user_profile_form':
                        echo $form['account']['_account']['#value']['aboutme']."<br/>";
                       
                        echo "<pre>";
                        print_r ($form_state);
                        echo "</pre>";
                       
                        $form['account']['aboutme'] = array (
                            '#type' => 'textarea',
                            '#title' => t('Информация о себе'),
                            '#default_value' =>  variable_get($form['aboutme']['#value'], ''),
                            '#cols' => 60,
                            '#rows' => 5,
                        );
                       
                        break
        }
}

Поле "Информация о себе" отображается, в массив $form данные попадают, в базе я эти данные вижу, но в самой форме они не отображаются... понимаю что вся загвоздка наверное в строке '#default_value', но решить никак не получается... Где копать? :)

0 Спасибо

Форма быстрого добавления ноды (запись в блоге)

Аватар пользователя Санитар

Задача: создать страницу с "быстрой" формой добавления новой ноды. На станице -- никакой темизации (эта штука потом будет выводиться в iframe на сайте), только форма (причем, поля -- отрендереные, с ActiveSelect'ами). Плюс, нужно чтобы это была по возможности максимально стандартная форма добавления, прохоящая проверки (в частности, прогоняемая через спам-фильтр) и все такое. В случае ошибок -- показываем их на той же странице или делаем редирект на "полную" форму добавления ноды (как возжелаем).

Свой модуль. Далее испробовал три пути:

1. Рисуем свою страницу, Альтерить стандартную форму добавления, с тем, чтобы при вызове drupal_get_form("blog_node_form",...) оно выдавало кастомизированную форму. Это практически идеальное было бы решение, если бы оно при этом не альтерило бы и главную форму добавления. Как-то надо сказать нашему обработчику, что "сейчас форма пришла не с твоей страницы, сиди молча, ничего не делай) -- метода сделать этого не нашел, увы (извращения, вроде держать в сессии, а переменных, анализироваьт путь, etc. не считаются -- костыли и криво, в тесно увязанной схеме Drupal вылезет не тут, так в другом месте).

2. Рисуем полностью свою форму, со всеми обработчиками, etc. Минус -- некошерно оно, дублировать имеющийся функционал, да и опять же, рискуем пересечься с чем-нить еще нодоориентированным.

0 Спасибо

modules weight и form_alter

Аватар пользователя wanders.32

была такая задача - убрать ненужные табы при создании контента - аттачменты, настройки меню, прочее. конечному пользователю оно не надо)

0 Спасибо

_form_alter загрузка файла

Аватар пользователя player

Есть пример у кого нибудь? Интересен сам механизм. Залез в upload.module и мало что понял.
вот форма
<?php
function sim_form_alter(&$form, $form_state, $form_id) {
if ($form_id == 'page_node_form') {
$form['simg'] = array(
'#type' => 'file',
'#access' => user_access('upload files'),
'#title' => t('Small image attachments'),
'#description' => t('Attach the image'),
'#weight' => 0
);
}

0 Спасибо

hook_form_alter + hook_nodeapi помогите разобраться с аплоадом файла

Аватар пользователя vvchik

Так получилось что модулем upload пользоваться не получается, во первых он слишком навернутый, а у меня не очень большой опыт в программировании на php, во вторых мне надо чтобы файл прикреплялся в момент сабминта, а не отделным сабминтом как в стандартном модуле в третьих не надо ничего писать в базу так как файл будет прикрепляться только один и будет соответствовать номеру ноды.
в общем решаем это так (тут только кусок кода)
<?php
function myfilesupdate_form_alter(&$form, $form_state, $form_id) {
// Проверки на то, что это создание ноды здесь есть, просто не засоряю код

0 Спасибо