Drupal → Таксономия или текстовое поле?
При разработке каждого нового сайта встаёт один и тот же вопрос — что использовать в качестве свойств материалов, таксономию или текстовое поле? Однозначного ответа увы нет. Таксономия в друпале с бородатых времён и отказаться от её использования не так просто. Рассмотрим основные плюсы обоих подходов.
Преимущества таксономии
- Множество модулей (создание меню, ограничение доступа, экспорт/импорт).
- Возможность фильтровать материалы без дополнительных модулей (taxonomy/term/[tid]).
- Возможность создавать иерархию из терминов и делать выборки вида «термин + все дочерние термины».
- Виджет автодополнения, возможность создать зависимые списки на основе иерархии (модуль Hierarchical Select).
- Достаточно просто создать навигацию (модуль Taxonomy Menu или Views).
- Возможность расширять термины полями.
- Возможность сделать раскрытый фильтр в виде выпадающего списка.
- Интеграция с Pathauto (возможность каждому термину дать адрес и делать красивые иерархические ЧПУ).
- Возможность сменить название термина, при этом изменения коснутся всех материалов.
- Возможность дать определённой роли права на редактирования терминов.
Преимущества текстового поля
- Простота создания.
- При большом количестве данных не так жрёт системные ресурсы, как таксономия.
- В Views можно делать фильтры по части значения поля ( LIKE %часть% ).
- Неограниченная длина значения поля (в таксономии максимум 255 символов).
Оставляйте комменты, если я что-то забыл.
Похожие записи
- Как при установке модуля создать словарь с полем
- Модуль Taxonomy Term Reference Tree Widget — раскрывающийся древовидный виджет для полей Term reference
- Модуль Taxonomy container — виджет для Term reference с группировкой терминов
- Изменяем дефолтное значение поля Term reference на значение из последнего созданного материала
- Сравнение производительности различных способов вывода псевдо полей
Комментарии
Помню в одном из подкастов Луллаботы обсуждали этот вопрос. Сошлись на том, что поля нужно использовать если данные являются внутренним свойством, таксономия — если это внешнее описание.
Например, у нас есть рецепты. Состав рецепта (молоко, яйца, масло и пр) это внутреннее свойство — значит поля. Классификация рецептов — первое, второе, десерт — это внешнее описание, следовательно таксономия.
Петров Николай
Сошлись на том, что поля нужно использовать если данные являются внутренним свойством, таксономия — если это внешнее описание.
Множество модулей (создание меню, ограничение доступа, экспорт/импорт).
не совсем понял что значит «огнаничение доступа», но для полей есть Field Permissions
не совсем понял что значит «огнаничение доступа»
эти все модули под 6-ку. Если с 7-кой работать, то получается — поля основной выбор.
поля далеко не основной выбор 😉
Из одного словаря таксономии можно сделать два поля в контент-тайпе. Но поле может использоваться только один раз.
Например объём оперативной памяти и максимальный объём озу тут — http://www.ktc-ua.com/catalog/notebook/all
А как вообще получить id нод с конкретным значением определенного поля кроме как собственный запрос к БД? Т.е. через API Drupal v6.
Возможность создавать иерархию из терминов и делать выборки вида «термин + все дочерние термины».
не могли бы вы подсказать, как это сделать?
интересует именно:
1. «термин + все дочерние термины».
2. «таксономия + все дочерние термины(подтермины)».
xandeadx
а есть варианты вывода нод на странице главного термина из подтерминов таксономии без использования модуль viws ?
Вроде простой вопрос, но не могу сдвинуться с места
Дано:
Несколько авторов
Единый словарь таксономии: музыка, кино, спорт и т.д.
Задача такая: 1. на странице автора (либо ноде «Об авторе») показывать только ТЕРМИНЫ ТАКСОНОМИИ, в которых имеются статьи созданные конкретным автором
2. Кликая на термин таксономии на странице автора (или ноде автора «Об авторе») получить список материалов созданных только им
Первый вопрос получилось реализовать разместив вьюшку с контекстными фильтрами в ноде «Об авторе». Но, видимо, этот способ не годиться, так как вторая часть задания не реализуется, высыпаються все материалы имеющие данный термин и всех авторов
Есть идеи?
Спасибо
Решено так:
Необходимы модули viewfield, Views Selective Exposed Filters и Better expose selective (чтобы красиво все оформить)
В материала об авторе добавляем поле-представление из статей авторов
В представлении настраиваем контекстные фильтры по автору материала
В поле viewfield аргумент, естественно id автора
Делее в фильтация добавляем фильтр Selective по термину таксономии
В результате получаем ноду об авторе с перечнем всех его статей сгруппированных по терминам таксономии
Фильтр Views Selective Exposed Filters не показывает термины, к которым не привязаны ноды конкретного автора
Как работать с таксономией в Drupal?
Новичков обычно пугает слово таксономия, в русском языке оно имеет более приятный аналог — категории. Из этого мы можем сделать вывод, что основное предназначение таксономии, это разбиение данных на категории.
Управление таксономией сосредоточенно в «Administer › Content management › Taxonomy». Давайте представим, что нам нужно создать раздел новостей, притом новости будут делиться на «Пресс-релизы» и «Публикации», а во вкладке «Новости», будут доступны материалы из обеих вкладок. Для начала нам нужно создать словарь (vocabulary), для этого нажмем «Add vocabulary».
Для добавления обязательно ввести название словаря — «Vocabulary name:», назовем наш «Новости».
Во вкладке Content types нужно поставить галочки на типах материалов которые можно будет категоризировать с помощью нашего словаря. Установим галочку на Оба доступных типа. Во вкладке «Settings» можно указать что выбор категории обязателен (Required) для материалов, так же можно кликнуть по галочке «Tags», включение которой означает что пользователь сам сможет вбивать теги, галочка «Multiple select» разрешает указывать несколько тегов для каждого материала (при включенном «Tags» всегда «Multiple select»). «Weight:» — определяет меспоположение словаря в списке. Тут нам не нужно изменять ничего, сохраняем.
Словарь создан и появился в списке, теперь нам нужно добавить несколько терминов, переходим по ссылке «Add term».
Для начала добавим головной термин «новости» (По идее он не обязателен, но с ним выбор категории будет выглядеть красивее). Просто введем название и сохраним.
Следом за ним добавим вкладки «Пресс-релизы» и «Публикации», при этом нужно не забыть указать в «Advanced options», что «Родителем» («Parents:»), у них является термин «Новости»
Теперь попробуем создать материал типа Page. Сразу после заголовка, у нас появился необязательный выпадающий список «Новости», создадим пару материалов с тегами «Пресс-релизы» и «Публикации».
Чтож, теперь нам нужно добавить пункты меню, по которым будут выводиться только материалы с нужным термином, как создавать меню мы уже обсуждали. Ссылки на необходимые термины можно взять в «Administer › Content management › Taxonomy», на странице «list terms», просто кликните по нужному темину, и скопируйте ссылку вверху, у меня термину «Пресс-релизы» соответствует ссылка «taxonomy/term/2». Для головной вкладки новости, нужно проставить ссылку «taxonomy/term/1/all». Готовое меню выглядит так:
В составлении путей для страниц таксономии есть несколько хитростей. Если мы хотим показать все материалы принадлежащие к определенному термину, то путь будет taxonomy/term/n, где n — это номер термина, для того что бы показать материалы нескольких терминов, нужно добавить номера терминов через пробел, или через «+», например путь для меню «Новости», мы могли бы записать как taxonomy/term/2+3, если бы нам нужно было вывести материалы входящие сразу в несколько терминов (в нашем примере это невозможно, так как не была проставлена галочка «Tags», или «Multiple select»), то плюс нужно было бы заменить на «,» (taxonomy/term/2,3). Путь «taxonomy/term/1/all» означает что нужно вывести все материалы, которые входят в дочерние термины для термина с номером 1 (в нашем случае это «Новости»). Так же этот путь можно было записать как «taxonomy/term/1/1«. taxonomy/term/n1/n2 где n1 — это головной термин, а n2 — это до какой глубины мы будем выводить термины.
На этом все, спасибо за внимание)
Похожие материалы:
- Один простой трюк, который способен повысить конверсию сайта
- Яндекс запускает новую версию сервиса Вебмастер (Бета)
- Руководство по оптимизации сайтов для начинающих #2
Taxonomy — Drupal таксономия, что такое Таксономия?
Таксономия или таксономические схемы состоят из таксономических единиц, известных как таксоны или виды вещей, которые часто расположены в виде иерархической структуры, обычно связаны в подтип-супертип отношения, также называемые родитель-потомок. В таких подтип-супертип отношениях есть подтип таких вещей, по определению, те же ограничения как супертип рода вещей плюс один или более дополнительных ограничений. Например, автомобиль является подтипом транспортного средства. Таким образом, любой автомобиль также транспортное средство, но не каждое транспортное средство автомобиль. Так, автомобиль должен удовлетворить дополнительные потребности больше, чем быть просто транспортным средством.
Модуль Таксономии позволяет классифицировать содержание по категориям и подкатегориям; позволяет использовать несколько списков категорий для классификации (контролируемых словарей) и предоставляет возможность создания тезаурусов (контролируемых словарей, которые указывают на связь терминов), таксономии ( контролируемые словари, где иерархические отношения), и свободные словари терминов и тегов, которые определяются в процессе создания контента. Для просмотра и управления терминами каждого словаря, щелкните по ссылке, связывающую список терминов, а чтоб удалить словарь и все его термины, выберите «Изменить словарь».
Модуль Таксономия – это один из модулей ядра Друпала, который включен по умолчанию. Это означает, что базовая установка имеет категории по умолчанию.
Теперь поговорим о категориях. Чтобы попасть в категорию настройки, вы должны обратиться в Управление контентом. В этом меню вы увидите категории, здесь вы можете настроить словари (категория имен) и термины. Таким образом, Словарь – это заголовок категории. Термин – это тип.
Таксономию можно сделать больше, если, например, вы имеете несколько словарей, то можете назначить словари для различных типов содержимого
2.5. Taxonomy — Таксономия, словари и термины
В прошлом уроке мы сделали блог из друпала, но тому блогу не хватала рубрикатора статей, тегов. Давайте добавим словарь тегов, с помощью таксономии. Включите для этого модуль Taxonomy, если он у вас еще не включен.
Таксономией называется в друпале способ классификации (рубрикатора, категоризации) нод с помощью тегов таксономии (терминов, рубрик, категорий). Давайте создадим словарь Теги, с помощью которых и будем классифицировать наши статьи Меню — Структура — Таксономия.
Назовем словарь Теги. После создания словаря мы попадаем на его страницу, здесь можно вручную создать теги (термины), но мы не будем этого делать, потому что теги автоматически будут создаваться, когда мы их будем добавлять к статьям. Заметьте, что в друпале элементы словаря таксономии называются терминами. То есть если у вас словарь Теги, Классы, Рубрики, Разделы, то в словаре будут все равно термины.
Теперь нужно добавить поле выбора тегов для статей, для этого нужно включить модуль Field UI (если он у вас не включен). Зайдем на страницу управления полями типа материала Статьи, Меню — Структура — Типы материалов — Статьи действие Поля.
Добавляем новое поле Теги, тип поля Ссылка на термин:
Количество терминов поставим неограниченным (unlimitted):
Дальше все просто сохраняем. Теперь давайте зайдем на страницу создания статьи, в данным момент термины выбираются только из тех, что есть в словаре Теги, нам нужен другой виджет с автодополнением тегов и автоматическим добавлением в словарь. Зайдите в Меню — Структура — Типы материалов — Статьи, но теперь во вкладку Manage from display. Выберите здесь для поля Теги автозавершение ввода:
Сохраняем и заходим в создание статьи.Теперь мы пишем теги через запятую, а друпал сам добавить их в словарь Теги.
Теперь если зайдете в Меню — Структура — Таксономия — словарь Теги, то увидите новые термины таксономии. У каждого термина таксономии своя страница, на который анонсами выводятся все ноды, к которым привязан этот термин. URL таких страниц имеет вид taxonomy/term/номер-ноды, например taxonomy/term/2.
Сами теги выводятся на полной странице ноды:
Думаю мы еще не раз будем иметь дело с таксономией, так что можете смело переходить к следующему уроку, даже если не сразу все понятно с таксономией.