Drupal Modül Programlama
Drupal Modül Programlama
Diğer içerik yönetim sistemlerine (CMS) kıyasla Drupal'in çok daha yüksek bir öğrenme eğrisi vardır. Drupal kurucusu Dries Buytaert'in de dediği gibi "Bir blog oluşturmak istiyorsanız, WordPress kullanın. Wordpress yapmak istiyorsanız Drupal kullanın". Bu sözden kıyasla aşağıda Drupal'in öğrenme eğrisini benchmarks.it.unt.edu adresinde paylaşıldığı üzere mizahi şekilde açıkça görebiliriz.

Ancak kabul etmelisiniz ki mantığını kavrayabilirsek hiçbir teknolojinin zorluğu kalmaz. Dolayısıyla bugün Drupal'de ilk modülümüzü kodlayacağız. Modülümüz sadece login olmuş kullanıcıların görebileceği bir sayfa olacak.
Öncelikle C:\xampp\htdocs\[site_kök_klasörünüz]\modules klasörüne girip modülünüz için bir klasör oluşturmalısınız. Benim modül klasörümün adı ilkmodul olacak (klasör ve dosya isimlerinde Türkçe karakter kullanmayın). Klasörümüzün içine modül bilgilerini kodlayarak başlayalım. Bunun için ilkmodul klasörümüzün içine ilkmodul.info.yml dosyası oluşturalım. Ben editör olarak VsCode kullanıyorum ilkmodul klasörümüzü editör (IDE kullanabilirsiniz) üzerinden açıp aşağıda ki kodu yazalım.
name: İlk Modül
description: Modül Programlama İçin İlk Drupal 9 Modülü
type: module
core: 8.x
core_version_requirement: ^8 || ^9
package: Custom
Peki bu kod ne anlatıyor?
- name: Modül ismi
- description: Modül Açıklaması
- type: modül
- core: Drupal çekirdek sürümü
- core_versiyon_requirement: Desteklenen Drupal sürümleri
- package: Custom. İstediğiniz ismi verebilirsiniz admin panelinde gruplama kolaylığı sağlar
Ardından aynı klasörde ilkmodul.routing.yml dosyası oluşturalım ve aşağıda ki kodu yazalım.
ilkmodul.first_page:
path: 'first-page'
defaults:
_controller: '\Drupal\ilkmodul\Controller\FirstPage::privateContent'
_title: 'Merhaba İlk Modül'
requirements:
_permission: 'acces premium pages'
Peki bu kod ne anlatıyor?
Modül içerisinde yapacağımız sayfanın yönlendirmesini ilkmodul.routing.yml dosyası ile oluşturduk. path bölümünde url'ye ekleyeceğimiz sayfanın adı mevcut. controller kısmında ise sadece login olan kullanıcının sayfaları görebilmesi için php kodları yazağımız dosyanın yolunu gösterdik. Dikkat etmemiz gereken bir noktaya değinecek olursak .yml dosyaları okunurken girintileri ve çıkıntıları işler. Dolayısıyla kod biçiminiz aşağıda ki snippet gibi olmalıdır.
Devamında modül klasörümüze ilkmodul.permissions.yml dosyası oluşturalım, ve aşağıdaki kodu ekleyelim.
access premium pages:
title: 'Özel Sayfaya Erişim Yetkisi'
description: Özel Sayfalara Erişim İçin Özelleştirilmiş Yetki'
restrict access: TRUE
Artık admin panelimizde yeni bir permission alanımız var (Modülü aktif edip Cache temizledikten sonra görebilirsiniz). Login olan kullanıcıların sayfayı görebilmesi için Authenticated user kutucuğunu işaretleyip izin ayarınızı kaydedin.
Şimdi ilkmodul klasörümüzün içine src klasörü ve src klasörünün de içine Controller klasörü açalım. Controller klasörünün içine FirstPage.php dosyası oluşturalım ve içerisine aşağıda ki kodu yazalım.
<?php
namespace Drupal\ilkmodul\Controller;
use Drupal\Core\Controller\ControllerBase;
class FirstPage extends ControllerBase
{
/**
* Login olan kullanıcılar için Private sayfayı döndürür.
*
* @return array
*
*/
public function privateContent() {
$element = array( '#markup' => 'Özel Sayfa', );
return $element;
}
}
Peki bu kod ne anlatıyor?
Drupal\Core\Controller\ControllerBase kısmında hangi PHP class'ını kullanacağımızı tanımladık. FirstPage class'ı privateContent metoduna sahiptir. privateContent metodunda çıktısını HTML olarak aldığımız bir #markup objesi dizisi döndürdük. Editör üzerinde hata gözükebilir, doğru yazdığınız sürece bunu önemsemeyin. Sonra ki blog paylaşımlarımda PhpStorm üzerinden çalışacağız ve çok daha rahat bir geliştirme ortamında kod yazacağız.
Sadece giriş yapan kullanıcıya gözükecek olan sayfamız hazır. Admin panelinizde Configuration -> Performance bölümünden tüm cacheyi temizleyin (İleride bunu Drush ile nasıl programatik yapabileceğimizi öğreneceğiz). Ardından Extend bölümünden İlk Modül'ünüzü bulup kutucuğu işaretleyip Install edin.
Başarılı bir şekilde modülünüzü Drupal projenize kurduktan sonra url bölümüne localhost/[site_kök_klasörünüz]/first-page yazdığınızda admin olarak AUTH olduğunuz için sayfa size gözükecektir. Ancak gizli sekme açıp aynı url ile girmeye çalıştığınızda projenize herhangi bir rol ile giriş yapmadığınız için 404 hatası alacaksınız ve giriş yapmanız istenecek.
Sonraki blog gönderilerimde Drush kurulumundan, modül geliştirirken faydalanabileceğimiz ve süreci pratik hale çevirecek olan Drush komutlarından bahsedeceğim.
-Hakan Berat