Yeni Başlayanlar için Drupal

drupal-logo

Drupal için kısaca bir CMS ve Framework diyebiliriz. Sadece Drupal’i kurarak tam donanımlı bir websitesine sahip olma şansınız olduğu gibi, ek modüllerle sitenizi veya uygulamanızı geliştirebilirsiniz de.

Drupal’de modül geliştirmek için tamamiyle “hook” lardan faydalanıyoruz. Örneğin; sayfa yüklenmeden önce yapmak istediğimiz işlemler için “hook_preprocess” fonksiyonundan faydalanabiliriz.

Örnek modülümüzü geliştirmek için öncelikle aşağıdaki gibi klasör ve dosyalarımızı oluşturuyoruz:

/sites/all/modules/custom/testmodule/
/sites/all/modules/custom/testmodule/testmodule.info
/sites/all/modules/custom/testmodule/testmodule.module
/sites/all/modules/custom/testmodule/testmodule.css
/sites/all/modules/custom/testmodule/testmodule.js

.info dosyası, modülümüze ait bilgileri içerir. Modül ismi, açıklaması, versiyonu, yüklenecek stil dosyaları ve scriptler gibi bilgileri içeririr. Test modülümüzün info dosyası şu şekildedir:

name = Test Module
description = Drupal modülü geliştirmek
core = 7.x
package = Custom
version = "7.x-1.0"

stylesheets[all][] = css/testmodule.css
scripts[] = js/testmodule.js

.module dosyası ise php kodlarımızı ve modülümüzün fonksiyonlarını içerecek olan dosyadır. Daha önce de bahsettiğim gibi modülü geliştirmek için “hook“lardan faydalanacağız. İlk önce bir URL’de modülü çalıştırmak için “hook_menu“den faydalanacağız.

/**
* Implements hook_menu()
*/
function testmodule_menu() {
  $items = array();

  $items['testmenu'] = array(
    'title' => t('Test Modül Sayfası'),
    'page callback' => '_testmodule_page',
    'access arguments' => array('access content'),
    'type' => MENU_CALLBACK,
  );

  return $items;
}

title sayfa başlığı, page callback sayfa çağırıldı zaman içeriği oluşturacak olan fonksiyon, access arguments sayfa erişim izni ile ilgili parametreler ve type sayfamızın türünü ifade eder. type parametresine MENU_CALLBACK değerini vererek, sayfanın fonksiyon ile oluşturulacağını belirtmiş oluyoruz.

Daha sonra sayfamızı oluşturan fonksiyonu yazalım:

function _testmodule_page() {
  $rows = array();
  $rows[0] = array('browser' => 'Chrome', 'version' => '39', 'OS' => 'MacOS');
  $rows[1] = array('browser' => 'Firefox', 'version' => '12', 'OS' => 'Linux');
  $rows[2] = array('browser' => 'Opera', 'version' => '5', 'OS' => 'Win8');

  return theme('testmodule_page', array('browsers' => $rows));
}

function testmodule_theme() {
  return array(
    'testmodule_page' => array(
    'template' => 'templates/testmodule-page',
    'arguments' => array('browsers' => NULL),
    ),
  );
}

_testmodule_page fonksiyonu ile sayfamızın mantıksal kısmını hallettik. Burada veri ile ilgili her türlü işlemi yapabilirsiniz. Ben basitçe bir diziye tarayıcı isimlerini attım. Daha sonra görmüş olduğunuz testmodule_theme fonksiyonu ile veriyi templates/testmodule-page.php şablonunda göstereceğimizi belirttik. Şimdi bu dosyayı yaratmalısınız ve içeriği şu şekilde olmalı:

<table>
  <thead>
    <tr>
      <th>Tarayıcı</th>
      <th>Versiyon</th>
      <th>İşletim Sistemi</th>
    </tr>
  </thead>
  <tbody>
  <?php for($i = 0; $i < count($browsers); $i++): ?>
    <tr>
      <td><?php print $browsers[$i]['browser'] ?> </td>
      <td><?php print $browsers[$i]['version'] ?> </td>
      <td><?php print $browsers[$i]['OS'] ?> </td>
    </tr>
  <?php endfor; ?>
  </tbody>
</table>

Şimdi tarayıcınızdan /testmenu (ki bunu hook_menu içerisinde tanımlamıştık) adresine gittiğiniz zaman, oluşturduğunuz içeriğin görüntülendiğini göreceksiniz. Eğer içeriği göremiyorsanız, adımlarda bir eksiklik yapmış olmalısınız. Tekrar kontrol edip deneyebilirsiniz.

Gördüğünüz üzere Drupal son derece esnek ancak öğrenmesi biraz zaman alacak bir yapıya sahip. Öğrendiğiz zaman ise içerik yönetim konusunda başka hiçbir araca ihtiyaç duymayacaksınız.

Kendinizi drupal konusunda geliştirmek için buradaki kaynaklardan faydalanabilir ve bu blogu takip etmeye devam edebilirsiniz.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>