Joomla! 1.5 için basit bir bileşen oluşturmak - Bölüm 4

Joomla! 1.5 için hazırladığımız bileşenimizin kodlamasına devam ediyoruz.

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:


<?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->executeJRequest::getVar'task' ) );

 

// Controller tarafından istendiyse geriye dönüş sağlayalım

$controller->redirect(); ?>


controller.php:

<?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:


<?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:


<?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::titleJText::_'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:


<?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">

                 echo JText::_( 'ID' ); ?>

            </th>

            <th>

                 echo JText::_( 'Karsilama' ); ?>

            </th>

        </tr>            

    </thead>

    

    $k = 0;

    for ($i=0, $n=count( $this->items ); $i < $n; $i++)

    {

        $row =& $this->items[$i];

        ?>

        <tr class=" echo "row$k"; ?>">

            <td>

                 echo $row->id; ?>

            </td>

            <td>

                 echo $row->karsilama; ?>

            </td>

        </tr>

        

        $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:


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>

  <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>

</install>


  • Etiketler;
Soner Ekici
1981 yılında Denizli' de doğdu. 1999 yılında başladığı PHP ve MySQL çalışmalarına 2004 yılında Joomla! ile devam etti. Joomla! için çeşitli eklentiler kodladı. <p>Halen Joomla! için aktif olarak eklentiler kodlayan Soner Ekici Afyonkarahisar ili Şuhut ilçesinde pratisyen hekim olarak görev yapmaktadır.
Yorum Yaz

Yorum yazabilmek için üye girişi yapmanız gerekiyor!

Yukarı Git