Каталог сайтов (скрипт каталога сайтов, программ, товаров)
Давайте посмотри, как я вижу тему (будем называть далее: категория) Hi-Tech если зайду в нее и добавляю в качестве подкатегорий — Мобильные телефоны:
Подкатегорию я добавил, но ее нет. Вижу её, как подкатегорию (дети) Hi-Tech, но в интерфейсе ее нет.
Дело в том, что это категория не имеет нужных свойств. Если мы пройдем уже в неё и нажмем редактировать. то можем увидеть:
Устанавливаем значение на ДА, сохраняем, и видим:
С этим достаточно просто. Мы составляем дерево из категорий в ручном режиме. Назначаем им свойство видимости в каталоге и все будет отображаться.
Но далее начинается самое интересное.
Вот я добавил Мобильные телефоны, но там ничего нет. Пустая категория.
Почему пустая?
Сайтов там нет. они не назначены туда. Мы же сайтам говорим, в какой категории они должны быть.
Стоп.
А чем это отличается от обычных категорий?
Мы имеем связанную таблицу и всё? Да, таблица связи дает некую свободу. Но это не фасеты.
Мы, сайту, например, говорим, в какой категории надо находиться. Это подход с категориями связан. Тут не должно быть так.
Сайты появляются в категории, если свойство сайта подходит под эту категорию. Сборка идет автоматическая. И еще есть момент. В виду того, что каталог составляется на лету, крайне важно (кроме персонала) предусмотреть другое поведение. Оно заключается в видимости пустой категории.
Ок. Допустим тут будут города (регион, а он будет). Я нахожусь в категории Hi-Tech и нажму на город Урюлюлю. Но товаров нет в этой категории. Что я получу? Что она пустая?
Я не должен видеть город Урюлюлю чтобы нажать. Я не должен видеть саму категорию, если в ней нет ничего.
И регионы. Это не отдельная таблица. Это просто дерево общей схемы, фасетов, граней, как мы называем, категорий.
Еще пример. Я нахожусь в категории, где вижу 10 подкатегорий. Жму на город и в зависимости от города, их количество должно поменяться, каталог перестроиться.
Теперь, мы от свойств того что находится внутри разделов будем показывать или нет сами разделы.
Сайт в данном случае не будет (если упрощать) назначаться в нужную категорию. Но в зависимости от проставленных свойв появится там.
Почему пишу. Сегодня, завтра, сделаю архив на GitHub, очередного релиза. И далее необходимо закончить эту возню с фасетами. Действительно, у меня это дело висит более 20 лет.
Далее. Есть таблица в базе данных — items
и что связано с этим. Так вот, я бы не стал наполнять сейчас эту таблицу сайтами или создавать темы и привязывать их к items
. В ближайшем времени, эта таблицу будет серьезно изменена. Каталог выполнен модулем, чтобы было проще вносить изменения.
См. каталог сайтов: https://libarea.ru/web
Пока еще категории там, по свойствам жесткие категории. Хотя уже и гибкие. Таблица связей дает возможность связывать всё со всем.
P.S. сайты на данный момент только для того, чтобы наполнить каталог. Могут быть программы, товары. Это может быть магазин, библиотека и т.д. Не в этом дело. Меня интересует создание универсального инструмента для навигации, который может быть использован далее!
Фасетная схема сборки. Яндекс каталог ранее делал подобную конструкцию.
Да, мы писали про это тут, говорили. Яндекс был хорошим примером, который мало кто заметил. Только в научных кругах было небольшое движение. )