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

Joomla! 1.5 için hazırladığımız basit bileşenimizi kodlamaya devam ediyoruz.

Joomla! 1.5 ile basit bir bileşen hazırlamak yazı dizimizin bu kısmında en son hazırladığımız bileşenimizi veritabanıyla ilişkilendirip artık verilerimizi veritabanımızdaki bileşenimizin tablosundan alacağız. Baştan söylemek gerekirse eğer SQL konusunda bilginiz yoksa öncelikle MySQL hakkında bilgi sahibi olmanızı tavsiye ederim. Şimdi bileşenimizin model kısmı ile çalışıp veriyi kodlama ile değil de veritabanından alacağız. Bu yazımızda ayrıca Joomla! 1.5 ile veritabanı ilişkisini sağlayan JDatabase sınıfını da biraz görmüş olacağız.

Modelimiz hatırlarsanız karsilamaGetir() metoduyla kodladığımız bir veriyi gönderiyordu. Şimdi ise verileri Joomla! sitemizin veritabanından alacağız. Öncelikle veritabanımızla bağlantı sağlamamız gerekiyor. Bunun için;


$db =& JFactory::getDBO();



kodunu kullanacağız. JFactory sınıfı sabit bir sınıf olup içerisinde Joomla! ile ilgili birçok nesneyi kolayca almamızı sağlayan metodlar vardır. getDBO() fonksiyonu ise (ingilizce açılımı get Database Object) veritabanı nesnesini almak anlamına geliyor.

Veritabanı nesnemizi aldığımıza göre yapacağımız 2 işlem var.
1. si veritabanımızdaki tablomuza ait sql sorgusunu oluşturmak.
2. si oluşturduğumuz sorgudan istediğimiz veriyi almak.

Bunun için karsilamaGetir() fonksiyonumuzu şu şekilde değiştiriyoruz.


function karsilamaGetir()

{

   $db =& JFactory::getDBO();

 

   $query = 'SELECT karsilama FROM #__merhaba';

   $db->setQuery( $query );

   $karsilama = $db->loadResult();

 

   return $karsilama;

}



#__merhaba veritabanımızdaki tablomuzun adı olup #__ kısmı ise Joomla! yı kurarken kullandığımız tablo önekini simgelemektedir. setQuery() fonksiyonu ile sorgumuzu çalıştırıyoruz. loadResult() fonksiyonu ile de tablomuzun ilk satırındaki ilk alanı alıyoruz. JDatabase sınıfındaki daha fazla load fonksiyonu için ilerleyen yazılarımı takip etmenizi tavsiye ederim.

Bileşenimizin kullanacağı veritabanı tablolarını oluşturmaya başlayalım. İki farklı sql sorgusu oluşturmamız gerekiyor. Birincisi bileşeni yüklerken ikincisi ise bileşeni kaldırırken kullanılacak olan sql sorgularımızı .sql uzantılı dosyalara kaydetmemiz gerekiyor. İlk önce yükleme sorgusunu oluşturalım;

install.sql:


DROP TABLE IF EXISTS `#__merhaba`;

 

CREATE TABLE `#__merhaba` (

  `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,

  `karsilama` VARCHAR(25) NOT NULL,

  PRIMARY KEY  (`id`)

) ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;

 

INSERT INTO `#__merhaba` (`karsilama`) VALUES ('Cümleten Merhaba'), ('Selamun Aleykum'), ('Have a good day');


Şimdi de kaldırma sorgusunu oluşturalım;

uninstall.sql:

DROP TABLE IF EXISTS `#__merhaba`;


Yeni eklediğimiz dosyalar ile birlikte merhaba.xml dosyamızı tekrar düzenleyelim.

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.2</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>

<install>

  <sql>

    <file charset="utf8" driver="mysql">install.sql</file>

  </sql>

 </install>

 <uninstall>

  <sql>

    <file charset="utf8" driver="mysql">uninstall.sql</file>

  </sql>

 </uninstall>

 <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>

   <filename>install.sql</filename>

   <filename>uninstall.sql</filename>

  </files>

 </administration>

</install>



Artık bileşenimizi veritabanımızla ilişkilendirdik. Böylece Joomla! çerçeve MVC sınıfları ve JDatabase sınıfı ile çalışan bir bileşenimiz oldu.

  • 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