Всем большой Друпаловский привет!
Только начинаю изучать Друпал, возникает много проблем, может кто поможет с одной?
Имеется свой тип материалов "Документы", добавлены следующие поля:
a)Дата подписания;
b)Номер;
c)Поле принадлежащие одному из терминов определенного словаря (это не так важно).
Необходимо сделать форму поиска документов по определенному интервалу "Даты подписания" и "Номера"(опционально).
Решил делать через View.
1)В "страница"->"заголовок" ввел код отображения формы поиска
$form['poisk'] = array(
'#type' => 'fieldset',
'#title' => t('По дате'),
'#collapsible' => TRUE,
'#collapsed' => FALSE,
'#prefix' => '<div class="fieldset-find-doc-date">',
'#suffix' => '</div>',
);
$form['#redirect'] = FALSE;
$form['poisk']['S'] = array(
'#type' => 'date',
'#title' => t('с'),
'#default_value' => array('year' => 2008, 'month' => 1, 'day' => 1),
'#prefix' => '<div class="date-find-doc-s">',
'#suffix' => '</div>',
'#size' => 10,
'#required' => TRUE,
);
$form['poisk']['PO'] = array(
'#type' => 'date',
'#title' => t('по'),
'#prefix' => '<div class="date-find-doc-po">',
'#suffix' => '</div>',
'#size' => 10,
'#required' => TRUE,
);
......
тут идет дальше описание формы
$form['submit'] = array('#type' => 'submit', '#value' => t('Найти'),'#submit' => TRUE,);
return $form;
}
function poisk_document_form_submit($form, &$form_state){
$_SESSION['nomer_'] = $form_state['Nomer'];
$_SESSION['data_s'] = $form_state['S'];
$_SESSION['data_po'] = $form_state['PO'];
}
function page_poisk_document_form() {
$my_page = drupal_get_form('poisk_document_form');
$year_s=$_SESSION['data_s']['year'];
$month_s=$_SESSION['data_s']['month'];
$day_s=$_SESSION['data_s']['day'];
$year_po=$_SESSION['data_po']['year'];
$month_po=$_SESSION['data_po']['month'];
$day_po=$_SESSION['data_po']['day'];
return $my_page;
}
return page_poisk_document_form();
1)Выбрал поля, необходимые выводить.
2)Фильтр на вывод только нод, данного типа и два фильтра на значения поля даты,одно с параметром больше=, другое меньше=.
Как передать параметры из формы в значения фильтра?
Комментарии
А просто открытые фильтры попользовать? Зачем столько извратов?
Зачем изврат? Хм. Наверно потому, что плохо представляю как можно сделать по другому. Если кто подскажет,то буду премного благодарен. Нутром чувствую, что это через мягкое место,но "я не волшебник, я только учусь"
Имелись в виду exposed filters во вьюзах(после того, как с помощью интерфейса вьюза создаешь фильтры их еще можно превратить в exposed filters после чего они становятся доступными для конечного пользователя(что-то наподобие поисковой системы по полям, терминам таксономии...)
пробовал их, но...
ставлю фильтр на поле ноды типа "дата", устанавливаю "Больше или равно чем", и юзер видит название данного фильтра, режим сравнения "больше или равно чем" и поле ввода, строкой. можно ли как-то предоставить ему выбор из определенный значений (день,месяц,год), а не самому вводить дату?
theme Функции надо учить однако (темизация)
Ок, про темизацию "слышал", но еще не дошел до нее. Можно ли как-то без нее? А решить поставленную задачу моим способом? Т.е. из формы передать значения в фильтр?
Лучше дойдите до нее))). Зачем делать то что заведомо неправильно? Браться так сказать правой рукой за левое ухо.
Курс понятен, буду дальше грызть гранит Друпала.
А если возникнет такая необходимость передать данные из формы, обработать их и на основании результата обработки использовать необходимый аргумент фильтра, это тоже можно темизацией сделать?
ps: ну я частенько правой рукой левое ухо чешу, видимо плохая привычка)
Это можно делать с помощью hook_form_alter если Вам это о чем-то говорит)))