Forum Aski - Türkiye'nin En Eğlenceli Forumu
 

Go Back   Forum Aski - Türkiye'nin En Eğlenceli Forumu > Webmaster Dünyası > Webmaster Genel > Joomla


Joomla! 1.5 için basit bir ziyaretçi defteri yapalım

Joomla kategorisinde açılmış olan Joomla! 1.5 için basit bir ziyaretçi defteri yapalım konusu , ...


Yeni Konu aç  Cevapla
 
LinkBack Seçenekler Arama Stil
Alt 11.01.2015, 13:59   #1 (permalink)
BaHaRamaZaN

Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
Standart Joomla! 1.5 için basit bir ziyaretçi defteri yapalım



Joomla! 1.5 için basit bir ziyaretçi defteri yapalım



Heralde Joomla! 1.5 serisinde en çok rağbet gören eklentilerden birisidir ziyaretçi defteri bileşenleri. Ama maalesef bu bileşenler genelde düzgün çalışmazlar, ya da istediğimiz gibi olmazlar. Elbette oldukça iyi kodlanmış ve işimizi gören bileşenler var. Bir de kendimiz bir ziyaretçi defteri bileşeni yapalım. Bunun için bir yazı editörü, denemesini yapmak için bilgisayarımızda kurulu bir sunucu (local server) ve tabi ki Joomla! 1.5 paketine ihtiyacımız var.

Eğer bu yazıyı okuyor ve Joomla! ile ilgileniyorsanız zaten Joomla! son sürümü paketiniz ve bilgisayarınızda kurulu easyPHP veya xampp tarzı bir yerel sunucunuz vardır. Eğer yazı editörünüz yoksa ücretsiz olarak kullanabileceğiniz en iyi yazı editörü olarak notepad+ programını tavsiye ederim.

Şimdi elimizde hepsinin olduğunu düşünerek gelin beraber basit bir ziyaretçi defteri bileşeni yapalım. Öncelikle yerel sunucumuzdaki Joomla! kurulu olan dizine girelim ve components klasörü içerisine ?com_defter? adında bir klasör açalım. Bu klasör içerisine de yapacağımız bileşenimizin dosyalarını oluşturacağız.

Daha sonra notepad+ programını açarak yeni bir php dosyası oluşturup bunu UTF-8 olarak com_defter içerisine ?defter.php? adıyla kaydediyoruz. Şimdi bu defter.php dosyasının içerisindeki kodları oluşturalım.

defter.php:

Kod:
<?php
// direkt erişimi engelleyelim...
defined('_JEXEC') or die ('Restricted access.');

// bu satır ile defter.html.php dosyamızı dahil ediyoruz
require_once(JApplicationHelper::getPath('html'));

// uygulanacak task bilgimizi girelim
switch($task){
    case 'goster':
        // eğer task değerimiz 'goster' ise defteriListele() fonksiyonunu çalıştıracağız
        defteriListele();
        break;
   
    case 'kayit' :
        // eğer task değerimiz 'kayit' ise deftereKayit() fonksiyonunu çalıştıracağız
        deftereKayit();
        break;
   
    case 'kaydet':
        // eğer task değerimiz 'kaydet' ise deftereKaydet() fonksiyonumuzu çalıştıracağız
        deftereKaydet();
        break;

    default :
        // eğer herhangi bir task değeri yoksa varsayılan olarak defteriListele() fonksiyonu çalışacak
        defteriListele();
}

// Bu fonksiyonumuz veritabanından kayıtları alıp bizlere gösterecek
function defteriListele(){
    global $option, $mainframe;
   
    // Kayıt numarası ve limit değerini alalım
    $limit=$mainframe->getUserStateFromRequest( 'global.list.limit', 'limit', $mainframe->getCfg('list_limit'), 'int' );
    $start=JRequest::getVar('limitstart', 0);
   
    // veritabanı bağlantısını yapalım
    $db=&JFactory::getDBO();
   
    // veritabanından verilerimizin toplam sayısını alalım
    $db->setQuery("SELECT COUNT(*) FROM `[Link'i Görebilmeniz İçin Kayıt Olunuz.! Kayıt OL]
    $total=$db->loadResult();
   
    // veritabanındaki tablomuzdan verilerimizi alalım
    $db->setQuery("SELECT * FROM `#__defter` ORDER BY `datetime` DESC", $start, $limit);
    $rows=$db->loadObjectList();
    // hata oluşursa bunu gösterelim
    if($db->getErrorNum()){
        echo $db->stderr();
        return false;
    }
   
    // sayfalandırma için gerekli olan Joomla! sınıfını dahil edelim
    jimport('joomla.html.pagination');
   
    // sayfalandırma sınıfı için bir nesne oluşturalım
    $pagenav=new JPagination($total, $start, $limit);
   
    // HTML_defter sınıfı içerisindeki defteriListele() fonksiyonuna verilerimizi gönderelim
    HTML_defter::defteriListele($option, $rows, $pagenav);
}

// Bu fonksiyonumuz deftere birşeyler yazmak isteyen kullanıcılara kayıt formunu gösterecek
function deftereKayit(){
    global $option;
   
    // HTML_defter sınıfındaki deftereKayit() fonksiyonunu dahil edelim
    HTML_defter::deftereKayit($option);
}

// Bu fonksiyonumuz ile deftere kayıt edilmek istenen veriyi çeşitli süzgeçlerden geçirip veritabanına yazdıracağız
function deftereKaydet(){
    global $option, $mainframe;
   
    // gönderilen veriyi düzenleyelim
    $isim=strip_tags(addslashes(JRequest::getVar('isim')));
    $yorum=strip_tags(addslashes(JRequest::getVar('yorum')));
    $email=strip_tags(addslashes(JRequest::getVar('email')));
   
    // gösterilecek mesajı hazırlayalım
    $message='Ziyaretçi defterine yazdığınız için teşekkürler.'; // mesajımız
    $type='message'; //mesaj çeşidimiz
    $task='show'; // ziyaretçiyi döndüreceğimiz taskımız
   
    // form içerisinde gönderilen bilgilerin doğruluğunu kontrol edelim
    if(strlen(trim($isim))==0 || strlen(trim($yorum))==0 || !eregi("^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,3})$", $email)){
        $message='Lütfen formu düzgün doldurunuz!'; // mesajımız
        $type='error'; // mesaj çeşidimiz
        $task='kayit'; // ziyaretçiyi döndüreceğimiz taskımız
    } else{
        // veritabanı nesnemizi alalım ve veriyi tablomuza kaydedelim
        $db=&JFactory::getDBO();
        $db->setQuery("INSERT INTO `#__defter` (`isim`, `email`, `yorum`, `datetime`) VALUES ('".$isim."', '".$email."', '".$yorum."', NOW())");
        if(!$db->query()){ // verilerin tabloya kaydedildiğini kontrol edelim
            $message='Kayıt işlemi başarısız oldu!'; // mesajımız
            $type='error'; // mesaj çeşidimiz
            $task='kayit'; // ziyaretçiyi döndüreceğimiz taskımız
        }
    }
    // ziyaretçiyi tanımlanmış mesaj ve mesaj çeşidine göre yönlendirelim
    $mainframe->redirect("index.php?option=".$option."&task=".$task, $message, $type);
}
Şimdi de defter.php ile aynı dizinde olması gereken defter.html.php dosyamızı oluşturalım.

defter.html.php:


Kod:
<?php
// direkt erişimi engelleyelim
defined('_JEXEC') or die ('Restricted access.');

class HTML_defter{
    // ziyaretçi defteri kayıtlarını gösterelim
    function defteriListele($option, &$rows, &$pagenav){
        ?>
        <div class="componentheading">Ziyaretçi Defteri</div>
        <p align="right"><a href="index.php?option=<?php echo $option; ?>&task=kayit">Deftere Yaz</a></p>
        <?php
        if(count($rows)>0){ // eğer ziyaretçi defterimizde bir kayıt varsa
            ?>
            <form action="index.php?option=<?php echo $option; ?>&task=goster" method="post">
                <table cellpadding="4" cellspacing="0" border="0" width="90%" align="center">
                    <tbody>
                        <tr>
                            <td colspan="4"><hr size="1"/></td>
                        </tr>
                        <?php
                        for($i=0;$i<count($rows);$i++){ // döngümüzü oluşturalım
                            ?>
                            <tr>
                                <!-- ## her bir kayıtta tekrarlanacak satırlarımız ## -->
                                <td valign="top" align="center" rowspan="3"><?php echo ($pagenav->limitstart + $i +1); ?>.</td>
                                <td valign="top" align="right"><b>İsim</b></td>
                                <td valign="top" align="center">:</td>
                                <td valign="top" align="left"><?php echo $rows[$i]->isim; ?></td></tr>
                            <tr>
                                <td valign="top" align="right"><b>Tarih</b></td>
                                <td valign="top" align="center">:</td>
                                <!-- ## veritabanımızdaki tarih görünümünü biraz daha güzelleştirelim ## -->
                                <td valign="top" align="left"><?php echo JHTML::Date($rows[$i]->datetime); ?></td>
                            </tr><tr>
                                <!-- ## yorumları gösterelim ve satır başlarına <br> etiketi koyalım ## -->
                                <td valign="top" align="right"><b>Yorum</b></td>
                                <td valign="top" align="center">:</td>
                                <td valign="top" align="left"><?php echo nl2br($rows[$i]->yorum); ?></td>
                            </tr>
                            <tr>
                                <td colspan="4"><hr size="1"/></td>
                            </tr>
                            <?php
                        }
                        ?>
                    </tbody>
                </table>
                <br />
                <!-- ## sayfalandırmayı buraya koyalım ## -->
                <div align="center"><?php  echo $pagenav->getListFooter(); ?></div>
                <!-- ## option ve task değerimizi gizli alan olarak yerleştirelim ## -->
                <input type="hidden" name="option" value="<?php echo $option ?/>">
                <input type="hidden" name="task" value="goster"/>
            </form>
        <?php
        }
        else{
            ?>
            <p align="center"><i>Ziyaretçi defteri hala boş.</i></p>
            <?php
        }
        ?>
        <br /><br />
        <?php
    }
   
    // Kayıt formumuzu oluşturalım
    function deftereKayit($option){
        ?>
        <div class="componentheading">Ziyaretçi Defterine Yaz</div>
        <p align="right"><a href="index.php?option=<?php echo $option ?>">&lt;&lt; Ziyaretçi Defterine Dön</a></p>
        <form action="index.php" method="post">
            <table>
                <tbody>
                    <tr>
                        <td>İsim</td>
                        <td>:</td>
                        <td><input type="text" name="isim"/></td>
                    </tr>
                    <tr>
                        <td>Email</td>
                        <td>:</td>
                        <td><input type="text" name="email"/> * <i>E-posta adresiniz gösterilmeyecektir.</i></td>
                    </tr>
                    <tr>
                        <td>Yorum</td>
                        <td>:</td>
                        <td><textarea name="yorum" cols="50" rows="5"></textarea></td>
                    </tr>
                    <tr>
                        <td> </td>
                        <td> </td>
                        <td>
                            <br />
                            <input type="submit" name="submit" value="GÖNDER"/>
                        </td>
                    </tr>
                </tbody>
            </table>
            <!-- ## option ve task değerlerimizi gizli alan olarak yerleştirelim ## -->
            <input type="hidden" name="option" value="<?php echo $option; ?/>">
            <input type="hidden" name="task" value="kaydet"/>
        </form>
        <br /><br />
        <?php
    }
}

Son olarak bileşenimizin kullanacağı veritabanı tablosunu oluşturalım. Bunun için kullandığımız yerel sunucunun phpMyAdmin sayfasını açarak SQL sorgusu bölümünden aşağıdaki sorguyu çalıştırıyoruz.


Kod:
CREATE TABLE IF NOT EXISTS `jos_defter` (
  `id` int(4) NOT NULL AUTO_INCREMENT,
  `isim` varchar(65) NOT NULL DEFAULT '',
  `email` varchar(65) NOT NULL DEFAULT '',
  `yorum` longtext NOT NULL,
  `datetime` varchar(65) NOT NULL DEFAULT '',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
Tabiki bir de şu sorguyu çalıştırmamız gerekiyor;


Kod:
INSERT INTO `jos_components` (`name`, `link`, `menuid`, `parent`, `admin_menu_link`, `admin_menu_alt`, `option`, `ordering`, `admin_menu_img`, `iscore`, `params`, `enabled`) VALUES
    ('Ziyaretçi Defteri', 'option=com_defter', 0, 0, 'option=com_defter', 'Ziyaretçi Defteri', 'com_defter', 0, 'js/ThemeOffice/component.png', 0, '', 1);

__________________
Aşk der ki sana: Yolumdaysan başım feda yoluna; ama bil ki senin de başını isterim yoluma. Kahır, kapris gelecekse senden amenna! Ama ayağına diken batarsa yolumda ah edip vahlanma!...
Aşk bilek gücü değil “YÜREKTİR”! Yüreğin yetmiyorsa düşme yollara!…
KaRaqiZz isimli Üye şimdilik offline konumundadır Alıntı ile Cevapla
Cevapla

Yukarı'daki Konuyu Aşağıdaki Sosyal Ağlarda Paylaşabilirsiniz.

Seçenekler Arama
Stil

Yetkileriniz
Konu Açma Yetkiniz Yok
Cevap Yazma Yetkiniz Yok
Eklenti Yükleme Yetkiniz Yok
Mesajınızı Değiştirme Yetkiniz Yok

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodu Kapalı
Trackbacks are Kapalı
Pingbacks are Açık
Refbacks are Açık


Forum hakkında Kullanılan sistem hakkında
Forumaski paylaşım sitesidir.Bu nedenle yazılı, görsel ve diğer materyaller sitemize kayıtlı üyelerimiz tarafından kontrol edilmeksizin eklenmektedir.Bu nedenden ötürü doğabilecek yasal sorumluluklar yazan kullanıcılara aittir.Sitemiz hak sahiplerinin şikayetleri doğrultusunda yazılı, görsel ve diğer materyalleri 48 saat içerisinde sitemizden kaldırmaktadır. Bildirimlerinizi bu linkten bize yapabilirsiniz.

Telif Hakları vBulletin® Copyright ©2000 - 2016, ve Jelsoft Enterprises Ltd.'e Aittir.
SEO by vBSEO 3.6.0 PL2 ©2011, Crawlability, Inc.

Saat: 08:15


bizimmekan.com sohbet eczaonline.com Betcup Artemisbet pulibet Piabet Truvabet Marsbahis