vorst.ru - Как написать блог на Yii2
Статьи из рубрики about-sites

Рефакторинг кода авторизации

Использование аккаунта социальной сети для авторизации

Авторизация с помощью социальной сети не должна зависеть от типа аккаунта. В предыдущем посте используется код, где в конструкторе классa common/components/SocialContact.php выполняется оператор switch. При добавлении обработчика для новой социальной сети, придется дописывать код, при этом меняя класс.

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


Как подключить авторизацию через аккаунт

OAuth2 авторизация с использованием аккаунта

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


Модерация и вывод комментариев

Ответ на комментарии и рекурсивный вывод

На сайте оставили комментарий, вы ответили. Оппонент что-то еще уточнил, вы опять ответили. Цепочка из нескольких вопросов/ответов, которую нужно представить в виде лестницы.

Отступы можно выводить в обычном цикле, но если отступы формируются с помощью блочных элементов и css, то проще использовать рекурсию.


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

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

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

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

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


Как определить правило для RBAC

Выполнять действие или нет

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

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


Определение разрешений на доступ и ролей для пользователей

Задание доступа только к определенным действиям

Разработка бекенда сайта часто подразумевает ограничение прав при редактировании контента.

Ролевая модель имеет иерархию. Сначала прав не много, потом чуть больше, наконец доступно все. Права (или разрешения) - это константы, которые связаны с конкретной ролью. Если за ролью закреплено разрешение, то действие может быть выполнено.


Как подключить RBAC

Подключение ролевого доступа

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

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


Как определить и вызвать событие

Пример события

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

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


Пример работы с сессией

Если читатель хочет вспомнить, что просмотрено и прочитано

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


Как разместить контент на двух языках

Перевод контента сайта

Для перевода интерфейса в Yii применяется таблица из двух колонок. В первой колонке записываются слова или фразы на английском, во второй - перевод на русском. Строки отсортированы по первой колонке. В тексте программы вместо нужного слова или фразы вызывается функция t('Word or Phrase'). Если текущий язык сайта английский, функция возвращает параметр, иначе соответствующий перевод.

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



Поиск



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

Блог включает управление комментариями, пользователями, 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.

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

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