Joomla! 1.5 ile basit bir bileşen hazırlamak – 5
11th Şubat 2010 · 0 Comments
Joomla! 1.5 için hazırladığımız bileşenimizin ön yüzünü tamamladık. Gelelim bileşenimizin yönetim bölümünü hazırlamaya. Yönetim bölümü de site bölümü gibi merhaba.php dosyası ile başlayacak. Yani yönetim bölümü ana giriş noktamız merhaba.php olacak. Dolayısıyla hazırlayacağımız controller sınıfının tanımlamasını merhaba.php dosyasında yapacağız.
merhaba.php:
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 | <?php // Direkt erişimi engelleyelim defined( '_JEXEC' ) or die( 'Restricted access' ); // Temel controller sınıfını alalım require_once( JPATH_COMPONENT.DS.'controller.php' ); // İstendiyse özel controller sınıfını alalım if($controller = JRequest::getWord('controller')) { $path = JPATH_COMPONENT.DS.'controllers'.DS.$controller.'.php'; if (file_exists($path)) { require_once $path; } else { $controller = ''; } } // Bileşenimiz için controller oluşturalım $classname = 'MerhabalarController'.$controller; $controller = new $classname( ); // Task isteğini uygulayalım $controller->execute( JRequest::getVar( 'task' ) ); // Controller tarafından istendiyse geriye dönüş sağlayalım $controller->redirect(); |
controller.php:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <?php // Direkt erişimi engelleyelim defined( '_JEXEC' ) or die( 'Restricted access' ); jimport('joomla.application.component.controller'); /** * Merhaba bileşeni Controller */ class MerhabalarController extends JController { /** * Gösterim sağlayan metodumuz */ function display() { parent::display(); } } |
view ve controller sınıflarımız bundan sonra “Merhaba” değil “Merhabalar” ile başlayacak. Bunun sebebi; artık veritabanımızdaki karşılama metinlerinin tümünü liste halinde alacak olmamız. Öncelikle veritabanından verileri alacak olan modelimizi oluşturalım. Veritabanındanki verileri almak için getData() fonksiyonunu kullanacağız. JModel sınıfı korumalı bir sınıf olan _getList() metodu ile veritabanındaki verilerin bir listesini alır. Bunu bir sorgu haline getirmek için de _buildQuery() metodunu kullanır. O halde hazırlayacağımız model kodları şöyle olacaktır;
admin/models/merhabalar.php:
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 30 31 32 33 34 35 36 37 38 39 40 41 42 | <?php // Direkt erişimi engelleyelim defined('_JEXEC') or die(); jimport( 'joomla.application.component.model' ); /** * Merhabalar Modelimiz */ class MerhabalarModelMerhabalar extends JModel { /** * Merhabalar data dizisi */ var $_data; /** * Sorguyu oluşturalım */ function _buildQuery() { $query = ' SELECT * ' . ' FROM #__merhaba ' ; return $query; } /** * Verileri alalım */ function getData() { // veri daha önceden oluşturulmadıysa veriyi alalım if (empty( $this->_data )) { $query = $this->_buildQuery(); $this->_data = $this->_getList( $query ); } return $this->_data; } } |
Metodumuz get ile başladığı için (getData()), JView sınıfının get() fonksiyonuna verilerimiz otomatik olarak aktarıldı. Şimdi tek yapmamız gereken bileşenimizin view kısmını oluşturmak.
admin/views/merhabalar/view.html.php:
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 | <?php // Direkt erişimi engelleyelim defined('_JEXEC') or die(); jimport( 'joomla.application.component.view' ); /** * Merhabalar View sınıfı */ class MerhabalarViewMerhabalar extends JView { /** * Merhabalar view gösterim metodumuz **/ function display($tpl = null) { JToolBarHelper::title( JText::_( 'Merhaba Yönetimi' ), 'generic.png' ); JToolBarHelper::deleteList(); JToolBarHelper::editListX(); JToolBarHelper::addNewX(); // Modelden verileri alalım $items =& $this->get( 'Data'); $this->assignRef( 'items', $items ); parent::display($tpl); } } |
Şimdi de şablonumuzu hazırlayalım.
admin/views/merhabalar/tmpl/default.php:
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 30 31 32 33 34 35 36 37 38 39 40 41 | <?php defined('_JEXEC') or die('Restricted access'); ?> <form action="index.php" method="post" name="adminForm"> <div id="editcell"> <table class="adminlist"> <thead> <tr> <th width="5"> <?php echo JText::_( 'ID' ); ?> </th> <th> <?php echo JText::_( 'Karsilama' ); ?> </th> </tr> </thead> <?php $k = 0; for ($i=0, $n=count( $this->items ); $i < $n; $i++) { $row =& $this->items[$i]; ?> <tr class="<?php echo "row$k"; ?>"> <td> <?php echo $row->id; ?> </td> <td> <?php echo $row->karsilama; ?> </td> </tr> <?php $k = 1 - $k; } ?> </table> </div> <input type="hidden" name="option" value="com_merhaba" /> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> <input type="hidden" name="controller" value="merhaba" /> </form> |
Şimdi hazırladığımız tüm yeni dosyalarla birlikte merhaba.xml dosyamızı güncelleyerek bileşenimizi paket haline getirelim.
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 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | < ?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.3</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><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>controller.php</filename> <filename>views/index.html</filename> <filename>views/merhabalar/index.html</filename> <filename>views/merhabalar/view.html.php</filename> <filename>views/merhabalar/tmpl/index.html</filename> <filename>views/merhabalar/tmpl/default.php</filename> <filename>models/merhabalar.php</filename> <filename>models/index.html</filename> </files> </administration> |
Hazırladığımız bileşenin paket halini indirmek için buraya tıklayın.
Tags: add, bileşen, controllers, deleteList(), DS, edit, editListX(), form, get, getData, jimport, JModel, Joomla!, Joomla! 1.5, JRequest, JText, JToolBarHelper, model, models, mysql, php, request, task, UTF-8, views, _JEXEC
Readers Comments (0)
Comments are closed.