Связывание нод между собой

Главные вкладки

Аватар пользователя vadim s. sabinich vadim s. sabinich 27 сентября 2012 в 19:08

Продолжаю эпопею со своей проблемой Smile
Антон Сафин кое-что попытался мне объяснить. Но, видимо, в моей голове такие вещи на долго не задерживаются.
Поведаю, что у меня получилось и как и что я делаю.
Ниже я прикрепил схему.

Используемые материалы Drupal, Views, Entity References

Созданы два типа материалов: Концерт и Группа
в "концерт" добавлено поле field_bands с типом "Entity Reference" и выбором из списка.
Теперь, при создании ноды выбираем коллективы, участвующие в концерте (в идеале, бы, конечно, автоматизировать это. Чтобы с меньшим шевелением рук делать)

Во views создан блок следующего вида (не знаю, как его лучше сюда прилепить, поэтому сделал экспорт)
В принципе, получилось. НО, блок отображается даже у тех групп, которые не участвуют в концерте. Видимо, что-то с фильтрацией не так?

$view = new view();
$view->name = 'events_band';
$view->description = '';
$view->tag = 'default';
$view->base_table = 'node';
$view->human_name = 'events_band';
$view->core = 7;
$view->api_version = '3.0';
$view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */

/* Display: Master */
$handler = $view->new_display('default', 'Master', 'default');
$handler->display->display_options['title'] = 'events_band';
$handler->display->display_options['use_more_always'] = FALSE;
$handler->display->display_options['use_more_text'] = 'ещё';
$handler->display->display_options['access']['type'] = 'perm';
$handler->display->display_options['cache']['type'] = 'none';
$handler->display->display_options['query']['type'] = 'views_query';
$handler->display->display_options['query']['options']['distinct'] = TRUE;
$handler->display->display_options['exposed_form']['type'] = 'basic';
$handler->display->display_options['exposed_form']['options']['submit_button'] = 'Применить';
$handler->display->display_options['exposed_form']['options']['reset_button_label'] = 'Сбросить';
$handler->display->display_options['exposed_form']['options']['exposed_sorts_label'] = 'Сортировать по';
$handler->display->display_options['exposed_form']['options']['sort_asc_label'] = 'По возрастанию';
$handler->display->display_options['exposed_form']['options']['sort_desc_label'] = 'По убыванию';
$handler->display->display_options['pager']['type'] = 'full';
$handler->display->display_options['pager']['options']['items_per_page'] = '500';
$handler->display->display_options['pager']['options']['expose']['items_per_page_label'] = 'Элементов на страницу';
$handler->display->display_options['pager']['options']['expose']['items_per_page_options_all_label'] = '- Все -';
$handler->display->display_options['pager']['options']['expose']['offset_label'] = 'Пропустить';
$handler->display->display_options['pager']['options']['tags']['first'] = '« первая';
$handler->display->display_options['pager']['options']['tags']['previous'] = '‹ предыдущая';
$handler->display->display_options['pager']['options']['tags']['next'] = 'следующая ›';
$handler->display->display_options['pager']['options']['tags']['last'] = 'последняя »';
$handler->display->display_options['style_plugin'] = 'table';
/* Связь: Entity Reference: Referenced Entity */
$handler->display->display_options['relationships']['field_bands_target_id']['id'] = 'field_bands_target_id';
$handler->display->display_options['relationships']['field_bands_target_id']['table'] = 'field_data_field_bands';
$handler->display->display_options['relationships']['field_bands_target_id']['field'] = 'field_bands_target_id';
/* Поле: Содержимое: Дата */
$handler->display->display_options['fields']['field_date']['id'] = 'field_date';
$handler->display->display_options['fields']['field_date']['table'] = 'field_data_field_date';
$handler->display->display_options['fields']['field_date']['field'] = 'field_date';
$handler->display->display_options['fields']['field_date']['element_label_colon'] = FALSE;
$handler->display->display_options['fields']['field_date']['settings'] = array(
'format_type' => 'short',
'fromto' => 'value',
'multiple_number' => '',
'multiple_from' => '',
'multiple_to' => '',
);
/* Поле: Содержимое: Заголовок */
$handler->display->display_options['fields']['title']['id'] = 'title';
$handler->display->display_options['fields']['title']['table'] = 'node';
$handler->display->display_options['fields']['title']['field'] = 'title';
$handler->display->display_options['fields']['title']['alter']['word_boundary'] = FALSE;
$handler->display->display_options['fields']['title']['alter']['ellipsis'] = FALSE;
/* Критерий сортировки: Содержимое: Дата - start date (field_date) */
$handler->display->display_options['sorts']['field_date_value']['id'] = 'field_date_value';
$handler->display->display_options['sorts']['field_date_value']['table'] = 'field_data_field_date';
$handler->display->display_options['sorts']['field_date_value']['field'] = 'field_date_value';
$handler->display->display_options['sorts']['field_date_value']['order'] = 'DESC';
/* Контекстный фильтр: Содержимое: Nid */
$handler->display->display_options['arguments']['nid']['id'] = 'nid';
$handler->display->display_options['arguments']['nid']['table'] = 'node';
$handler->display->display_options['arguments']['nid']['field'] = 'nid';
$handler->display->display_options['arguments']['nid']['relationship'] = 'reverse_field_bands_node';
$handler->display->display_options['arguments']['nid']['exception']['title'] = 'Все';
$handler->display->display_options['arguments']['nid']['default_argument_type'] = 'fixed';
$handler->display->display_options['arguments']['nid']['summary']['number_of_records'] = '0';
$handler->display->display_options['arguments']['nid']['summary']['format'] = 'default_summary';
$handler->display->display_options['arguments']['nid']['summary_options']['items_per_page'] = '25';
/* Критерий фильтра: Содержимое: Опубликовано */
$handler->display->display_options['filters']['status']['id'] = 'status';
$handler->display->display_options['filters']['status']['table'] = 'node';
$handler->display->display_options['filters']['status']['field'] = 'status';
$handler->display->display_options['filters']['status']['value'] = 1;
$handler->display->display_options['filters']['status']['group'] = 1;
$handler->display->display_options['filters']['status']['expose']['operator'] = FALSE;
/* Критерий фильтра: Содержимое: Тип */
$handler->display->display_options['filters']['type']['id'] = 'type';
$handler->display->display_options['filters']['type']['table'] = 'node';
$handler->display->display_options['filters']['type']['field'] = 'type';
$handler->display->display_options['filters']['type']['value'] = array(
'afisha' => 'afisha',
);
/* Критерий фильтра: Содержимое: Nid */
$handler->display->display_options['filters']['nid']['id'] = 'nid';
$handler->display->display_options['filters']['nid']['table'] = 'node';
$handler->display->display_options['filters']['nid']['field'] = 'nid';
$handler->display->display_options['filters']['nid']['relationship'] = 'field_bands_target_id';
$handler->display->display_options['filters']['nid']['operator'] = 'not empty';

/* Display: Block */
$handler = $view->new_display('block', 'Block', 'block');
$handler->display->display_options['defaults']['hide_admin_links'] = FALSE;
$translatables['events_band'] = array(
t('Master'),
t('events_band'),
t('ещё'),
t('Применить'),
t('Сбросить'),
t('Сортировать по'),
t('По возрастанию'),
t('По убыванию'),
t('Элементов на страницу'),
t('- Все -'),
t('Пропустить'),
t('« первая'),
t('‹ предыдущая'),
t('следующая ›'),
t('последняя »'),
t('Содержимое entity referenced from field_bands'),
t('Дата'),
t('Заголовок'),
t('Все'),
t('Block'),
);

ВложениеРазмер
Иконка изображения rock.gif20.05 КБ

Комментарии

Аватар пользователя dylan dylan 27 сентября 2012 в 23:32

Простите, не читал про вашу эпопею... Но вот глупый вопрос, а нельзя было сделать группу термином таксономии?

Аватар пользователя vadim s. sabinich vadim s. sabinich 28 сентября 2012 в 9:44

Первое, что пришло мне на ум, как раз был вариант с таксономией. Но как-то он не удался. Это бы убрало лишние движения с нодами по связыванию их.