yii2-start icon indicating copy to clipboard operation
yii2-start copied to clipboard

Создать модуль категорий

Open vova07 opened this issue 11 years ago • 6 comments

vova07 avatar May 26 '14 16:05 vova07

Здравствуйте, здорово было бы, если бы категории были древовидные...

ram0973 avatar Jul 17 '14 07:07 ram0973

Да идея хорошая

yatskanich avatar Jul 17 '14 08:07 yatskanich

Постараюсь учесть этот момент при разработке.

vova07 avatar Jul 17 '14 11:07 vova07

Опишу систему словарей ( вся терминология опирается на концепцию книжек словарей), что мне кажется намного гибче решает проблему категорий и тегов вместе взятых.

Структура

Таблица словарей

  • Имя словарика на нужном нам языке (по умолчанию Английский)
  • Символьный ID на латинице (для возможности выводить в url или для указания в коде)
  • Тип иерархии
    • Одиночная - в таком словарике можно выбрать только один термин для материала ( читай категории )
    • Множественная - в таком словарике можно выбрать несколько терминов к материалу ( читай теги )
  • Возможность вложенности - флаг указывающий возможность в данном словарике вкладывать термины друг в друга

Таблица терминов

  • ID словарика к которому относится термин
  • Имя термина
  • Его описание

Таблица иерархии терминов

  • Термин
  • Родитель термина

Таблица связи материала с термином - в этой таблице мы связываем материал с термином, ее можно сделать универсальной, если добавить еще одно поле указывающее на тип материала, если имеется множество материалов.

  • ID материала
  • ID словарика
  • ID термина

Как все это будет работать

К модели подключается behavior в котором мы указываем атрибут для вывода. и символьный ID словарика. В форме выводим этот атрибут с помощь виджета, который определяет иерархию словаря и выводит доступные термины.

При сохранении модели behavior рассовывает id терминов и материала по нужным таблицам, создает новые термины, если они были указаны руками.

Примерно описал то что я буду писать в ближайшее время для Yii2. Т.к задача этого требует.

JiLiZART avatar Nov 14 '14 08:11 JiLiZART

Спасибо за подробное описание. Идея как по мне хорошая, конечно тэги имеют право на жизнь, так как иногда есть ситуации, когда они нужны просто без какой либо фильтрации или вложенности, но думаю с помощью кэша разницу между этими реализациями можно исчерпать.

Если кто-то еще следит за темой, буду признателен за ваши мнения: Как лучше организовать категории?

  • Методом что предложил @JiLiZART
  • или например через NestedSet,
  • или обычным Adjacency List так как сложные структуры обычно нужны для интернет-магазинов, и вложенных СЕО УРЛ-ов.

Сам наверное выберу метод @JiLiZART так как он более гибок и универсален.

vova07 avatar Nov 14 '14 08:11 vova07

@vova07 в таблице термина можно так же сделать поле его латинской интерпретации, что позволит использовать термины в url

JiLiZART avatar Nov 14 '14 13:11 JiLiZART