DEV: Некоторые работы на сайте (страницы)

Напишу, что делаю, т.к. это связано с изменениями на сайте и возможно некоторыми простоями в работе. Понятно, что сперва это будет опробовано локально, но всё равно. Случиться может всякое :)

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

Пример: сейчас на сайте есть раздел info и он выполнен жестко, с файлами Markdown. Есть контроллер InfoController, где собственно всё и происходит.

Это необходимо заменить на страницы.

Ещё у нас есть Блоги, и хотелось бы сделать, чтобы и владельцы блогов могли добавлять страницы к своим блогам.

Ещё у нас есть темы…

Обычно, такой функционал реализуют добавляя таблицу page, таблицу связи с тегами и т.д. Однако, есть более гибкое решение. По разному оно работает, на разных сайтах. Давайте посмотрим, например, форум Discourse и посмотрим, что там можно сделать с постами (это часть возможностей).

Меню постов в Discourse

Вот какая высокая картинка получилась, но это ещё не всё возможности, что можно сделать с постами. Но нас интересует пункт: Превратить в личное сообщение

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

Пример. Я переведу этот пост в личные сообщения. Он пропадет с ленты (будет как черновик), но в отличие от черновика, с которым я могу работать один, в личных сообщениях я могу позвать еще кого-то, присоединить к беседе. Кто присоединится, открою доступ на редактирование поста.

Вместе поработаем над постом, обсудим его, подправим, и когда пост будет готов, верну его назад, в посты в ленту, в темы, куда угодно. И пост появится ленте.

Суть в том, что у нас есть посты и мы можем перемещать эти посты куда угодно. Мы можем создавать сразу посты, а сможем создавать и страниц при условии, что пользователь создал блог.

Страницы всегда к чем-то привязаны, они не болтаются в воздухе.

Теперь про фасеты. Есть Темы и Блоги. Это 2 ветки дерева. Создаем 3 ветку — Разделы. И некоторые страницы будем привязывать к разделу. Так мы заменим раздел info.

Мы не добавим 2 таблицы, мы будем использовать то, что есть. Добавим еще одно поле в базу данных, в саму таблицу постов.

Фасеты, грани, занимаются созданием пространств (разделы, темы, блоги…), где что-то находится. Темы, Блоги, категории в каталоге сайтов и программ, разделы (например один будет содержать статьи: помощь, о нас и т.д.).

Плюс к этому посты могут быть ещё и страницами. Страницы будут выглядеть совсем по другому.

Понятно, что раз мы ничего не меняем особо, то у страниц есть всё, что есть и у постов, например: голосование, подписка, комментарии, фото… и т.д. Это временно для страниц пока уберу.

Мы добавим всего одно поле, однако это действие потянет за собой огромные изменения.

Вот, что тут будет происходить в ближайшее время, мы будем добавлять страницы.

P.S. Кстати, вчера в течение дня сделал классический вариант (с добавлением таблиц page, связь…). Посмотрел. Это не то. Мы имеем очень гибкую систему из фасетов и можем их отлично использовать.

Просто пока есть небольшие сложности в мышлении. Перестать думать про предметы, как они отдельные части (таблица post и таблица page, категории, темы, разделы), а рассматривать всё с позиции деревьев, веток, с разными свойствами.

Вот картинка:

Фасеты
ист. Tesseract, Википедия

Тут есть то, что можно использовать.

Грани появляются, исчезают, приобретают разные свойства в зависимости от условий и наших нужд.

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

Так мы сможем формировать шапку сайта в каждом Блоге индивидуально (да везде и не только шапку)…

6 Ответов

  1. Тогда и название post всего в системы необходимо будет менять, раз post становятся чем-то большим чем просто посты? Название таблиц, полей, контроллеры и модели. Правильно?

    1. Да, но это позже. У нас будет всего несколько вещей, если смотреть по основным таблицам: Участники, Фасеты (темы, разделы, группы…), Предметы (программы, сайты…), Контент (посты, страницы…), Комментарии. Всё достаточно просто будет, но очень гибко. Я бы конечно сейчас уже сделал и это чуток по другому, пока приемлемо. Будет миграция, можно будет изменить некоторые вещи.

  1. В рекомендованных, стали показываться и страницы. Проверил их url:

    Рекомендованные посты

    Доступен по url поста и для страницы.

    1. Подправил. Спасибо!

  1. Собственно простая страница готова. Теперь без файлов Markdown, можно править обычный пост (страницу). Внешний вид её будет отличаться. Ведь они нужды будут для служебной информации и в блогах.

    В блогах, пользователь который создал блог может сделать для блога и страницы: о чем блог, о себе, помощь, спонсировать и т.д.

    Сейчас дизайном не занимался, задача, чтобы работало всё. На GitHub изменения готовлю.

    1. А мне нравится! Шапку только для страниц может другую сделать?