DEV: Добавление страниц

Были добавлены страницы, которые можно использовать во всём проекте. На данный момент участники, которые создали Блоги могут добавить страницы к существующим блогам (о блоге, обратная связь и т.д.) и персонал теперь имеет возможность создавать служебные страницы (о нас, правила и т.д.).

Изменения на GitHub внесены, можно тестировать. Кто ставить «с нуля» в базу уже внесены необходимые изменения. Раздел Информация добавлен, добавлены две служебные страницы.

У кого есть сайт, то кроме замены файлов необходимо сделать изменения в базе данных. Они касаются двух полей. Одно поле мы переименуем, другое добавим.

Запрос:

ALTER TABLE `posts` CHANGE `post_type` `post_feature` SMALLINT(6) NOT NULL DEFAULT '0' COMMENT '0 — discussion, 1 — question...';

ALTER TABLE `posts` ADD `post_type` VARCHAR(32) NOT NULL DEFAULT 'post' COMMENT 'Post, page...' AFTER `post_feature`;

Т.е. существующее поле post_type сперва мы меняем на post_feature, а далее вместо измененного post_type (оно стало другим) добавляем post_type.

Следующее, что необходимо сделать, — это создать тему с именем «Информация», где SLUG (URL) этой темы будет info.

После создания, идем в настройки этой темы и меняем её тип на Раздел.

Раздел на сайте

После этого, мы сможем добавить в неё 2 служебные страницы.

Их URl (slug) находится в файле конфигурации: config/facets.php:

'page-one'      => 'information',
'page-two'      => 'privacy',

Я специально пока не делал более гибкую систему связанную с таблицей в базе (куда могут переехать некоторые файлы конфигурации). Возможно в ближайшее время это будет сделано.

Вопросы, конструктивные замечания и т.д. приветствуются. Изменение на самом деле большое (как бывает, смена фактически 1 поля тянет за собой такое).

Упрощенная, плоская схема связанная с навигацией

Навигация Агути

Она может быть реализована сложней, но тут главное, что свойства деревьев, задано сейчас 3: Темы, Блоги, Секции (где пока только есть секция Информация), упростил, назвал Служебные страницы.

Такая навигация (корневых граней) есть и в админке:

Грани в админке

В оригинале, взаимодействие не такое «плоское» и дело не в том, что есть «всё со всеми»… Сейчас важно лишь понимание «корневых» ветвей.

P.S. графики не могу рисовать, — раз. А два, они иногда могут значительно всё усложнить. На самом деле система достаточно простая.

Мы всегда создаем или Тему или Блог. В любой момент из Блога мы можем сделать Тему (или обратно), как и разделы. Это используется для навигации. Навигация объединяет чего-то (посты, например, сайты в каталог, программы). В ленте, мы видим только то, на что подписаны. Сама навигация может быть разной: темы, категории…

Пример страницы: https://agouti.ru/info/information

8 Ответов

  1. Практически все файлы были затронуты (109) и добавлено 2217. Большое изменение, необходимо обязательно протестировать. Возможно ошибки.

    А пользователи, которые не создали Блоги могут добавлять страницы? И в страницах (раз фактически это посты) может быть добавить и комментарии?

    1. Страницы добавляются к чему-то. Если пользователь не создал Блог, то он не сможет добавить страницу. Комментарии, их легко можно добавить, т.к. с ними фактически нет никаких изменений. Мы можем комментировать посты, а значит и страницы, т.к. страницы это собственно и есть посты. Сейчас главное отладить это дело (чтобы базу оставить в стороне) и упрощения некоторые необходимо делать. Навигацию необходимо изменить, всю. Сейчас много файлов, много массивов, много переменных. Сложно всё.

  1. Это всё сложно для обычного пользователя, заполнять все описания. Очень, а иногда просто лень, пользователь уходит с такого ресурса, нужно максимально упростить, наверное, если возможно.

    1. Это не для пользователя. Пользователь знать не будет, что это такое. Они будут видеть только максимально простые категории или теги. Это нужно для администрации.

  1. Сейчас посмотрел, в созданных блогах в title стоит слово Тема, возможно эта часть еще не изменена?

    1. Это ошибка, подправлю. Спасибо.

  1. Сделал навигацию однообразно Теперь, можно (если захотим) перетащить всё в таблицу и управление сделать через админку.

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

    В CMS, — да, для управления есть много настроек в админке, меню там разные. Это и понятно. Но с теми сообществами, над которыми я работал, такого нет. В этом плане нет особой гибкости, т.к. цели в отличие от CMS другие. А Agouti скрипт — не CMS, сейчас так.

    Плюсы такого подхода есть и минусы. Из минусов, надо лазить в файлы.

    Включил временно профилирование тут:

    Loading HLEB: 0.0106
    Create Project: 0.0206 (+0.02)
    Memory: 1.01 Mb

    Такие результаты для центральной страницы (5 запросов в базу). Главная (лента) одна из самых нагруженных, сложные запросы связанные с подпиской на грани (фасеты), закладки, голосование за посты…

    1. Выделение памяти хорошее, я привык от 6МБ. )