Filed Under:  Joomla!, Joomla! 1.6

Basit bileşenimize site önyüzü için view eklemek

27th Ocak 2010   ·   0 Comments

Bu yazımı okumadan önce buradakini okuduğunuzu düşünüyorum.

Joomla! 1.6 framework (bundan sonra çerçeve olarak çeviriyorum) içerisinde geliştiriciler eklentilerini 3 ana parçaya ayırırlar;
1- Modeller (models): Veriyi kontrol eder.
2- Kontroller (controllers): Taskları, modellerin set ve get durumlarını ve görünümlerin neyi göstereceğini düzenler, uygulatır.
3- Görünümler (views): İçeriği kontrollerden gelen istekler doğrultusunda (error, feed, html, json, raw, xml olarak) gösterir.

Joomlanın çekirdek kodları içerisinde kontrolleri yönetmeye olanak sağlayan JController adında bir sınıf (class) vardır. Bu sınıf bileşenimizin içerisinde kullanılarak genişletilebilir bir özelliğe sahiptir.

Bileşenimizdeki site/merhaba.php (bileşenimizin ana istek dosyası) içerisine aşağıdaki kodları yerleştiriyoruz:

1
2
3
4
5
6
7
8
9
10
11
12
<?php
// Bu dosyaya direkt erişimi engelleyelim
defined('_JEXEC') or die('Restricted access');
// Joomla controller kütüphanesini alalım
jimport('joomla.application.component.controller');
// Merhaba önekiyle controller dan bir istek alalım
$controller = JController::getInstance('Merhaba');
// Request taskını uygulayalım
$controller->execute(JRequest::getCmd('task'));
// Controller tarafından ataması yapıldıysa geriye dönüş sağlayalım
$controller->redirect();
?>

JController sınıfının getInstance statik metodu bir controller oluşturur. Böylece biz yukarıdaki kod ile controller.php dosyasının kullanacağı MerhabaController adında bir controller oluşturduk.

Şimdi controller.php dosyasını oluşturalım:

1
2
3
4
5
6
7
8
9
10
11
<?php
// Bu dosyaya direkt erişimi engelleyelim
defined('_JEXEC') or die('Restricted access');
// Joomla controller kütüphanesini alalım
jimport('joomla.application.component.controller');
// JController sınıfını devralalım
class MerhabaController extends JController
{

}
?>

İstek değerleri içerisinde bir task belirtilmediği zaman JController içerisinde tanımlanmış olan display taskı varsayılan olarak kullanılır. Bu da Merhaba adında bir görünümü gösterir. Şimdi bu görünümü oluşturalım. Bunun için site klasörümüzün içerisine views adında bir klasör ve onun içerisinde merhaba adında bir klasör daha oluşturuyoruz. merhaba klasörünün içerisine de view.html.php adında bir dosya oluşturuyoruz.

site/views/merhaba/view.html.php dosyası:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
// Bu dosyaya direkt erişimi engelleyelim
defined('_JEXEC') or die('Restricted access');
// Joomla view kütüphanesini alalım
jimport('joomla.application.component.view');
// JView sınıfını devralalım
class MerhabaViewMerhaba extends JView {
        protected $msg=null;
        // JView görünüm metodunun üstüne yazdıralım
        function display($tpl = null) {
                // görünüme veriyi atayalım
                $this->msg = 'Merhabalar...';
                // Görünümü gösterelim
                parent::display($tpl);
        }
}
?>

Jview sınıfının display metodu JController sınıfının display taskı ile çağırılır. Bu metod verimizi tmpl/default.php dosyası ile gösterecektir. Dolayısıyla site/views/merhaba/ klasörünün içerisine tmpl adında bir klasör açıyoruz ve içerisine default.php adında bir dosya oluşturuyoruz.

default.php:

1
2
3
4
5
<?php
// Bu dosyaya direkt erişimi engelleyelim
defined('_JEXEC') or die('Restricted access');
?>
<h1><?php echo $this->msg; ?></h1>

Şimdi bileşenimizin dosya ve klasör hiyerarşisine tekrar bir göz atarsak:
- merhaba.xml
- site/index.html
- site/merhaba.php
- site/controller.php
- site/views/index.html
- site/views/merhaba/index.html
- site/views/merhaba/view.html.php
- site/views/merhaba/tmpl/index.html
- site/views/merhaba/tmpl/default.php
- admin/index.html
- admin/merhaba.php

Tabiki yeni eklenen dosyalarımız olduğu için merhaba.xml dosyamızı da güncelliyoruz:

merhaba.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
< ?xml version="1.0" encoding="utf-8"?>
<extension type="component" version="1.6.0" method="upgrade">
        <name>Merhaba</name>
        <creationdate>Ocak 2010</creationdate>
        <author>Soner Ekici</author>
        <authoremail>pisdoktor@orneksite.com</authoremail>
        <authorurl>http://www.orneksite.com</authorurl>
        <copyright>Copyright Bilgisi</copyright>
        <license>Lisans Bilgisi</license>
        <version>0.0.2</version>
        <description>Merhaba bileşeni açıklaması...</description>
 
        <files folder="site">
                <filename>index.html</filename>
                <filename>merhaba.php</filename>
                <!-- controller paketimize dahil edildi -->
                <filename>controller.php</filename>
                <!-- views klasörü içeriğiyle birlikte pakete dahil edildi -->
                <folder>views</folder>
        </files>
 
        <administration>
                <menu>Merhaba</menu>
                <files folder="admin">
                        <filename>index.html</filename>
                        <filename>merhaba.php</filename>
                </files>              
        </administration>
</extension>

Hazırlanmış paketini istersiniz diye eklemeyi unutmadım. Buyrun buradan indirin.

Tags:  , , , , , , , ,

Readers Comments (0)


Comments are closed.