vorst.ru - Статьи о задачах возникающих при создании сайта и их решении
Статьи помеченные nestedset

Модуль для управления блогом

Блог включает управление комментариями, пользователями, rbac

Новости, сообщения, описания - это все статьи, а статьи - это блог. Блог является важной составляющей любого сайта.

Блог настолько важен, что самая популярная CMS на планете WordPress - это блог.

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


Виджет для вывода списка рубрик Nested Set

Выбор всех статей по рубрике

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

Первая из них - необходимо добавить поле rubric в таблицу post. С этой операцией связано и изменения в модели common/models/Post, которые очевидно касаются методов rules() и attributeLabels().

Кроме этого нужно добавить обработку выбранной пользователем рубрики в actionIndex() контроллера frontend/controllers/PostController.


Простые действия над деревом Nested Set

Что нужно учесть для CRUD

Все необходимые методы, для управления деревом Nested Set уже определены в расширении.

Поэтому изменения в стандартном контроллере совсем небольшие. Нужно, например, вместо стандартного метода save() модели использовать метод prependTo() расширения, а вместо delete(), deleteWithChildren().


Представления для операций с Nested Set

Что нужно учесть в представлениях при редактировании Nested Set

Мы, в общих чертах, разобрались с деревьями Nested Set и создали модель для хранения дерева. В модели определили пару простых методов.

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


Подключение расширения Nested Set

Определение данных и необходимых методов в модели

Мы получили общее представление о древовидной структуре данных называемой Nested Set. Теперь пришло время подключить к блогу соответствующее расширение.

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


Как устроена структура данных Nested Set

Как сделать рубрикатор

Рубрикатор, как средство поиска интересных статей, имеет свои недостатки - трудно придумать иерархию, названия рубрик, трудно потом решить к какой конкретно рубрике относится статья. "Но, так принято" - скажите вы и будете правы.

Поэтому, давайте делать рубрикатор.



Поиск



Модуль для управления блогом

Блог включает управление комментариями, пользователями, rbac

Новости, сообщения, описания - это все статьи, а статьи - это блог. Блог является важной составляющей любого сайта.

Блог настолько важен, что самая популярная CMS на планете WordPress - это блог.

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


    Поделиться

Модуль sergmoro1/yii2-blog-tools позволяет получить готовую функциональность так-же быстро, как и при установке CMS. Что включает эта функциональность?

Управление блогом

Во-первых панель управления (backend), которую легко расширять и настраивать. Для панели используется bootstrap шаблон SB-admin.

Во-вторых, набор таблиц, которыми можно управлять с помощью этой панели:

  • Статьи
  • Рубрики
  • Метки
  • Комментарии
  • Авторы
  • Пользователи

Пользователь, это тот, кто отвечает за редактирование контента. Чтобы стать Пользователем надо пройти регистрацию.

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

Комментарии могут оставлять зарегистрированные посетители сайта. Комментарии проверяются администратором сайта. Администратор имеет возможность ответить на комментарий. В этом случае Пользователь, разместивший комментарий, может продолжить диалог.

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

Рубрики организованы в виде Вложенного Множества или Nested Sets и могут иметь любое количество уровней вложенности.

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

SEO

К блогу подключены SEO инструменты, позволяющие определять любое количество мета-тегов. Значения мета-тегов определяются при редактировании статей.

Настройка

После установки модуля sergmoro1/yii2-blog-tools и его настройки в соответствии с README.md в файле /backend/config/params.php будет определение sidebar меню. Определение может быть расширено или изменено.

Могут быть изменены и другие параметры backend. Например, можно полностью поменять основной layout, разместив его в обычном месте backend/views/layouts вместо указанного в README.md.

return [
  'id' => 'app-backend',
  'basePath' => dirname(__DIR__),
  'defaultRoute' => '/blog/site/index',
  'layoutPath' => '@vendor/sergmoro1/yii2-blog-tools/src/views/layouts',

Авторизация

Модуль включает контроль доступа. Предусмотрено три роли - Администратор, Автор и Комментатор.

Комментатор может оставлять комментарии на сайте и редактировать свой профиль. Права Комментатора получает любой зарегистрировавшийся Пользователь. Автор может размещать статьи и отвечать на комментарии к своим статьям. Администратор может все. Права Администратора может выдать только Администратор. Администратор может блокировать любого Пользователя.

Заключение

Модуль sergmoro1/yii2-blog-tools предназначен для быстрой организации backend. Все модели и часть виджетов могут и должны использоваться во frontend.

Оставить комментарий

Только авторизованные пользователи могут оставлять комментарии. Пожалуйста авторизуйтесь или пройдите регистрацию.