Joomla! 1.5 için basit bir bileşen oluşturmak - Bölüm 2

Joomla! 1.5 için basit bir bileşen oluşturmak isimli dersimize kaldığımız yerden devam edelim.

Joomla! 1.5 için basit bir bileşen oluşturmak isimli dersimize kaldığımız yerden devam edelim.

Joomla! 1.5 ile yaptığımız basit bileşenimizi geliştirmeye devam edelim. Bu yazımda bileşenimize bir model ekleyeceğiz. Yaptığımız ilk bileşen Joomla! nın MVC (model-view-controller) yapısına uymuyordu, çünkü sadece controller ve view kısımlarından oluşmuştu. Şimdi ise bileşenimize model kısmını da ekleyerek MVC yapısına uygun hale getireceğiz.

Joomla! çekirdek çerçevesi içerisinde modeller için isim tanımlası yaparken sınıf ismi, bileşenin ismi ile başlar, daha sonra model ve ondan sonra da sınıfın ismi gelir. Bizim bu bileşen örneğimizde model ismi bu durumda "MerhabaModelMerhaba" şeklinde olacaktır. Modelimizin tek bir hareket seçeneği var o da karşılama mesajını getirmek. Bu metodumuza karsilamaGetir() diyeceğiz. Bu metodumuz bize cevap olarak "Cümleten Merhaba" yazısını getirecek. Oluşturacağımız dosya site/models/merhaba.php olacaktır.

merhaba.php:


<?php 

// Direkt erişimi engelleyelim

defined'_JEXEC' ) or die( 'Restricted access' );

 

jimport'joomla.application.component.model' );

 

/**

 * Merhaba Modelimiz

 */

class MerhabaModelMerhaba extends JModel

{

    
/**

    * Karşılamayı alalım

    */

    
function karsilamaGetir()

    {

        return 
'Cümleten Merhaba';

    }

?>



Koddaki jimport fonksiyonunu geçmiş yazılarımda bahsetmiştim. jimport fonksiyonu ile JModel sınıfını alıyoruz.

Şimdi bileşenimize model eklediğimize göre view yapısında bazı değişiklikler yapmamız gerekiyor. Joomla! çerçeve yapısının bir özelliği olarak aynı isimdeki model ile view sınıfları controller tarafından otomatik olarak birleştirilir. Yani model içerisindeki veriler otomatik olarak view kısmına gönderilir. Bunu sağlayan da JView::getModel() metodumuzdur. Eğer model ve view sınıfları farklıysa bu durumda farklı yollara başvurmamız gerekiyor. Bu konuyu daha sonra anlatacağım.

İlk yaptığımız bileşenimizdeki view.html.php dosyamızda şöyle bir satır vardı;


$karsilama = "Cümleten Merhaba!";


Bu satırı şöyle değiştiriyoruz;

$model = &$this->getModel();

$karsilama= $model->karsilamaGetir();


Sonuçta view.html.php dosyamız şöyle oluyor;

<?php 

// Direkt erişimi engelleyelim

 

defined'_JEXEC' ) or die( 'Restricted access' );

 

jimport'joomla.application.component.view');

 

/**

 * Merhaba bileşenimiz için HTML View sınıfı  

 */

 

class MerhabaViewMerhaba extends JView

{

    function 
display($tpl null)

    {

        
$model = &$this->getModel();

        
$karsilama $model->karsilamaGetir();

        
$this->assignRef'karsilama'$karsilama );

 

        
parent::display($tpl);

    }

?>



merhaba.xml dosyamızı yeni eklediğimiz models/merhaba.php dosyasını da ekleyerek güncelliyoruz.

merhaba.xml:


xml version="1.0" encoding="utf-8"?>

<install type="component" version="1.5.0">

 <name>Merhaba</name>

 <!-- Aşağıdaki elementler isteğe bağlıdır. Bileşen hakkında bilgi verirler. -->

 <creationdate>2010-02-10</creationdate>

 <author>Soner Ekici</author>

 <authoremail>pisdoktor@orneksite.com</authoremail>

 <authorurl>http://www.orneksite.com</authorurl>

 <copyright>Copyright Bilgisi</copyright>

 <license>Lisans Bilgisi</license>

 <!--  Sürüm bilgisi veritabanındaki components tablosuna kaydedilecektir -->

 <version>1.1</version>

 <!-- Açıklama isteğe bağlıdır -->

 <description>Bileşenin açıklaması...</description>

 

 <!-- Site Ana Dosya Kopyalama Bölümü -->

 <!-- folder etiketi hakkında: Bu etiket bileşenimizin paket dosyası içerisinde

neredeki dosyaların sitemizin ön yüzüne aktarılacağını tanımlar. Bizim bileşen

örneğimizde paketimizdeki /site/ klasöründen aktarılacak -->

 <files folder="site">

  <filename>controller.php</filename>

  <filename>merhaba.php</filename>

  <filename>index.html</filename>

  <filename>views/index.html</filename>

  <filename>views/merhaba/index.html</filename>

  <filename>views/merhaba/view.html.php</filename>

  <filename>views/merhaba/tmpl/default.php</filename>

  <filename>views/merhaba/tmpl/index.html</filename>

  <filename>models/merhaba.php</filename>

  <filename>models/index.html</filename>

 </files>

 

 <administration>

  <!-- Yönetim Menüsü Bölümü -->

  <menu>Merhaba!</menu>

 

  <!-- Yönetim Ana Dosya Kopyalama Bölümü -->

  <files folder="admin">

   <filename>merhaba.php</filename>

   <filename>index.html</filename>

  </files>

 

 </administration>

</install>



Artık elimizde Joomla! MVC yapısına uygun basit bir bileşenimiz var.

  • Etiketler;
Soner Ekici
1981 yılında Denizli' de doğdu. 1999 yılında başladığı PHP ve MySQL çalışmalarına 2004 yılında Joomla! ile devam etti. Joomla! için çeşitli eklentiler kodladı. <p>Halen Joomla! için aktif olarak eklentiler kodlayan Soner Ekici Afyonkarahisar ili Şuhut ilçesinde pratisyen hekim olarak görev yapmaktadır.
Yorum Yaz

Yorum yazabilmek için üye girişi yapmanız gerekiyor!

Yukarı Git