Login

Çalışmalarım

Nasıl Joomla Modülü Yapılır?

Nasıl Joomla Modülü Yapılır?

Joomla 1.7 ve daha üst sürümlerde modülü nas?l yaz?ld???n? ufak bir örnekle ö?renmek isteyenler için ba?lang?ç seviyesinde bir yaz?

Joomla'nın her eklentisi yani extension dosya yapısı olarak 2+1 temel parçadan oluşur. Bunlar sırası ile şunlardır

  1. Eklenti bilgilerinin tutulduğu eklenti.xml
  2. Eklentinin çalışmaya başladığı eklenti.php
  3. [+1] Eklentinin ihtiyaç duyacağı diğer yardımcı klasör ve dosyalar. Bu kısım mecburu değildir

Yazı tarafımca yazılmıştır, kaynak berlitme amaçlı bu sayfanın adresi belirtilirse, kullanmanızda sorun oluşmayacaktır.

Bu yazı her ne kadar Joomla 1.7 için olsa da 1.5 sürümü ile mantık aynıdır. Eklenti bilgilerinin bulunduğu XML dosyasında bazı düğümler farklıdır sadece.

Çalışma (mod_modulum.zip) dosyasını indirmek için buraya tıklayın. Böylece ana hatlar hakkında daha iyi bilgi sahibi olabilirsiniz. Ayrıca bu dosya kurulum dosyasıdır. Joomla'nın yönetim sayfasından kurabilirsiniz.

Joomla Eklenti XML Dosyası Nedir?

*.XML (eklenti.xml ve ya mod_modulum.xml) uzantılı bu dosyada aşağıda geçen kavramları ve daha fazlasını barınmaktadır

  • Eklentinin adı
  • Eklentinin sürümü
  • Yazarı
  • Lisans bilgisi
  • Geliştirilen hedef Joomla sürümü
  • Eklentinin ihtiyaç duyduğu dosya ve klasörler
  • Dil dosyaları
  • Yönetim panelinde yöneticinin Modül Soneki gibi girebileceği girdi alanları

Bu dosya olmak zorundadır aksi halinde modül kurulamaz ve çalıştırılamaz. Aşağıda içinde hiç bir bilgi barındırmayan standart eklenti xml tanımlaması mevcuttur.

<?xml version="1.0" encoding="utf-8"?>
<extension type="module" version="1.7.0" client="site" method="upgrade"> <!-- Eklenti adı, sürümü gibi bilgiler buraya yazılacak --> <!-- Eklentide kullanılacak dosyalar buraya yazılacak --> <!-- Eğer eklentide dil dosyası dosyaları olacaksa buraya yazılacak --> <!-- Eğer eklentide yönetim sayfasında kullanılması için girdi alanları olacaksa buraya yazılacak -->
</extension>

extension düğümündeki type ile eklentinin modül olduğu belirtiliyor, version ile hedef alınan Joomla sürümünü, client ile sitenin ön tarafında çalışacağını yani bir yönetici sayfası eklentisi olmadığı belirtiliyor, method ile de eğer eklenti tekrar kurulmaya çalışırsa yada yenilenmek istenirse yeni dosyalar ile güncellenmesi istendiği belirtiliyor.

İşlem 1: Eklenti Bilgileri

Bu aşamada bilgi amaçlı eklenti-adı, sürümü gibi eklenti bilgileri tanımlanacak.

<?xml version="1.0" encoding="utf-8"?>
<extension type="module" version="1.7.0" client="site" method="upgrade"> <name>Joomla Modülüm</name>
<creationDate>06/01/2012</creationDate>
<author>Murat TAMCI</author>
<copyright>(C) 2012 themt.co</copyright>
<license>http://www.gnu.org/copyleft/gpl.html GNU/GPL</license>
<authorEmail>This email address is being protected from spambots. You need JavaScript enabled to view it.</authorEmail>
<authorUrl>themt.co</authorUrl>
<version>1.0.0</version>
<description>Bu benim ilk Joomla 1.7 modülüm</description>

</extension>

Düğümlerin açıklaması aşağıda yapılmıştır

  • name eklenti adını tutmaktadır
  • creationDate eklenti yazım tarihini tutmaktadır
  • author eklentiyi sahibini yani geliştiren bilgisini tutmaktadır
  • copyright lisans bilgisini tutmaktadır
  • authorEmail ve authorUrl eklenti için bir web sitesi ve iletişim kurulabilecek bir e-posta adresini tutmaktadır
  • version eklenti sürümünü tutmaktadır
  • description eklenti için bir açıklama tutmaktadır

İşlem 2: Eklenti Dosyaları

Bu aşamada eklenti için gereken dosyalar tanımlanacak.

<?xml version="1.0" encoding="utf-8"?>
<extension type="module" version="1.7.0" client="site" method="upgrade"> <name>Joomla Modülüm</name>
<!-- ...ve diğer bilgiler! Yerden kazanmak için kaldırdım --> <description>Bu benim ilk Joomla 1.7 modülüm</description> <files>
<filename module="mod_modulum">mod_modulum.php</filename>
<filename module="mod_modulum">index.html</filename>
</files>

</extension>

Eklenti için gereken dosyaların tanımlanması için files adında bir düğüm gerekmekte. Her dosya için bu düğüm içinde filename adında bir düğüm yazıyoruz. filesname düğümündaki mod_modulum alanı, modulde kullanılacak dosyaların mod_modulum içinde tutumlası gerektiğini bildirmektedir. Eklentiyi kurmak istediğinizde mod_modulum isminde bir klasör oluşturulacak ve bu dosyalar bu klasöre taşınacak

mod_modulum.php tanımı, eklentinin çalışacağı dosyadır.

index.html tanımı, mod_modulum klasörü içindeki index.html dosyası için kullanılmaktadır. Bu dosya boştur ve güvenlik amaçlı vardır. Herhangi bir ziyaretçinin bu dizini görüntülemek istemesi halinde boş bir sayfayla karşılaşmasını amaçlamaktadır.

İşlem 3: Eklenti Dil Dosyaları

Bu aşamada eklenti için gereken dil dosyası tanımlanacak. Eklentilerde dil dosyaları olmak zorunda değildir.

<?xml version="1.0" encoding="utf-8"?>
<extension type="module" version="1.7.0" client="site" method="upgrade"> <name>Joomla Modülüm</name>
<!-- ...ve diğer bilgiler burada olacak yer tutmaması için kaldırdım --> <description>Bu benim ilk Joomla 1.7 modülüm</description> <files>
<!-- ...ve diğer bilgiler burada olacak yer tutmaması için kaldırdım -->
</files> <languages folder="language">
<language tag="tr-TR">tr-TR.mod_modulum.ini</language>
</languages>

</extension>

Files düğümünde olduğu gibi eklenti için gereken dil dosyalarının tanımlanması için languages adında bir düğüm gerekmektedir. Her dil için bu düğüm içinde language adında bir düğüm olmalıdır. language düğümündeki tag alanı hedeflenen dili bildirir.

Eklentiyi kurduğunuzda tr-TR.mod_modulum.ini dosyası kurulum tarafından otomatik olarak Joomla'nın kök dizinindeki languages/tr-TR dizini için taşınacaktır.

Dil Dosyası

Dil dosyasının içi aşağıda görüldüğü gibi olacaktır. Dil dosyaları UTF-8 karakter setinde ve BOM olmadan kaydedilmelidir.

;Bu bir yorum satırıdır ve yazılım açısından hiç bir amacı olmayıp dosyayı açana bilgi vermektedir.
;Joomla 1.7 Modülüm
;Sürüm 1.0.0 | Tarih 06/01/2012 
;Copyright (C) 2011 Murat TAMCI. All rights reserved.
;Lisans bilgisi...

MOD_MODULUM_MESAJ="Mesaj"
MOD_MODULUM_MESAJ_ACIKLAMA="Modül çalıştığında görünmesini istediğiniz mesajı giriniz"

Dosyanın ilk başlarındaki ; (noktalı virgül) karakteri ile başlayan satırlar Joomla tarafından yorumlanmazlar. Dil dosyaların mekanizması aşağıdaki gibidir

ANAHTAR="Değer"

Bu durumda, eklenti bilgilerinin tutulduğu mod_modulum.xml dosyasında veya eklentinin çalıştığı mod_modulum.php dosyasında doğru teknikle ANAHTAR kullanılırsa, o kısım Joomla tarafından otomatik olarak " (çift tırnak) içindeki "Değer" ile değiştirilecektir. Doğru teknikle ile ne demek istediğimi yazının ileri kısımlarında yeri geldiğinde açıklayacağım.

İşlem 4: Eklenti Parametereleri (Girdi alanları)

Bu aşamada modülü daha interaktif yapacağız. Böylece yönetim sayfasında modül yönetilmek istediğinde text (metin), list (liste kurusu), checkbox (çentik kutusu) gibi girdi alanları görülebilecek. İşlemden sonra sonuç aşağıdaki resimdeki gibi olacaktır



Girdi alanları


Bu girdi alanları eklentinin ana dosyası olan mod_modulum.php içinde kullanılabilecek.

<?xml version="1.0" encoding="utf-8"?>
<extension type="module" version="1.7.0" client="site" method="upgrade"> <!-- Eklenti adı, sürümü gibi bilgiler buraya yazılacak --> <!-- Eklentide kullanılacak dosyalar buraya yazılacak --> <languages folder="language">
<language tag="tr-TR">tr-TR.mod_modulum.ini</language>
</languages> <!-- Ayarlar -->
<config>
<!-- Parametreler -->
<fields name="params">
<!-- Temel girdiler için girdi grubu -->
<fieldset name="basic">
<!-- Bir metin türünde girdi alanı-->
<field type="text" name="mesaj" default="Merhaba dünya" label="MOD_MODULUM_MESAJ" description="MOD_MODULUM_MESAJ_ACIKLAMA" />
</fieldset>
</fields>
</config>

</extension>

config düğümünün açıklamasına gerek duymuyorum, <fields name="params"> düğümü tüm parameter (girdi alanları) ile ilgili düğümlerin tutulduğu kök düğümdür. <fieldset> düğümü ortak özellikler taşıyan girdileri gruplamak için kullanılır. Bu düğümdeki name alanı grubun adıdır ve buradaki basic değeri, modülün temel özellikerinin tutulduğu gruptur. Burada en çok bilinen ve sık kullanılan moduleclass_sfx (modül soneki) gibi temel girdi alanları bulunur ama bulunmak zorunda değildir.

Ayrıca siz aşağıda olduğu gibi kendi gruplarınızı oluşturabilirsiniz.

 
	....
	<!-- Ayarlar -->
<config>
<!-- Parametreler -->
<fields name="params">
<!-- Temel girdiler için girdi grubu -->
<fieldset name="basic">
<!-- Bir metin türünde girdi alanı-->
<field type="text" name="mesaj" default="Merhaba dünya" label="MOD_MODULUM_MESAJ" description="MOD_MODULUM_MESAJ_ACIKLAMA" />
</fieldset> <!-- Resim işlemleri için girdi grubu -->
<fieldset name="Resim İşlemleri">
<!-- Farklı türde girdi alanları buraya yazılacak -->
</fieldset>

</fields>
</config> ...

Aşağıda field düğümündeki alanlar açıklanmıştır.

 <field type="text" name="mesaj" default="Merhaba dünya" label="MOD_MODULUM_MESAJ" description="MOD_MODULUM_MESAJ_ACIKLAMA"  />
  • type alanı, girdi alanının türünü belirlemek için kullanılır. Burada text türü kullanılmıştır ayrıca seçim kutusu (radio button), seçim listesi (list box) gibi alanlar belirtilebilir. Bazı Joomla parametre türleri aşağıda Parametre Türleri başlığı altında açıklanmıştır. Diğer tüm türler için buraya tıklayabilirsiniz!
  • name alanı, girdi için bir isim oluşturur ve benzersiz olmalıdır. mod_modulum.php dosyasında name alanındaki isim ile çağırır ve içindeki değeri alabilirsiniz.
  • default alanı, girdi için varsayılan bir değer tanımlar. Eklenti ilk kurulduğunda yada girdi boş bırakıldığında bu değer gösterilir
  • label alanı, girdinin solunda girdinin ne için olacağını bildiren bir yazı yazılmasını sağlar
  • description alanı, yönetim sayfasında fareniz ile label ile gösterilen alanın üzerine gelirseniz bir kutu belirir. Bu kutu girdi alanı hakkında açıklama sunar.

Dikkatiniz çekmiş olabilir label ve description alanlarında MOD_MODULUM_MESAJ ve MOD_MODULUM_MESAJ_ACIKLAMA kullanıldı. Buraya direk birşeyler yazılabilirdi. Fakat biz dil desteği sağlamak için dil dosyası içindeki ANAHTARları kullandık. Böylece o kısımlar Joomla tarafından otomatik olarak dil dosyasındaki anahtarlar karşısındaki değerler ile değişecektir. Bu tür bir yapı aşağıdaki gibi bir çok alanda kullanılabilir.

<?xml version="1.0" encoding="utf-8"?>
<extension type="module" version="1.7.0" client="site" method="upgrade"> <name>MOD_MODULUM_ISIM</name>
...
<description>MOD_MODULUM_ACIKLAMA</description> ...
</extension>

Parametre Türleri

  • text metin girebileceğiniz bir alan tanımlar ve tek satırdır
  • texarea metin girebileceğiniz bir alan tanımlar ve çoklu satırdır
  • radio yuvarlak şekilde birçok seçim arasından sadece birini seçebileceğiniz alan tanımlar.
  • list aşağı açılır liste şeklinde birçok seçim arasında sadece birini (veya birden fazla) seçebileceğiniz alan tanımlar.

Joomla Eklenti PHP Dosyası Nedir?

*.PHP (eklenti.php ve ya mod_modulum.php) uzantılı bu dosyada eklentinin çalıştırılacağı ana dosyadır ve aşağıda gösterildiği gibi olacaktır.

<?php
/**
 * Bu bir yorum satırıdır ve yazılım açısından hiç bir amacı olmayıp dosyayı açana bilgi vermektedir.
 * Joomla 1.7 Modülüm
 * Sürüm 1.0.0 | Tarih 06/01/2012 
 * Copyright (C) 2011 Murat TAMCI. All rights reserved.
 * Lisans bilgisi...
 */

// Bu php dosyasına direk erişim olması halinde çalışmayı durdurur. Böylece sadece Joomla içinde çalışması sağlanır
defined('_JEXEC') or die;

// Eklentinin kodları buraya yazılacak

Bu haliyle eklenti çalıştığında hiç bir işlem yapmadığı için bir çıktı olmayacaktır. Aşağıdaki değişiklikleri yapıp eklentiye işlev katalım

<?php
/**
 * Bu bir yorum satırıdır ve yazılım açısından hiç bir amacı olmayıp dosyayı açana bilgi vermektedir.
 * Joomla 1.7 Modülüm
 * Sürüm 1.0.0 | Tarih 06/01/2012 
 * Copyright (C) 2011 Murat TAMCI. All rights reserved.
 * Lisans bilgisi...
 */

// Bu php dosyasına direk erişim olması halinde çalışmayı durdurur. Böylece sadece Joomla içinde çalışması sağlanır
defined('_JEXEC') or die;
?>
<div class="modulum<?php echo $params->get(moduleclass_sfx) ?>">
<?php echo $params->get('mesaj');?>
</div>

Aşağıdaki div düğümünde class içinde bir php kodu mevcut. Bu kodda modül soneki (moduleclass_sfx) değeri echo ile yazıldı. Görüldüğü gibi modül girdi bilgilerini $params nesnesinin get fonksiyonu ile almak mumkün

 <div class="modulum<?php echo $params->get(moduleclass_sfx) ?>">

Aşağıdaki php kodunda ise modülümüzün mesaj girdisini aldık ve yazdırdık.

 <?php echo $params->get('mesaj');?>

Eklenti Kurulum Dosyası

Şuana kadar mod_modulum.xml, mod_modulum.php ve tr-TR.mod_modulum.ini dosyası oluşturduk ayrıca index.html isimli boş bir metin dosyası oluşturun. Tüm bu dosyaları UTF-8 karakter setinde, BOM olmadan kaydedin.

Yükleme ve kurulum işlemini kolaylaştırmak için tüm bu dosyaları mod_modulum.zip şeklinde *.ZIP formatında arşivleyebilirsiniz. Böylece kurulum dosyası tek bir dosya haline gelecektir, boyutu küçülecektir ve Joomla yönetim sayfasında kurulum işlemi basitleşecektir.

Kurulum (mod_modulum.zip) dosyasını indirmek için buraya tıklayın. Böylece ana hatlar hakkında daha iyi bilgi sahibi olabilirsiniz.

Yazı tarafımca yazılmıştır, kaynak berlitme amaçlı bu sayfanın adresi belirtilirse, kullanmanızda sorun oluşmayacaktır.