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: bileşen, controllers, JController, Joomla!, Joomla! 1.6, JView, kodlamak, models, views
Readers Comments (0)
Comments are closed.