В этой главе мы рассмотрим, как плагин может быть настроен и настроен. Кроме того, мы также поймем структуру плагина и как отображать случайную страницу. Плагин — это часть программного обеспечения, которая предоставляет дополнительные функциональные возможности, которые изначально не были дополнены основными функциями Grav.
В этой статье мы собираемся отобразить случайную страницу с помощью случайного плагина. Перед использованием этого плагина, мы увидим некоторые важные моменты случайного плагина.
-
Вы можете использовать этот плагин для отображения случайной страницы, используя URI как / random .
-
Создайте фильтр, чтобы использовать таксономию, указанную на страницах. Вы можете создать как категорию: блог .
-
Вы можете отобразить случайную страницу с помощью опции фильтра; это информирует Grav об использовании того же контента, который должен отображаться на случайной странице.
Вы можете использовать этот плагин для отображения случайной страницы, используя URI как / random .
Создайте фильтр, чтобы использовать таксономию, указанную на страницах. Вы можете создать как категорию: блог .
Вы можете отобразить случайную страницу с помощью опции фильтра; это информирует Grav об использовании того же контента, который должен отображаться на случайной странице.
Плагин настройки
Выполните следующие шаги, чтобы создать базовую настройку для плагина перед использованием самого плагина.
-
Создайте папку с именем random в папке user / plugins .
-
В папке user / plugins / random создайте два файла, а именно:
-
random.php используется для кода плагина
-
random.yaml используется для конфигурации
-
Создайте папку с именем random в папке user / plugins .
В папке user / plugins / random создайте два файла, а именно:
random.php используется для кода плагина
random.yaml используется для конфигурации
Конфигурация плагина
Чтобы использовать случайный плагин, нам нужно иметь несколько параметров конфигурации. Мы напишем следующие строки в файле random.yaml .
enabled:true route:/random filters: category:blog
Случайно создает маршрут, который вы определяете. Основанный на фильтрах таксономии, он выбирает случайный элемент. Значением фильтра по умолчанию является «категория: блог», которое используется для случайного выбора.
Структура плагина
Следующий код может быть использован в структуре плагина.
<?php namespace Grav\Plugin; use Grav\Common\Page\Collection; use Grav\Common\Plugin; use Grav\Common\Uri; use Grav\Common\Taxonomy; class RandomPlugin extends Plugin { } ?>
Мы используем кучу классов в плагине, используя операторы use, что делает его более читабельным и экономит место. Пространство имен Grav \ Plugin должно быть написано в верхней части файла PHP. Имя плагина должно быть написано в заглавной букве и должно быть расширено с помощью плагина .
Вы можете подписать функцию getSubscribeedEvents () на событие onPluginsInitialized ; это определяет, на какие события подписан плагин. Таким образом, вы можете использовать событие, чтобы подписаться на другие события.
public static function getSubscribedEvents() { return [ 'onPluginsInitialized' => ['onPluginsInitialized', 0], ]; }
Давайте теперь используем событие onPluginInitialized в классе RandomPlugin, используемом для маршрутизации страницы, которая настроена в файле random.yaml .
Метод onPluginInitialized () содержит следующий код:
public function onPluginsInitialized() { $uri = $this->grav['uri']; $route = $this->config->get('plugins.random.route'); if ($route && $route == $uri->path()) { $this->enable([ 'onPageInitialized' => ['onPageInitialized', 0] ]); } }
Объект Uri включает в себя текущий Uri , информацию о маршруте. Объект config указывает значение конфигурации для маршрутизации случайного плагина и сохранения его в объекте маршрута.
Теперь мы сравним настроенный маршрут с текущим путем URI, который информирует плагин о прослушивании события onPageInitialized .
Отображение случайной страницы
Вы можете отобразить случайную страницу, используя код с помощью следующего метода —
public function onPageInitialized() { $taxonomy_map = $this->grav['taxonomy']; $filters = (array) $this->config->get('plugins.random.filters'); $operator = $this->config->get('plugins.random.filter_combinator', 'and'); if (count($filters)) { $collection = new Collection(); $collection->append($taxonomy_map->findTaxonomy($filters, $operator)->toArray()); if (count($collection)) { unset($this->grav['page']); $this->grav['page'] = $collection->random()->current(); } } }
Как показано в коде,
-
Присвойте объект таксономии переменной $ taxonomy_map .
-
Получить массив фильтра, который использует настроенную таксономию, из конфигурации плагина с помощью объекта конфигурации . Мы используем элемент в качестве категории: блог .
-
Мы используем collection для хранения случайной страницы в $ collection . Добавьте страницу, которая соответствует фильтру, к переменной $ collection .
-
Отключите объект текущей страницы и настройте отображение текущей страницы как случайной страницы в коллекции.
Присвойте объект таксономии переменной $ taxonomy_map .
Получить массив фильтра, который использует настроенную таксономию, из конфигурации плагина с помощью объекта конфигурации . Мы используем элемент в качестве категории: блог .
Мы используем collection для хранения случайной страницы в $ collection . Добавьте страницу, которая соответствует фильтру, к переменной $ collection .
Отключите объект текущей страницы и настройте отображение текущей страницы как случайной страницы в коллекции.
Наконец, мы увидим полный код плагина для отображения случайной страницы, как показано ниже —
<?php namespace Grav\Plugin; use Grav\Common\Page\Collection; use Grav\Common\Plugin; use Grav\Common\Uri; use Grav\Common\Taxonomy; class RandomPlugin extends Plugin { public static function getSubscribedEvents() { return [ 'onPluginsInitialized' => ['onPluginsInitialized', 0], ]; } public function onPluginsInitialized() { $uri = $this->grav['uri']; $route = $this->config->get('plugins.random.route'); if ($route && $route == $uri->path()) { $this->enable([ 'onPageInitialized' => ['onPageInitialized', 0] ]); } } public function onPageInitialized() { $taxonomy_map = $this->grav['taxonomy']; $filters = (array) $this->config->get('plugins.random.filters'); $operator = $this->config->get('plugins.random.filter_combinator', 'and'); if (count($filters)) { $collection = new Collection(); $collection->append($taxonomy_map->findTaxonomy($filters, $operator)->toArray()); if (count($collection)) { unset($this->grav['page']); $this->grav['page'] = $collection->random()->current(); } } } }
Откройте браузер и введите localhost / folder_name / random, чтобы увидеть случайную страницу, как показано на следующем снимке экрана —