Статья

Навигация на сайте (часть N)

Структуру открыл, вы могли заметить в левом меню появилась ссылка (Структура), после авторизации (с уровня доверия TL2), если кто не видит, в чате или сюда скажите, TL подниму.

Сегодня, завтра сайт будет штормить, возможно. Всю навигацию переводу на фасеты.

Слово «фасеты» не случайно, само слово «фасет» на этом сайте, не говорит ничего, он становится чем-то когда приобретает тип. Он записан в поле facet_type и может быть:

  • Блогом (который мы создаем)
  • Категорией (в каталог программ, сайтов)
  • Темой, которая используется как тэг в постах, группируя их.
  • Разделом, под которым публикуются страницы, например: «О сайте».

Структура

А это, если зайти в темы (пример). Показаны не только «родители / дети», но и связанные темы.

Темы

И так, можно сделать везде.

Мы можем добавить, что угодно. Например, в ВКонтакте есть страницы. Мы не делаем отдельную таблицу, а просто создаем с новым свойством, например: страницы.

Аналогично можем — объявления, магазины и т.д.

Вот это, которое группируется под одним типом называем дерево. Дерево подразумевает, что мы можем связывать всё со всем (в рамках одного типа). Можно сделать и нет, но делаю просто.

Связывая их, мы придерживаемся простого правила, мы выбираем детей. Так проще. Это как в лабиринте, там нет «правильного» ответа куда идти. Куда угодно. Но есть рекомендации, чтобы не заблудиться держаться правой стены, руку не отрываем от неё.

Так и тут. Мы можем выбрать родителя (теоретически, но не стоит).

Находимся допустим мы в категории «Интернет» и хотим увидеть подкатегорию (ребенка) «софт», открываем редактирование «Интернет» и добавляем «софт», если такой есть в данном типе.

В рамках одного типа стоит уникальный индекс на slug (URL) т.е. мы не можем создать, например, две категории с URL — soft. Но тег soft и категория soft быть могут.

И есть таблица подписки на это. Раз у нас одна таблица с фасетами, подписка на них, мы можем в одной ленте использовать её. Не плодить разные запросы к разным таблицам, а работать фактически с одной.

Вот захотим мы в ленте видеть и сайты, они будут. Зайдем в каталог, если подпишемся на категорию, то новые добавления можно увидеть в ленте. Например, так сделать. Что угодно можно.

Удобно с такой схемой. При запросах, в шаблонах и контроллерах, мы просто тип указываем, чтобы не получилось например, в каталоге сайтов появятся темы (от статей).

Делают и мешают типы деревьев, но пока тут не надо. Не вижу необходимости так всё усложнять. И так получается гибко всё.

Это самая простая схема, которую мы можем сделать. Используя таблицы связей, она и гибкая. Я сегодня стирал ее пару раз и смотрел, как с нуля выставлять, привязывать, насколько просто.

Осталось сделать, чтобы все работало и упростить это дело.

Да и еще. Все действия происходят через удаление.

фасеты в каталоге

Например, если в каталоге мы видим темы, а не категории, достаточно просто изменить фасет, добавить другую категория и всё восстановится.

Как все будет готово на GitHub обновлю. Сейчас там не думаю, что рабочая версия (если брать не релиз).

P.S. я веду всё к тому, чтобы участники могли принимать активное участие в работе сайта, чтобы они могли создавать теги, категории в каталоге, и, а темах. Везти их и т.д. Для совместной, коллективной работы. Частные разделы и общие, служебные и т.д. У нас есть всё, чтобы сделать это.

7 Ответов

  1. Потерпим, ничего страшного. Публиковать, отвечать можно и хорошо. )

  1. Кнопка добавить категорию в каталоге нет, приходится искать ее через темы и там менять тип тем на категорию. Может быть добавить панель управления и в сам каталог? Тем более там уже есть страница удаленные.

    1. Да, это планируется, спасибо. Там же будет модерация выводиться, как в Dmoz было с личной страницей, но тут профиль есть и связь можно сделать.

  1. Удаленные ответы возможно не имеет смысл показывать, что он удален. Персонал видит удаленный ответ для восстановления, а для других какой смысл?

    1. Ед. смысл есть если он в ветке, а так нет. Уберем одиночный, он не несет полезной нагрузки.

  1. Создавать теги это хорошо, а вот категории. Какие новые категории можно создать? Уже давно есть как бы известный список, и порой даже из готового списка сложно выбрать что-то под свою категорию.
    Встречаются люди, которые создают кучу категорий, а по сути одноименные.
    Разделы: частные, общие, служебные — это хорошо.

    1. Категории хороши, когда их мало. Они более тяжелые, и когда их много (в каталогах, например), суть навигации теряется. Попробуйте посмотреть в каталоге и понять всю структуру, сложно и практически невозможно. Когда у нас есть 5 стен, мы построим хороший дом, даже когда их 12, но если их будет 50, то может получиться лабиринт. Применение зависит от типа сайта.