Gökmen Korkmaz’ın Code Günlüğü
RSS ikon Email ikon Anasayfa ikon
  • Joomla Bileşen Yapımı

    13 Haziran 2009 admin 2 yorum

    Joomla 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ı” RSS ikon


    Yorum yap