Grav - Eklenti Dersleri

Bu bölümde, bir eklentinin nasıl kurulup yapılandırılabileceğini inceleyeceğiz. Ek olarak, bir eklentinin yapısını ve rastgele bir sayfanın nasıl görüntüleneceğini de anlayacağız. Eklenti, başlangıçta Grav'ın temel işlevi tarafından tamamlanmayan ek işlevsellik sağlayan bir yazılım parçasıdır.

Bu yazıda, rastgele eklentiyi kullanarak rastgele bir sayfa görüntüleyeceğiz. Bu eklentiyi kullanmadan önce, rastgele eklentinin bazı önemli noktalarını göreceğiz.

  • URI'yi kullanarak rastgele sayfayı görüntülemek için bu eklentiyi kullanabilirsiniz. /random.

  • Sayfalarda belirtilen sınıflandırmadan yararlanmak için filtre oluşturun. Olarak oluşturabilirsinizcategory : blog.

  • Filtre seçeneğini kullanarak rastgele bir sayfa görüntüleyebilirsiniz; bu, Grav'a rastgele sayfada görüntülenecek içeriğin aynısını kullanmasını bildirir.

Kurulum Eklentisi

Eklentiyi kullanmadan önce eklenti için temel bir kurulum oluşturmak üzere bu adımları izleyin.

  • Adlı klasör oluştur random altında user/plugins Klasör.

  • Altında user/plugins/random klasör, yani iki dosya oluşturun -

    • random.php eklenti kodu için kullanılır

    • random.yaml konfigürasyon için kullanılır

Eklenti Yapılandırması

Rastgele eklentiyi kullanmak için bazı yapılandırma seçeneklerine ihtiyacımız var. Aşağıdaki satırları aşağıdaki satırların altına yazacağız:random.yaml dosya.

enabled:true
route:/random
filters:
   category:blog

Rastgele, tanımladığınız bir rota oluşturur. Sınıflandırma filtrelerine göre rastgele bir öğe seçer. Filtrenin varsayılan değeri'category: blog' rastgele seçim için kullanılır.

Eklenti Yapısı

Eklenti yapısında aşağıdaki kod kullanılabilir.

<?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 {
   }
?>

Eklentide bir grup sınıf kullanıyoruz. usedaha okunabilir kılan ve yerden tasarruf sağlayan ifadeler. namespace Grav\PluginPHP dosyasının en üstüne yazılmalıdır. Eklenti adı yazılmalıdırtitlecase ve kullanılarak genişletilmelidir Plugin.

İşleve abone olabilirsiniz getSubscribedEvents() için onPluginsInitializedEtkinlik; bu, eklentinin hangi olaylara abone olduğunu belirler. Bunun gibi, diğer etkinliklere abone olmak için etkinliği kullanabilirsiniz.

public static function getSubscribedEvents() {
   return [
      'onPluginsInitialized' => ['onPluginsInitialized', 0],
   ];
}

Şimdi kullanalım onPluginInitialized altında olay RandomPlugin içinde yapılandırılan sayfayı yönlendirmek için kullanılan sınıf random.yaml dosya.

Yöntem onPluginInitialized() aşağıdaki kodu içerir -

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 nesne rota hakkında güncel uri, bilgileri içerir. Yapılandırma amacı da, rastgele eklenti yönlendirme ve yol nesnesi içinde depolamak için yapılandırma değerini belirtir.

Şimdi yapılandırılmış yolu, eklentiyi dinlemesi için bilgilendiren mevcut URI yolu ile karşılaştıracağız. onPageInitialized Etkinlik.

Rastgele Sayfa Görüntüleme

Aşağıdaki yöntemle kodu kullanarak rastgele sayfayı görüntüleyebilirsiniz -

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();
      }
   }
}

Kodda gösterildiği gibi,

  • Taksonomi nesnesini değişkene atayın $taxonomy_map.

  • Eklenti yapılandırmasından yapılandırılmış sınıflandırmayı kullanan filtre dizisini alın confignesne. Öğeyi şu şekilde kullanıyoruzcategory : blog.

  • Kullanıyoruz collection rastgele sayfayı $collection. Filtreyle eşleşen sayfayı ekle$collection değişken.

  • Geçerli sayfa nesnesinin ayarını kaldırın ve geçerli sayfayı koleksiyonda rastgele sayfa olarak görüntülenecek şekilde ayarlayın.

Son olarak, aşağıda gösterildiği gibi rastgele bir sayfa görüntülemek için eklentinin tam kodunu göreceğiz -

<?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();
         }
      }
   }
}

Tarayıcınızı açın ve aşağıdaki ekran görüntüsünde gösterildiği gibi rastgele sayfayı görmek için localhost / klasör_adı / random yazın -