Geri git   Van.GEN.TR Forum | Yerel Van Forumu > Bilgisayar > Web Tasarım

Web Tasarım Web tasarımıyla ilgili bilgiler burda...

Cevapla
 
Konu Araçları Stil
Alt 13/11/10, 16:40   #1
_EReNCaN65
Asteğmen
 
_EReNCaN65 - ait Kullanıcı Resmi (Avatar)
 
Üyelik tarihi: Nov 2010
Bulunduğu yer: VaN
Mesajlar: 100
Tecrübe Puanı: 0 _EReNCaN65 will become famous soon enough
Cool 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 `#__defter`");
$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('yor um')));
$email=strip_tags(addslashes(JRequest::getVar('ema il')));

// 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=".$ta sk, $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:ate($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);Birlikte oldukça basit bir ziyaretçi defteri bileşeni yapmış olduk. Kaynak dosyayı indirmek için tıklayın
_EReNCaN65 isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
Konu Sayısı: 40
Takımınız:
Alt 29/08/11, 12:38   #2
cicisler
Acemi Er
 
cicisler - ait Kullanıcı Resmi (Avatar)
 
Üyelik tarihi: Aug 2011
Mesajlar: 0
Tecrübe Puanı: 0 cicisler will become famous soon enough
Standart

teşekkürler bilgi için.
cicisler isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
Konu Sayısı: 0
Takımınız:
Cevapla


Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir)
 
Konu Araçları
Stil

Yetkileriniz
Yeni Mesaj yazma yetkiniz Aktif değil dir.
Mesajlara Cevap verme yetkiniz aktif değil dir.
Eklenti ekleme yetkiniz Aktif değil dir.
Kendi Mesajınızı değiştirme yetkiniz Aktif değildir dir.

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-KodlarıKapalı
Gitmek istediğiniz klasörü seçiniz


Bütün Zaman Ayarları WEZ +3 olarak düzenlenmiştir. Şu Anki Saat: 00:30 .


Powered by vBulletin
Copyright © 2000-2007 Jelsoft Enterprises Limited.
Sitemap
6, 5, 3, 7, 8, 9, 10, 11, 12, 13, 14, 15, 113, 16, 17, 18, 19, 81, 20, 27, 22, 23, 24, 25, 26, 48, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 43, 136, 40, 58, 45, 42, 44, 46, 47, 53, 54, 55, 56, 57, 59, 60, 70, 61, 62, 63, 64, 65, 66, 68, 69, 71, 72, 74, 75, 76, 77, 78, 79, 80, 82, 83, 96, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 98, 97, 100, 101, 102, 103, 106, 104, 105, 112, 109, 108, 107, 110, 111, 114, 115, 118, 116, 117, 119, 148, 154, 124, 165, 122, 120, 123, 121, 150, 153, 125, 128, 129, 131, 132, 133, 134, 135, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 151, 149, 202, 175, 164, 152, 167, 155, 156, 157, 158, 159, 160, 161, 162, 163, 195, 169, 166, 168, 170, 171, 172, 199, 174, 173, 196, 200, 176, 177, 180, 178, 179, 182, 189, 187, 184, 186, 191, 192, 193, 194, 197, 198, 201, 203, 229, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 236, 231, 232, 233, 234, 235, 237, 240, 239, 241, 243, 242, 244,