Здравствуйте! Помогите пожалуйста советом - как настроить view программно.
Я сделал модуль, в нем форма с кнопкой submit. После нажатия на нее переходим по redirect на другую страницу с передачей переменных:
function mod1_my_form_submit($form, &$form_state) {
variable_set('mod1_form_descr', $form_state['values']['descr']);
variable_set('mod1_form_categ', $form_state['values']['categ']);
}
В файле темизации .tpl пытаюсь настроить view:
способ1:
$display_id='default';
$view1 = views_get_view('images_block');
$view1->set_display($display_id);
$filter1 = $view1->get_item($display_id, 'filter', 'name_of_filter');
$filter1 = array(
'operator' => 'LIKE',
'value' => array('body'=>'%йй%',),
'group' => '0',
'exposed' => FALSE,
); //пытаюсь высветить все ноды, у которых описание description like 'йй'
$view1->add_item($display_id, 'filter', 'node_revisions', 'body', $filter1);
print $view1->preview('default');
В результате вываливаются все ноды (у которых в описании не содержится 'йй')
способ2:
$display_id='default';
$view1 = views_get_view('images_block');
$view1->set_display($display_id);
$view1->build();
$view1->build_info['query']="SELECT DISTINCT(node.nid) AS nid,
node.title AS node_title,
node.type AS node_type,
node_data_field_gallery_pics.field_gallery_pics_fid AS node_data_field_gallery_pics_field_gallery_pics_fid,
node_data_field_gallery_pics.field_gallery_pics_list AS node_data_field_gallery_pics_field_gallery_pics_list,
node_data_field_gallery_pics.field_gallery_pics_data AS node_data_field_gallery_pics_field_gallery_pics_data,
node_data_field_gallery_pics.delta AS node_data_field_gallery_pics_delta,
node.vid AS node_vid,
node_data_field_predpsd.field_predpsd_fid AS node_data_field_predpsd_field_predpsd_fid,
node_data_field_predpsd.field_predpsd_list AS node_data_field_predpsd_field_predpsd_list,
node_data_field_predpsd.field_predpsd_data AS node_data_field_predpsd_field_predpsd_data
FROM node node
LEFT JOIN content_field_gallery_pics node_data_field_gallery_pics ON node.vid = node_data_field_gallery_pics.vid
LEFT JOIN files files_node_data_field_gallery_pics ON node_data_field_gallery_pics.field_gallery_pics_fid = files_node_data_field_gallery_pics.fid
LEFT JOIN content_type_imagenotjpg node_data_field_predpsd ON node.vid = node_data_field_predpsd.vid
LEFT JOIN files files_node_data_field_predpsd ON node_data_field_predpsd.field_predpsd_fid = files_node_data_field_predpsd.fid
WHERE node.type in ('image', 'gallery', 'gallery2', 'imagenotjpg')";
$view1->execute();
в результате view не высвечивается вообще. Подскажите, что я делаю не так?
Комментарии
Чем вам не нравится просто добавить аргументк views? и вывести print views_embed_view('навзание', 'дисплей', 'ййй')
annya а если несколько аргументов как быть?
print views_embed_view('навзание', 'дисплей', арг1, арг2, ..., аргN);
а как друпал поймет какой аргумент какому полю соответствует?
например мне надо вывести ноды с определенной "датой занесения" и "описанием", а "дата создания" может быть любой.
на вьюв я добавлю аргументы "дата занесения", "дата создания" и "описание"
как тогда правильно вызывать -
print views_embed_view('навзание', 'дисплей', арг_дата_занесения, '', арг_дата_создания);
так правильно будет?
да, должно идти по-порядку
annya большое спасибо! попробую.
еще вопрос один возник - таким макаром работает:
print views_embed_view('images_block', 'default', $per_title);
но если заголовок например "пробный заголовок1", а аргумент ="проб" - то как выбрать эту ноду, у которой "проб" является вхождением в "пробный заголовок1"?
Насколько я знаю, аргументы настроены на полное совпадение, или при числовых, на больше меньше. Попробуйте exposed filters
при использовании exposed filters что-то скрипт модуля Carousel ругается (у меня вид вьюва нацеплен на него - чтобы как лента показывался)
а может быть попробовать тогда предварительно выбрать id нод, которые удовлетворяют моему условию по заголовку, эти гиды схлопнуть и передать одним аргументом?
Можна, только тогда у вас лишний запрос появится.
да, не очень красиво получается, ну да ладно, главное-работает, так что пока продолжу- времени мало - надо закруглять программу, а как время появится - оптимизирую и красоту наведу.
annya спасибо Вам громадное! Если будете в Ростове-н/Д - с меня пиво)
Пожалуйста