Здравствуйте!
Решил сделать карту сайта с помощью views, в поля впихнул Материал: тип (по которому должна идти группировка) и Материал: заголовок. Проблема в том, что тип материала отображается ровно столько раз, сколько существует материалов этого типа, собственно:
Подскажите пожалуйста решение, если оно существует.
UPD: Решено, нужно было пересоздать представление, т.к. оно было создано в старой версии views.
UPD2: Вопрос в догонку: можно ли как-то менять названия типов в представлении, по которым идёт группировка, с целью правильного склонения слов?
UPD3: Решил второй вопрос, смотрите последние комментарии.
Комментарии
А какие у вас настройки views?
стиль - группировать
Стиль: HTML список
Группировать по полю Материал: тип
Поля
Материал: тип
поставил флажок Исключить из вывода
Материал: заголовок
В фильтрах отметил нужные типы материалов
Как видите практически ничего не менял
Хм, я наверное не там смотрю, у меня такого нет, поглядите:
->
Если убрать группировку, то будет голый список материалов (тут я включил видимость поля Материал: тип):
Совсем не похоже на «КАК НАДО» -)
зачем её убирать?
Потомучто с группировкой это выглядит так как показано на первом скрине в шапке темы (см. «КАК ЕСТЬ»), а нужно «КАК НАДО». Тобишь группировка сама по себе не даёт нужного эффекта, чего-то нехватает.
значит что-то не то делаете, скриншот группировки по типу материала:
Мистика, по другому не скажешь.
Покажите пожалуйста своё представление, если не трудно.
Вот моё:
$view->name = 'sitemap';
$view->description = 'Карта сайта';
$view->tag = '';
$view->base_table = 'node';
$view->human_name = 'sitemap';
$view->core = 7;
$view->api_version = '3.0-alpha1';
$view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */
/* Display: По умолчанию */
$handler = $view->new_display('default', 'По умолчанию', 'default');
$handler->display->display_options['use_more_text'] = 'еще';
$handler->display->display_options['access']['type'] = 'none';
$handler->display->display_options['cache']['type'] = 'none';
$handler->display->display_options['query']['type'] = 'views_query';
$handler->display->display_options['exposed_form']['type'] = 'basic';
$handler->display->display_options['exposed_form']['options']['reset_button_label'] = 'Сбросить';
$handler->display->display_options['exposed_form']['options']['exposed_sorts_label'] = 'Сортировать по';
$handler->display->display_options['pager']['type'] = 'none';
$handler->display->display_options['pager']['options']['offset'] = '0';
$handler->display->display_options['style_plugin'] = 'default';
$handler->display->display_options['row_plugin'] = 'fields';
$handler->display->display_options['row_options']['hide_empty'] = 0;
/* Поле: Содержимое: Тип */
$handler->display->display_options['fields']['type']['id'] = 'type';
$handler->display->display_options['fields']['type']['table'] = 'node';
$handler->display->display_options['fields']['type']['field'] = 'type';
$handler->display->display_options['fields']['type']['label'] = '';
$handler->display->display_options['fields']['type']['alter']['alter_text'] = 0;
$handler->display->display_options['fields']['type']['alter']['make_link'] = 0;
$handler->display->display_options['fields']['type']['alter']['absolute'] = 0;
$handler->display->display_options['fields']['type']['alter']['external'] = 0;
$handler->display->display_options['fields']['type']['alter']['replace_spaces'] = 0;
$handler->display->display_options['fields']['type']['alter']['trim'] = 0;
$handler->display->display_options['fields']['type']['alter']['nl2br'] = 0;
$handler->display->display_options['fields']['type']['alter']['word_boundary'] = 1;
$handler->display->display_options['fields']['type']['alter']['ellipsis'] = 1;
$handler->display->display_options['fields']['type']['alter']['strip_tags'] = 0;
$handler->display->display_options['fields']['type']['alter']['html'] = 0;
$handler->display->display_options['fields']['type']['element_label_colon'] = 1;
$handler->display->display_options['fields']['type']['element_default_classes'] = 1;
$handler->display->display_options['fields']['type']['hide_empty'] = 0;
$handler->display->display_options['fields']['type']['empty_zero'] = 0;
$handler->display->display_options['fields']['type']['link_to_node'] = 1;
$handler->display->display_options['fields']['type']['machine_name'] = 0;
/* Поле: Содержимое: Заголовок */
$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']['label'] = '';
$handler->display->display_options['fields']['title']['alter']['alter_text'] = 0;
$handler->display->display_options['fields']['title']['alter']['make_link'] = 0;
$handler->display->display_options['fields']['title']['alter']['absolute'] = 0;
$handler->display->display_options['fields']['title']['alter']['external'] = 0;
$handler->display->display_options['fields']['title']['alter']['replace_spaces'] = 0;
$handler->display->display_options['fields']['title']['alter']['trim'] = 0;
$handler->display->display_options['fields']['title']['alter']['nl2br'] = 0;
$handler->display->display_options['fields']['title']['alter']['word_boundary'] = 1;
$handler->display->display_options['fields']['title']['alter']['ellipsis'] = 1;
$handler->display->display_options['fields']['title']['alter']['strip_tags'] = 0;
$handler->display->display_options['fields']['title']['alter']['html'] = 0;
$handler->display->display_options['fields']['title']['element_label_colon'] = 1;
$handler->display->display_options['fields']['title']['element_default_classes'] = 1;
$handler->display->display_options['fields']['title']['hide_empty'] = 0;
$handler->display->display_options['fields']['title']['empty_zero'] = 0;
$handler->display->display_options['fields']['title']['link_to_node'] = 1;
/* Filter criterion: Содержимое: Тип */
$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(
'article' => 'article',
'client' => 'client',
'contacts' => 'contacts',
'news' => 'news',
'project' => 'project',
'service' => 'service',
);
$translatables['sitemap'] = array(
t('По умолчанию'),
t('еще'),
t('Применить'),
t('Сбросить'),
t('Сортировать по'),
t('Asc'),
t('Desc'),
);
1. создать представление
2. установить группировку
3. profit
Понял в чём беда. Представление созданное в старой версии views чудит в новой, поэтому просто пересоздал, только и всего -) Спасибо за отклик.
И ещё один вопрос в догонку: можно ли как-то менять названия типов в представлении, по которым идёт группировка, с целью правильного склонения слов (Клиент -> Клиенты, Услуга -> Услуги). Можно конечно переименовать типы материалов, но костыль крайне некрасивый, есть ли нормальное решение?
Отвечаю на свой же вопрос и предлагаю следущее решение -)
Для смены названия выводимого содержимого в представлении, нам необходимо темизировать соответствующее поле. Для начала создаём представление, жмём на Тема: Информация , будут отображены все возможные шаблоны для представления, включая шаблоны выбранных для вывода полей. К примеру нам нужно поменять значение поля Содержимое: Тип, для этого в списке шаблонов находим Поле Содержимое: Тип (ID: type) и смотрим подходящее имя для файла шаблона, я выбрал views-view-field--sitemap--page-sitemap--type.tpl.php (наше представление называется sitemap, а машинное имя page_sitemap). Создаём в папке templates нашей темы views-view-field--sitemap--page-sitemap--type.tpl.php, и пишем него:
<?php if ($output=='Клиент') {
print 'Клиенты';
}
else if ($output=='Услуга') {
print 'Услуги';
}
else if ($output=='Проект') {
print 'Проекты';
}
else if ($output=='Новость') {
print 'Новости';
}
else {
print $output;
}
?>
Как видно значение поля содержится в переменной $output, поэтому мы используем условие для вывода нужного нам значения. Объяснять тут я думаю нечего, потому как любой кто обладает самыми начальными навыками программирования всё поймёт. В вашем случае подставляете свои значения.
P.S. Важный момент, не забудьте сохранить файл шаблона в UTF-8 (без BOM), иначе не будет работать.
Подскажите пожайлуста где можно почитать инструкцию для 6 друпала!