JOOMLA TEMPLATE NASIL YAPILIR

Joomla Template temel olarak dört dosyadan oluşur. Bu dosyalar index.php, template.css, templatedetails.xml ve banner adındaki resim dosyası. Geleneksel olarak css ve images adındaki iki klasörde template ile ilgili dosyalar tutulur. CSS dosyasında template ile ilgili minumum template.css olacak şekilde css dosyaları tutulur. IMAGES klasöründe ise banner gibi resim dosyları tutulur. Bu yapıya ek olarak html ve javascript klasörleri kullanılabilir. Bu klasörlerden html klasöründe Joomla! nın çekirdek çıkış sistemini değiştirmek için html dosyaları konulur. Javascript klasörüne ise template ile ilişkili javascript dosyaları konulur.

Joomla! template oluşturan bu dosyalar zip klasörü haline getirilir ve joomla sistemine eklenti olarak yüklemek için hazır hale gelir. Şimdi bu dosyaları ve ne işe yaradıklarına değinelim.

index.php içersindeki mantık

index.php dosyası html ve php kodlarının karışımından oluşur. İçerisinde joomla'nın anlayabileceği php kod segmentleri vardır. Dolayısıyla joomla sistemi dışında düzgün çalışmaz.

<html>
<head>
<jdoc:include type="head" />
</head>
<body>
<h1>Merhaba Dünya!</h1>
</body>
</html>

Yukarıdaki kodda jdoc ile açılan tagda joomla sisteminden sayfa için header bilgileri çekilir. Bu şekilde modüllerin çalışması ve birçok benzer komut eklenebilir. Html kodları içerisine template kullanacağımız css dosyları javascript dosyları eklenebilir.

Joomla İcra Bildirimleri

Joomla! index.php içersindeki özel taglarla bildirimi yapılmış alanlara JDocument ve JDocumentHTML nesnelerini kullanarak Joomla! ortamında veriler çeker ve bunları gerekli yerlere uygun şekilde çıktısını oluşturur. Örneğin JDocument nesnesi jdoc ile oluşturulmuş etiketlere uygun verileri yerleştirir.

<jdoc:include type="head"/> 

Burada header bilgilerini joomla ortamında çekerek etiketin bulunduğu yere yerleştirir.

<jdoc:iclude type="message"/> 

Burada ise joomla ortamında üretilen mesajların çıktısı yerleştirilir.

<jdoc:include type="modules" name="top" style="xhtml"/> 

Burada ise joomla sistemindeki modüllerden top kısmında çıktı vermek için ayarlananları xhtml formatında çıktısı sağlanır.

$this nesne değişkeninin kullanımı

$this JDocumentHTML nesnesine bir bağlantı oluşturur. JDocumentHTML nesnesi ile birçok faydalı fonksiyon ve özelliği kullanabilirsiniz.

language Seçili dili gösterir
link Dokümanın temel URI sini gösterir
description head kısmında bulunan açıklama (description) alanındaki bilgileri gösterir.
Title Dokümanın başlık bilgisini gösterir.
template template dizinini döndürür.
direction Yazı yönünü döndürür

countModules() fonksiyonu parametrede gösterilen alana ait modül sayısını döndürür.

Örneğin
$this->countModules("user1") 
//user1 alanındaki modül sayısını döndürür
$this->countModules("user1 and user2")
$this->countModules("user1 + user2")
//user1 ve user2 alanındaki modül sayılarını döndürür.
$this->countModules("user1 or user2") 
//user1 veya user2 alanındaki modül sayısını döndürür.
Örnek bir uygulama gösterirsek eğer
<?php if($this->countModules('top')) : ?>
<jdoc:include type="modules" name="top" />
<?php else : ?>
<img src='placeholder.gif'>
<?php endif; ?>

Yukarıdaki örnek php kodu ile eğer top kısmında modül yok ise bunun yerine bir yer tutucu resim ekliyoruz. Eğer top kısmına ait modüller var ise bu durumda bu modülleri ekliyoruz.

Template Parametrelerine Ulaşım

Template'imize nasıl parametre ekleyebileceğimize ileride değineceğiz. Şimdi Joomla! yönetiminden değiştirilebilen template parametrelerine nasıl erişebileceğimize bakalım. Örneğin showComponent parametresi bileşenlerin gösterilip gösterilmeyeceğini belirleyen bir parametre olsun. Bu parametreye aşağıdaki şekilde ulaşıp kullanabilir.

<?php if($this->params->get('showComponent')) : ?>
								
<?php endif; ?>

Yukarıdaki kod ile showComponent parametresine ulaşıp buna göre componentleri ekliyoruz.

Önemli Not
defined('_JEXEC') or die('No access available');

Yukarıdaki kodu template imizin başına ekleyerek index.php dosyasının yalnız Joomla! sistemi içerisindeki _JEXEC tanımlaması yapılmışsa çalıştırılabilmesini sağlıyoruz. Bu index.php dosyasının dışarıdan çalıştırılmasını engeller ve güvenliği sağlar.

Şimdi tüm öğrendiklerimizden basit bir index.php template sayfamızı sunuyoruz


<?php
defined('_JEXEC') or die('Yasak Erişim');
?>
<?xml version="1.0" encoding="utf-8"?>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="
<?php echo $this->language; ?>" 
lang="<?php echo $this->language; ?>" 
dir="<?php echo $this->direction; ?>" >
<head>
<jdoc:include type="head" />
</head>
<body>
<jdoc:include type="message" />
<h1>Merhaba Dünya!</h1>
<?php if($this->countModules('top')) : ?>
<jdoc:include type="modules" name="top" />
<?php else : ?>
<img src='placeholder.gif'>
<?php endif; ?>
<?php if($this->params->get('showComponent')) : ?>
<jdoc:include type="component" />
<?php endif; ?>
</body>
</html>

CSS Dosyalarını eklemek

Css dosyaları tasarımımıza eklemek için normal html dosyasına ekler gibi ekliyoruz.

<link rel="stylesheet" href="templates/_system/css/general.css"
type="text/css" />
<link rel="stylesheet" href="templates/<?php echo
$this->template ?>/css/template.css" type="text/css" />

İlk kod sistem template dosyasını eklerken ikinci satırdaki kod ise bizim template imiz için özel template.css dosyasını ekler.