Создать модуль категорий
Здравствуйте, здорово было бы, если бы категории были древовидные...
Да идея хорошая
Постараюсь учесть этот момент при разработке.
Опишу систему словарей ( вся терминология опирается на концепцию книжек словарей), что мне кажется намного гибче решает проблему категорий и тегов вместе взятых.
Структура
Таблица словарей
- Имя словарика на нужном нам языке (по умолчанию Английский)
- Символьный ID на латинице (для возможности выводить в url или для указания в коде)
- Тип иерархии
- Одиночная - в таком словарике можно выбрать только один термин для материала ( читай категории )
- Множественная - в таком словарике можно выбрать несколько терминов к материалу ( читай теги )
- Возможность вложенности - флаг указывающий возможность в данном словарике вкладывать термины друг в друга
Таблица терминов
- ID словарика к которому относится термин
- Имя термина
- Его описание
Таблица иерархии терминов
- Термин
- Родитель термина
Таблица связи материала с термином - в этой таблице мы связываем материал с термином, ее можно сделать универсальной, если добавить еще одно поле указывающее на тип материала, если имеется множество материалов.
- ID материала
- ID словарика
- ID термина
Как все это будет работать
К модели подключается behavior в котором мы указываем атрибут для вывода. и символьный ID словарика.
В форме выводим этот атрибут с помощь виджета, который определяет иерархию словаря и выводит доступные термины.
При сохранении модели behavior рассовывает id терминов и материала по нужным таблицам, создает новые термины, если они были указаны руками.
Примерно описал то что я буду писать в ближайшее время для Yii2. Т.к задача этого требует.
Спасибо за подробное описание. Идея как по мне хорошая, конечно тэги имеют право на жизнь, так как иногда есть ситуации, когда они нужны просто без какой либо фильтрации или вложенности, но думаю с помощью кэша разницу между этими реализациями можно исчерпать.
Если кто-то еще следит за темой, буду признателен за ваши мнения: Как лучше организовать категории?
- Методом что предложил @JiLiZART
- или например через
NestedSet, - или обычным
Adjacency Listтак как сложные структуры обычно нужны для интернет-магазинов, и вложенных СЕО УРЛ-ов.
Сам наверное выберу метод @JiLiZART так как он более гибок и универсален.
@vova07 в таблице термина можно так же сделать поле его латинской интерпретации, что позволит использовать термины в url