Учебники

Grav — Плагин Учебники

В этой главе мы рассмотрим, как плагин может быть настроен и настроен. Кроме того, мы также поймем структуру плагина и как отображать случайную страницу. Плагин — это часть программного обеспечения, которая предоставляет дополнительные функциональные возможности, которые изначально не были дополнены основными функциями 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, чтобы увидеть случайную страницу, как показано на следующем снимке экрана —