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);
// 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;
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