Drupal → Таксономия или текстовое поле?

01.08.2011

При разработке каждого нового сайта встаёт один и тот же вопрос — что использовать в качестве свойств материалов, таксономию или текстовое поле? Однозначного ответа увы нет. Таксономия в друпале с бородатых времён и отказаться от её использования не так просто. Рассмотрим основные плюсы обоих подходов.

Преимущества таксономии

  • Множество модулей (создание меню, ограничение доступа, экспорт/импорт).
  • Возможность фильтровать материалы без дополнительных модулей (taxonomy/term/[tid]).
  • Возможность создавать иерархию из терминов и делать выборки вида "термин + все дочерние термины".
  • Виджет автодополнения, возможность создать зависимые списки на основе иерархии (модуль Hierarchical Select).
  • Достаточно просто создать навигацию (модуль Taxonomy Menu или Views).
  • Возможность расширять термины полями.
  • Возможность сделать раскрытый фильтр в виде выпадающего списка.
  • Интеграция с Pathauto (возможность каждому термину дать адрес и делать красивые иерархические ЧПУ).
  • Возможность сменить название термина, при этом изменения коснутся всех материалов.
  • Возможность дать определённой роли права на редактирования терминов.

Преимущества текстового поля

  • Простота создания.
  • При большом количестве данных не так жрёт системные ресурсы, как таксономия.
  • В Views можно делать фильтры по части значения поля (LIKE %часть%).
  • Неограниченная длина значения поля (в таксономии максимум 255 символов).

Оставляйте комменты, если я что-то забыл.

Похожие записи

Комментарии

Помню в одном из подкастов Луллаботы обсуждали этот вопрос. Сошлись на том, что поля нужно использовать если данные являются внутренним свойством, таксономия - если это внешнее описание.
Например, у нас есть рецепты. Состав рецепта (молоко, яйца, масло и пр) это внутреннее свойство - значит поля. Классификация рецептов - первое, второе, десерт - это внешнее описание, следовательно таксономия.

Петров Николай
01.08.2011, 15:25

Сошлись на том, что поля нужно использовать если данные являются внутренним свойством, таксономия - если это внешнее описание.

любопытно

Множество модулей (создание меню, ограничение доступа, экспорт/импорт).

не совсем понял что значит «огнаничение доступа», но для полей есть Field Permissions

эти все модули под 6-ку. Если с 7-кой работать, то получается - поля основной выбор.

поля далеко не основной выбор ;)

valbudkin
03.08.2011, 12:40

Из одного словаря таксономии можно сделать два поля в контент-тайпе. Но поле может использоваться только один раз.

Например объём оперативной памяти и максимальный объём озу тут — http://www.ktc-ua.com/catalog/notebook/all

А как вообще получить id нод с конкретным значением определенного поля кроме как собственный запрос к БД? Т.е. через API Drupal v6.

grafdegan
19.04.2012, 21:26

Возможность создавать иерархию из терминов и делать выборки вида "термин + все дочерние термины".

не могли бы вы подсказать, как это сделать?
интересует именно:
1. "термин + все дочерние термины".
2. "таксономия + все дочерние термины(подтермины)".

grafdegan
20.04.2012, 09:11

xandeadx
а есть варианты вывода нод на странице главного термина из подтерминов таксономии без использования модуль viws ?

Вроде простой вопрос, но не могу сдвинуться с места

Дано:
Несколько авторов
Единый словарь таксономии: музыка, кино, спорт и т.д.

Задача такая: 1. на странице автора (либо ноде "Об авторе") показывать только ТЕРМИНЫ ТАКСОНОМИИ, в которых имеются статьи созданные конкретным автором

2. Кликая на термин таксономии на странице автора (или ноде автора "Об авторе") получить список материалов созданных только им

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

Есть идеи?
Спасибо

Ольга
23.09.2016, 12:59

Решено так:
Необходимы модули viewfield, Views Selective Exposed Filters и Better expose selective (чтобы красиво все оформить)

В материала об авторе добавляем поле-представление из статей авторов
В представлении настраиваем контекстные фильтры по автору материала
В поле viewfield аргумент, естественно id автора

Делее в фильтация добавляем фильтр Selective по термину таксономии
В результате получаем ноду об авторе с перечнем всех его статей сгруппированных по терминам таксономии

Фильтр Views Selective Exposed Filters не показывает термины, к которым не привязаны ноды конкретного автора

Добавить комментарий