form_alter

Divan Tapir Пнд, 14/09/2015 - 10:44

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

Здравствуйте. Вопрос собственно в следующем: есть 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',?>
Тип материала: 
Модули и темы: 
Ключевые слова: 
Версия Drupal: 
0 Спасибо

zazen Втр, 30/06/2015 - 10:07

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

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

Тип материала: 
Модули и темы: 
Ключевые слова: 
Версия Drupal: 
0 Спасибо

Владислав888 Пт, 04/04/2014 - 15:16

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

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

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

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

Тип материала: 
Версия Drupal: 
0 Спасибо

zz9mzal Пнд, 09/07/2012 - 03:47

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

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

Версия Drupal: 
0 Спасибо

vector Чт, 21/06/2012 - 11:02

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

Разбил форму регистрации и профиль пользователя на шаги.
Не загружается аватара, а у файловых полей не работает аякс (но файл загружается при сохранении формы)
Возможно, проблема заключается в нестандартном способе разбиения формы на шаги.
Нужно было сделать так, чтобы набор полей и разнесение их по шагам можно было делать в админке.
Первое - стандартная возможность друпала (профиль пользователя). Второе - использую модуль 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;

Тип материала: 
Ключевые слова: 
Версия Drupal: 
0 Спасибо

Айдар Пнд, 09/04/2012 - 15:29

Новое поле в комментарии 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(?>
Тип материала: 
Ключевые слова: 
Версия Drupal: 
0 Спасибо

byte255 Ср, 25/01/2012 - 11:42

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

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

<?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;
}
?>

Тип материала: 
Ключевые слова: 
Версия Drupal: 
0 Спасибо

bob Ср, 14/12/2011 - 12:36

Вопрос по form_alter

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

Ключевые слова: 
Версия Drupal: 
0 Спасибо

SYr Втр, 10/05/2011 - 08:53

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

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

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

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

Тип материала: 
Ключевые слова: 
Версия Drupal: 
0 Спасибо

lifecoder Ср, 28/07/2010 - 07:33

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

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

Код подмены:

0 Спасибо

vrazbros Сб, 29/05/2010 - 20:12

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

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

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

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

Ключевые слова: 
Версия Drupal: 
0 Спасибо

iHappy Ср, 17/02/2010 - 21:01

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

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

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

Ключевые слова: 
Версия Drupal: 
0 Спасибо

orangeudav Втр, 24/11/2009 - 15:21

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

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

Использую 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 в которой и можно корежить форму, но у меня она ни разу не вызвалась хоть сто раз ноды пересохрани.

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

Ключевые слова: 
Версия Drupal: 
0 Спасибо

ingumsky@drupal.org Пт, 30/01/2009 - 13:05

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

Добрый день!

Сейчас решаю вопросы, связанные с использованием _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

Версия Drupal: 
0 Спасибо

AndreyAney Пт, 14/11/2008 - 12:43

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

Добрый день!

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

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', но решить никак не получается... Где копать? :)

Ключевые слова: 
Версия Drupal: 
0 Спасибо

Санитар Втр, 09/09/2008 - 09:16

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

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

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

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

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

Ключевые слова: 
Версия Drupal: 
0 Спасибо

wanders.32 Пт, 20/06/2008 - 09:53

modules weight и form_alter

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

Ключевые слова: 
Версия Drupal: 
0 Спасибо

player Чт, 05/06/2008 - 07:56

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

Есть пример у кого нибудь? Интересен сам механизм. Залез в 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
);
}

Модули и темы: 
Ключевые слова: 
Версия Drupal: 
0 Спасибо

vvchik Пт, 23/05/2008 - 22:04

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

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

Версия Drupal: 
0 Спасибо

Страницы