[решено] Отображение на странице taxonomy term вложенных терминов

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

Аватар пользователя DenisVS DenisVS 23 декабря 2011 в 15:18

Сделал таксономию по типу:

Овощи
-Картошка
-Томат
-Морковь
Фрукты
-Яблоко
-Груша
-Абрикос

Включил вьюху Taxonomy term (A view to emulate Drupal core's handling of taxonomy/term).
Хочу, чтобы на странице "Овощи" были овощи.
Как?

Комментарии

Аватар пользователя DenisVS DenisVS 23 декабря 2011 в 17:53

Переиначим.

Овощи
-корнеплоды
--картошка
--морковка

Вот ссылку на корнеплоды не получается сделать. И всё, что в корнеплодах, не показывается, т.е. тизеров нет, т.к. это подкатегория. Как же добраться до них?
Во вьюхе по-умолчанию стоит тип отображаемого Content.
Ставлю Fields.
Добавляю поле Content: Body, ставлю трим на 600, т.е. делаю тизеры, как и было.
Добавляю поле Content: All taxonomy terms.
Получается просто ссылка на этот же термин, т.е. корневой.
Фантазия дальше не помогает.

Аватар пользователя DenisVS DenisVS 27 декабря 2011 в 22:30

Покажите дальше дорогу.

Транслирую на страницу термина Fields Content: All taxonomy term

Фильтр такой:
Content: Has taxonomy term ID (with depth)
Depth 10 (максимальная)
Дальше настройки ни на что не влияют.

Имеем: родительский термин показывает вложенные плюс себя самого.
Вложенный термин показывает только себя.

Надо: родительский термин показывает только вложенные, а вложенные не должны иметь ничего.

Аватар пользователя Айдар Айдар 28 декабря 2011 в 1:30

Тьфу, звиняюсь, соврал Вам!

Добавляем контекстный фильтр "Родительский термин", в настройках: Обеспечить значение по умолчанию → Тип - term ID from url → Load default filter from term page → Specify validation criteria → Термин таксономии.

Разумеется, отображение блока.

Аватар пользователя DenisVS DenisVS 2 января 2012 в 13:58

Айдар

---поправил

Никак не мог найти "(term) Taxonomy term: Parent term".

Оказывается, чтобы появились дополнительные аргументы, надо врубить Relationships
Content: Taxonomy terms on node

Спасибо!

Аватар пользователя DenisVS DenisVS 9 января 2012 в 19:49

Нарисовалась проблема — появились повторы вложенных терминов таксономии согласно количеству материалов с ними:

href="http://www.drupal.ru/node/38090#comment-431318

Неужели нет готового решения элементарной задачи?

Аватар пользователя Айдар Айдар 9 января 2012 в 20:03

"DenisVS" wrote:
появились повторы вложенных терминов таксономии согласно количеству материалов с ними

Не подтверждаю!

Аватар пользователя DenisVS DenisVS 9 января 2012 в 20:15

Айдар
Смотрите, как я делал

Создать Views
"Разделы и подразделы"

Дисплей "Страница с подтерминами" (Page)
Format
Format: Unformatted list

Show: Content
Teaser
+Display links

Advanced

Contextual filters
***
Content: Has taxonomy term ID (with depth)
+Allow multiple values

When the filter value is NOT in the URL
Show "Page not found"
+Specify validation criteria
Validator
taxonomy term
Filter value type
Term ID
Action to take if filter value does not validate
Show "Page not found"
***
Content: Has taxonomy term ID depth modifier
***

Дисплей "Список подразделов" (Block)
Format: Unformatted list | Settings
Show: Fields | Settings
Fields
***
Content: All taxonomy terms (Подразделы)
Label
Подразделы
+Link this field to its term page
Unordered list
***
Advanced
Contextual filters
***
(term) Taxonomy term: Parent term
Relationship
term
When the filter value is NOT available
Provide default value
Taxonomy term ID from URL
+Load default filter from term page
+Display record count with link
+Specify validation criteria
Validator
Taxonomy term
+Категории для материалов (например, название словаря)
Filter value type
Term ID
***
Relationships
***
Content: Taxonomy terms on node (включить перед Taxonomy term: Parent term)

***

Administration » Structure » Blocks
Поместить блок
View: Разделы и подразделы: Список подразделов
в регион Content

Аватар пользователя DenisVS DenisVS 10 января 2012 в 0:35

"Айдар" wrote:
контекстный фильтр "Родительский термин"

"DenisVS" wrote:
(term) Taxonomy term: Parent term

Собственно, то же самое.
Смотрите, у меня во вьюшке дисплеи:

1."Страница с подтерминами", в котором показывается "Content Teaser"
При этом фильтры:
Content: Has taxonomy term ID (with depth)
Content: Has taxonomy term ID depth modifier
Это страница для блогоподобной ленты материалов в категории.

2. Блок "Список подразделов"
При этом фильтр:
(term) Taxonomy term: Parent term
Relationships:
Content: Taxonomy terms on node
Это как раз для отображения списка подтерминов таксономии.

На сколько я понял, второй дисплей у меня как ваш пример.

Аватар пользователя DenisVS DenisVS 24 января 2012 в 11:20

Нашёл вьюху, которая меня устроила:

$view = new view;
$view->name = 'child_terms';
$view->description = '';
$view->tag = 'default';
$view->base_table = 'taxonomy_term_data';
$view->human_name = 'Child Terms';
$view->core = 7;
$view->api_version = '3.0-alpha1';
$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'] = '%1 Sub-Categories';
$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']['query_comment'] = FALSE;
$handler->display->display_options['exposed_form']['type'] = 'basic';
$handler->display->display_options['pager']['type'] = 'none';
$handler->display->display_options['pager']['options']['offset'] = '0';
$handler->display->display_options['style_plugin'] = 'list';
$handler->display->display_options['style_options']['class'] = 'sub-cat';
$handler->display->display_options['row_plugin'] = 'fields';
/* Relationship: Taxonomy term: Parent term */
$handler->display->display_options['relationships']['parent']['id'] = 'parent';
$handler->display->display_options['relationships']['parent']['table'] = 'taxonomy_term_hierarchy';
$handler->display->display_options['relationships']['parent']['field'] = 'parent';
$handler->display->display_options['relationships']['parent']['required'] = 0;
/* Field: Taxonomy term: Name */
$handler->display->display_options['fields']['name_1']['id'] = 'name_1';
$handler->display->display_options['fields']['name_1']['table'] = 'taxonomy_term_data';
$handler->display->display_options['fields']['name_1']['field'] = 'name';
$handler->display->display_options['fields']['name_1']['label'] = '';
$handler->display->display_options['fields']['name_1']['alter']['alter_text'] = 0;
$handler->display->display_options['fields']['name_1']['alter']['make_link'] = 0;
$handler->display->display_options['fields']['name_1']['alter']['absolute'] = 0;
$handler->display->display_options['fields']['name_1']['alter']['external'] = 0;
$handler->display->display_options['fields']['name_1']['alter']['replace_spaces'] = 0;
$handler->display->display_options['fields']['name_1']['alter']['nl2br'] = 0;
$handler->display->display_options['fields']['name_1']['alter']['word_boundary'] = 1;
$handler->display->display_options['fields']['name_1']['alter']['ellipsis'] = 1;
$handler->display->display_options['fields']['name_1']['alter']['strip_tags'] = 0;
$handler->display->display_options['fields']['name_1']['alter']['trim'] = 0;
$handler->display->display_options['fields']['name_1']['alter']['html'] = 0;
$handler->display->display_options['fields']['name_1']['element_label_colon'] = FALSE;
$handler->display->display_options['fields']['name_1']['element_default_classes'] = 1;
$handler->display->display_options['fields']['name_1']['hide_empty'] = 1;
$handler->display->display_options['fields']['name_1']['empty_zero'] = 1;
$handler->display->display_options['fields']['name_1']['link_to_taxonomy'] = 1;
/* Sort criterion: Taxonomy term: Name */
$handler->display->display_options['sorts']['name']['id'] = 'name';
$handler->display->display_options['sorts']['name']['table'] = 'taxonomy_term_data';
$handler->display->display_options['sorts']['name']['field'] = 'name';
$handler->display->display_options['sorts']['name']['order'] = 'DESC';
/* Contextual filter: Taxonomy term: Term ID */
$handler->display->display_options['arguments']['tid']['id'] = 'tid';
$handler->display->display_options['arguments']['tid']['table'] = 'taxonomy_term_data';
$handler->display->display_options['arguments']['tid']['field'] = 'tid';
$handler->display->display_options['arguments']['tid']['relationship'] = 'parent';
$handler->display->display_options['arguments']['tid']['default_action'] = 'default';
$handler->display->display_options['arguments']['tid']['exception']['title_enable'] = 1;
$handler->display->display_options['arguments']['tid']['exception']['title'] = '%1 Sub-Categories';
$handler->display->display_options['arguments']['tid']['default_argument_type'] = 'taxonomy_tid';
$handler->display->display_options['arguments']['tid']['default_argument_options']['term_page'] = 1;
$handler->display->display_options['arguments']['tid']['default_argument_options']['node'] = 0;
$handler->display->display_options['arguments']['tid']['default_argument_options']['limit'] = 0;
$handler->display->display_options['arguments']['tid']['default_argument_skip_url'] = 0;
$handler->display->display_options['arguments']['tid']['summary']['number_of_records'] = '0';
$handler->display->display_options['arguments']['tid']['summary']['format'] = 'default_summary';
$handler->display->display_options['arguments']['tid']['summary_options']['items_per_page'] = '25';
$handler->display->display_options['arguments']['tid']['specify_validation'] = 1;
$handler->display->display_options['arguments']['tid']['validate']['type'] = 'taxonomy_term';
$handler->display->display_options['arguments']['tid']['validate_options']['vocabularies'] = array(
  'product_categories' => 0,
  'categories' => 0,
  'tags' => 0,
  'plant_types' => 0,
  'health_categories' => 0,
  'faq_category' => 0,
  'gallery_collections' => 0,
  'newsletter' => 0,
  'sources' => 0,
);
$handler->display->display_options['arguments']['tid']['validate_options']['type'] = 'tids';
$handler->display->display_options['arguments']['tid']['validate_options']['transform'] = 0;
$handler->display->display_options['arguments']['tid']['break_phrase'] = 1;
$handler->display->display_options['arguments']['tid']['not'] = 0;

/* Display: Block */
$handler = $view->new_display('block', 'Block', 'block');
$handler->display->display_options['block_caching'] = '4';

/* Display: Block2 */
$handler = $view->new_display('block', 'Block2', 'block_1');
$translatables['child_terms'] = array(
  t('Master'),
  t('%1 Sub-Categories'),
  t('more'),
  t('Apply'),
  t('Reset'),
  t('Sort by'),
  t('Asc'),
  t('Desc'),
  t('Parent'),
  t('Block'),
  t('Block2'),
);

Делает то же, что и модуль, только, само собой, гибче значительно.