Joomla ile Basit Bir Form Bileşeni Yapımı

Shadow Hunter

Uzman üye
21 Eki 2014
1,179
1
Bu makale ile joomla 1.0.x için kendimize basit bir form bileşeni yapacağız ve bunu daha sonra geliştireceğiz.

Bu yazımızdan itibaren artık birçok sınıf ve fonksiyonu bildiğimizi düşünerek ufak bir form oluşturmaya başlayacağız. Öncelikle bir HTML editörü ile kendimize bir form oluşturalım. Ben Dreamweaver ile kendime aşağıdaki gibi bir form oluşturdum;

Kod:
    <form action="index.php" method="post">
    <table cellpadding="0" cellspacing="0" border="0" width="100%">
    <tr>
    <th colspan="2">Geri Bildirim Formu</th>
    </tr>
    <tr>
      <td width="50%">Adınız, Soyadınız:</td>
    <td width="50%"><input type="text" name="isim" value="" class="inputbox" size="30" /></td>
    </tr>
    <tr>
      <td>Kullanıcı Adınız:</td>
    <td><input type="text" name="kullanici" value="" class="inputbox" size="30" /></td>
    </tr>
    <tr>
      <td>E-posta Adresiniz:</td>
    <td><input type="text" name="eposta" value="" class="inputbox" size="30" /></td>
    </tr>
    <tr>
      <td>Mesajın Konusu:</td>
    <td><input type="text" name="konu" value="" class="inputbox" size="30" /></td>
    </tr>
    <tr>
      <td colspan="2">Mesajınız:</td>
    </tr>
    <tr>
      <td colspan="2"><textarea name="mesaj" cols="50" rows="15" class="inputbox"></textarea></td>
    </tr>
    </table>
    <input type="hidden" name="option" value="com_form" />
    <input type="hidden" name="task" value="gonder" />
    <input type="submit" name="submit" value="Formu Gönder" class="inputbox" />
    </form>



Bu formu inceleyecek olursak;


Kod:
    <form action="index.php" method="post">



Formun ilk satırında formun nereye ve hangi metod ile gönderileceğini belirttim.


Kod:
    <input type="hidden" name="option" value="com_form" />
    <input type="hidden" name="task" value="gonder" />



Formun sonundaki son iki satırda option (yani bileşenin adı) olarak com_form olarak belirttim. Çünkü tüm herşeyi bitirdiğimizde bu form bileşeninin adı com_form olacak. Hemen altındaki satırda da form verilerinin gideceği fonksiyonu (gonder) belirttim.

Formdaki alanlara bakacak olursak;
- isim,
- kullanici,
- eposta,
- konu,
- mesaj

Şimdi bir yazı editörü ile php dosyamızı oluşturalım. Bileşenimizin adını com_form olarak adlandıracağımızı belirtmiştik. Dolayısıyla dosyanın adı form.php olacak.

form.php:


Kod:
    <?php
    //direkt erişimi engelleyelim
    defined('_VALID_MOS') or die('Kısıtlı erişim');

    //task oluşturalım
    switch($task) {
      //varsayılan fonksiyonumuz yani formumuzun gösterileceği yer
      default:
      Form();
      break;

      //form gonderildiğinde çalışacak olan fonksiyon (gonder fonksiyonu)
      case 'gonder':
      FormuGonder();
      break;
    }

    function Form() {
    ?>
    <form action="index.php" method="post">
    <table cellpadding="0" cellspacing="0" border="0" width="100%">
    <tr>
    <th colspan="2">Geri Bildirim Formu</th>
    </tr>
    <tr>
    <td width="50%">Adınız, Soyadınız:</td>
    <td width="50%"><input type="text" name="isim" value="" class="inputbox" size="30" /></td>
    </tr>
    <tr>
    <td>Kullanıcı Adınız:</td>
    <td><input type="text" name="kullanici" value="" class="inputbox" size="30" /></td>
    </tr>
    <tr>
    <td>E-posta Adresiniz:</td>
    <td><input type="text" name="eposta" value="" class="inputbox" size="30" /></td>
    </tr>
    <tr>
    <td>Mesajın Konusu:</td>
    <td><input type="text" name="konu" value="" class="inputbox" size="30" /></td>
    </tr>
    <tr>
    <td colspan="2">Mesajınız:</td>
    </tr>
    <tr>
    <td colspan="2"><textarea name="mesaj" cols="50" rows="15" class="inputbox"></textarea></td>
    </tr>
    </table>
    <input type="hidden" name="option" value="com_form" />
    <input type="hidden" name="task" value="gonder" />
    <input type="submit" name="submit" value="Formu Gönder" class="inputbox" />
    </form>
    <?php
    }

    function FormuGonder() {
    //formdaki gonderilen verileri alalım
    $isim = mosGetParam($_REQUEST, 'isim');
    $kullanici = mosGetParam($_REQUEST, 'kullanici');
    $eposta = mosGetParam($_REQUEST,'eposta');
    $konu = mosGetParam($_REQUEST, 'konu');
    $mesaj = mosGetParam($_REQUEST, 'mesaj');

    //Burayı kendi mail adresinizle değiştirin!
    $mailim = ' [email protected]';

    //Formu mosMail fonksiyonu ile kendi e-posta adresimize göndertelim
    mosMail($eposta, $isim, $mailim, $konu, $mesaj);

    //Bileşene geri gönderelim ve uyarı mesajımızı gösterelim
    mosRedirect('index.php?option=com_form','Gönderiniz başarıyla iletildi');
    }
    ?>




Şimdi gelelim bileşenin diğer dosyalarını oluşturmaya;

form.xml:


Kod:
    <?xml version="1.0" encoding="iso-8859-9"?>
    <mosinstall type="component" version="1.0.0">
        <name>Form</name>
        <author>Soner Ekici</author>
        <creationDate>Temmuz 2007</creationDate>
        <copyright>(C) 2006 Soner Ekici. All rights reserved.</copyright>
        <license>http://www.gnu.org/copyleft/gpl.html GNU/GPL</license>
        <authorEmail>[email protected]</authorEmail>
        <authorUrl>www.sonerekici.com</authorUrl>
        <version>1.0</version>
        <description>Bu bizim ilk form bileşenimiz.</description>
        <files>
        <filename>form.php</filename>
        </files>
    <install>
    </install>
    <uninstall>
    <queries>
    </queries>
    </uninstall>
    <installfile>install.form.php</installfile>
    <uninstallfile>uninstall.form.php</uninstallfile>
    </mosinstall>




install.form.php:


Kod:
    <?php
    defined( '_VALID_MOS' ) or die( 'Kısıtlı erişim' );

    function com_install()
    {
      
    }
    ?>


uninstall.form.php:


    <?php
    defined( '_VALID_MOS' ) or die( 'Kısıtlı erişim' );

    function com_uninstall()
    {
      
    }
    ?>



Şimdi elimizde 4 adet dosya oluştu;

- form.xml (Bileşenimizin kurulum dosyası)
- install.form.php ve uninstall.form.php (Bileşenimizin kurulum ve kaldırılmasında gerekecek dosyalar)
- form.php (Bileşenimizin çalışması için gereken kodların olduğu dosya)

Bu 4 dosyayı zipleyip yönetim panelinden yüklediğinizde ve daha sonra menüden link verdiğinizde elinizde oldukça basit bir formMail denilen (yani form ile mailimize veri gönderen) bir bileşenimiz olacaktır.
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.