-
Joomla Bileşen Yapımı
13 Haziran 2009 2 yorumJoomla ile hali hazirda mevcut olmayan bir bilesenle, çözüm bulamadiginiz bir sorunu, kendi basiniza çözüm getirmek istiyorsunuz. Diyelim ki, web sitenizden kitap satisi yapan bir firmaniz var ve mevcut kitaplarinizi web sitenizde yönetici arayüzünde bakimi yapilan bir liste ile göstermek istiyorsunuz. Ya da birden fazla subeniz var ise bunlarin bir listesini hazirlamak istiyorsunuz. Web sitenizin islevlerini kendiniz yeni bilesen (component) , modül ya da eklentiler ile gelistirme olanagina sahipsiniz. Baslangiç asamasinda olanlar için bunun en zor gözüken kismi PHP kodu yazmak olsa da , bu da aslinda oldukça basittir. Sadece temel programlama bilgilerine sahip olmaniz kendi bilesenlerinizi yaratmaniza yeter.
Ilk Örnek Bilesen “Merhaba”
Detayli bir bileseni beraberce gelistirmeye baslamadan önce, çok basit bir bilesen “Merhaba” yi hep beraber inceleyecegiz. Örnek bileseni buradan indirebilirsiniz. Böylelikle bilesenlerin genel yapilarini fazla karmasiklastirmadan sizlere göstermis olacagiz. Joomla önyüz ve yönetici arayüzüleri bilesenleri olmak üzere iki ayri bilesen türüne sahiptir. Ön yüz bilesenleri web sitenizin ön yüzünde gösterilirler. Yönetici bilesenleri ise adinda anlasilacagi gibi arkayüz için gelistirilirler ve çogunlukla da önyüz bilesenlerinin yönetimi içindirler. Web sitenizdeki bir ziyaretçi bir bileseni , asagidaki örnekte oldugu gibi bir adresten taniyabilir.
Örnegin , http:/websiteniz.com/index.php?option=com_contact URL adresi com_contact önyüz bilesenini çagiririr.
Eger kendi bilgisayariniza kurmus oldugunuz Joomla sitenizin bulundugu [KurulumDizini]/components dizinine gözatarsaniz, joomla ile standart olarak gelen tüm bilesenleri görebilirsiniz. Her bilesenin bulundugu dizinin altinda, bilesenin gelismisligine ve karmasikligina bagli olarak Model , View ve Controller alt dizinleri yer alir.
Her bilesen için kendisine ait bir dizin olmalidir. Bizim de ilk bilesenemizi “Merhaba” için bir dizin olusturmamiz gerekmektedir.Joomla ile bir bilesenin nasil isletildigini basitçe asagidaki adimlari sirasiyla uygulayarak gerçeklestirir :
1. URL adresinden /index.php?option=com_merhaba alinir.
2. com_merhaba adinda bilesen aramaya baslar
3. com_merhaba adinda bir dizin arar.
4. Eger dizin bulundu ise, merhaba.php adindaki dosyayi arar.
5. merhaba.php dosyasi islenir.
merhaba.php bilesenin çalistirilmasi için gerekli ilk baslangiç noktasidir. Ancak dogru olarak bir bilesenin çalismasi için baska dosyalara da ihtiyaç vardir. Asagida sirasiyla gerekli dosyalar ve kisa açiklamalari yer almaktadir:
1. merhaba.php- bilesenin ilk baslangiç dosyasidir.
2. controller – çalistirilma islemini kontrol eder
3. views/merhaba/view.html.php – Temaya gönderilecek görünüs ile ilgili verilerdir.
4. views/merhaba/tmpl/default.php – standart tema
5. merhaba.xml . kurulum ile ilgili islemleri gerçeklestirecek dosyadir.Simdi söz konusu dosyalarin yapilarini daha iyi taniyabilmeniz için önce com_merhaba.zip dosyasini bilgisayariniza indirin ve joomla yönetici bölümünden kurulumunu yapin.
Simdi ilk merhaba.php dosyasinin içerigine bakalim (/component/com_merhaba/merhaba.php)
Eger internet tarayicinizin adres satirina asagidaki URL adresini girerseniz, karsiniza “Merhaba JoomKitap okurlari!” yazisi gelecektir.
http://localhost/joomla/index.php?option=com_merhaba&view=merhaba
Söz konusu dosyanin içerigi asagidaki gibidir :
<?php
//
dogrudan erisim engellenmistir
defined(’_JEXEC’) or
die(’Restricted access’);
// temel Controller’in
okunmasi
require_once (JPATH_COMPONENT.DS.’controller.php’);
//
diger Controller larin okunmasi
if($controller =
JRequest::getWord(’controller’)) {
$path =
JPATH_COMPONENT.DS.’controllers’.DS.$controller.’.php’;if (file_exists($path)) {
require_once $path;
} else {$controller = ”;
}
}
// Kendisine ait
Controller”in olusturulmasi
$classname =
‘MerhabaController’.$controller;
$controller = new $classname(
);
// Parametre gelip gelmedigini kontrol
et(Requests)
$controller->execute(
JRequest::getVar(’task’));
// controller icersinde tekrar
yönlendirme
$controller->redirect();
?>defined(’_JEXEC’) or die(’Restricted access’);
Ilk satir dosyanin Joomla! tarafindan mi yoksa dogrudan mi çagrilacagini belirten, bir güvenlik kontrolüdür. Dogrudan çagrilan betikler die() fonksiyonu ile hemen sonladirilirlar.require_once (JPATH_COMPONENT.DS.’controller.php’);
Ardindan ilk Controller okunur. JPATH_COMPONENT aktüel bilesen için mutlak yolu (absolute path) gösterir. DS isletim sistemine özel dizin_ayraci karakteridir. Windows, Unix ve benzeri sistemlerin aksine / yerine \ kullanir. Bu deger Joomla! tarafindan otomatik olarak yerlestirilir.
$classname = ‘MerhabaController’.$controller;
$controller = new $classname( );Simdi okunan Controller’i örneklendirip (instance), ihtiyaç duyacagimiz bir Controller yaratiyoruz. Eger sadece bir Controller’a ihtiyaç duyuyorsaniz ( çogunlukla önyüz için böyledir), o zaman asagidaki komutlari kullanabilirsiniz.
$controller = new MerhabaController();
$controller->execute( Jrequest::getVar(’task’));Bir bilesene emirler, URL üzerinden asagidaki gibi verilir.
index.php?option=com_merhaba&task=gorev (kaydet,sil, göster …)$controller->redirect();
Gerektiginde Controller istegi baska bir sayfaya yukardaki komut yardimiyla yönlendirir.Controller (/component/com_merhaba/controller.php)
Buradaki bilesen o kadar basit ki, bu nedenle Controller’in ödevi sadece birseyleri göstermekle kisitli. Bunun için herhangi bir veri modeline ihtiyacimiz yok, sadece display metodu bizim için yeterli olacaktir.
<?php jimport(’joomla.application.component.controller’);
class MerhabaController extends JController{ function display(){ parent::display(); } } ?>
Display metodu çalistirildiginda, Views’in ismini ve görünümünü olusturur. Örnegin yeni bir menü adimi ekleme adimini çagirirsaniz, bu Display metodunun sonucunu görebilirsiniz. Bizim bilesenemiz sadece varsayilan sayfa düzenini (layout) tanimliyor.View (/componenet/com_merhaba/views/merhaba/views.html.php)
Burada Standart sayfa düzeni tanimlanir.<?php
jimport( ‘joomla.application.component.view’);
class MerhabaViewMerhaba extends JView{
function display($tpl = null){
$greeting = “Merhaba Dünya!”;
$this->assignRef( ‘greeting’, $greeting );
parent::display($tpl);
}
}
?>
Görünüm-View, normalde verilere bakar, hazirlarve temaya (template) gönderir.
$greeting = “Merhaba Dünya!”;
$this->assignRef( ‘greeting’, $greeting );
parent::display($tpl);
$greeting degiskeni, bir veri sorgulamasi sonucunu da içeriyor olabilirdi. assignref metodu ile de bu degisken temaya (template) gönderilir.
parent::display($tpl);
komutu ise temayi çagirir.
Tema-Template (/component/com_merhaba/views/hallo/tmpl/)
Burada yine sadece standart tema var. Her zaman için adi default.php ‘dir ve asagidaki gibi oldukça basit bir görünüme sahiptir.
<?php defined(’_JEXEC’)or die(’Restricted access’); ?>
<?php echo $this->greeting; ?>
Sonuç
Evet web sitenizde hersey oldukça sade gözüküyor. Ama en azindan simdilik basitçe bir bilesenin genel yapisi hakkinda az çok fikir sahibi olmus oldunuz.Kurulum Paketi
Tüm dosyalar zip formatinda öncelikle sikistirilip tek bir paket haline getirilmelidir. Böylece gelistirmis oldugunuz bileseniniz yönetici arayüzünden Joomla! kurulum menüsünden de rahatlikla kurulabilir.
Bilesenin içerdigi tüm dosyalar bulunduklari dizinler ile beraber, bilesenin tanimini içeren XML dosyasi içerisinde belirtilmelidir. XML dosyamizin adi merhaba.xml ‘dir ve asagidaki gibi görünmelidir.
<?xml version=”1.0″ encoding=”utf-8″?>
<!DOCTYPE install SYSTEM “http://dev.joomla.org/xml/1.5/component-install.dtd”>
<install type=”component” version=”1.5.0″>
<name>Merhaba</name>
<creationDate>04.06.2008</creationDate>
<author>BUAY</author>
<authorEmail>info@leonba.de</authorEmail>
<authorUrl>http://joomkitap.leonba.de</authorUrl>
<copyright>Copyright Info</copyright>
<license>License Info</license>
<!– The version string is recorded in the components table –>
<version>v0.1</version>
<!– The description is optional and defaults to the name –>
<description>Merhaba test amacli olarak hazirlanmistir</description>
<!– Site Main File Copy Section –>
<files folder=”site”>
<filename>index.html</filename>
<filename>merhaba.php</filename>
<filename>controller.php</filename>
<filename>views/index.html</filename>
<filename>views/merhaba/index.html</filename>
<filename>views/merhaba/view.html.php</filename>
<filename>views/merhaba/tmpl/index.html</filename>
<filename>views/merhaba/tmpl/default.php</filename>
</files>
<administration>
<!– Administration Menu Section –>
<menu>Merhaba</menu>
<!– Administration Main File Copy Section –>
<!– Note the folder attribute: This attribute describes the folder
to copy FROM in the package to install therefore files copied
in this section are copied from /admin/ in the package –>
<files folder=”admin”>
<!– Site Main File Copy Section –>
<filename>index.html</filename>
<filename>admin.merhaba.php</filename>
</files>
</administration>
</install>
Dosyalarinizi sikistirirken dizin yapisini oldugu gibi birakmayi unutmayin.com_merhaba’yi indirmek için buraya
2 responses to “Joomla Bileşen Yapımı”

-
Hello, can you please post some more information on this topic? I would like to read more.
Yorum yap
-


GarykPatton Haziran 16th, 2009, 19:28