Override Nedir ve Neden Hayatidir?
Override işlemi, Joomla'nın çekirdek çıktı dosyalarının (View), kullanılan şablon klasörü içerisine kopyalanarak sistemin öncelikli olarak bu dosyaları okumasını sağlama işlemidir.
Sistem bir sayfayı oluştururken şu mantığı izler:
Önce /templates/aktif-sablon/html/com_content/article/ yolunu kontrol eder.
Eğer burada bir dosya bulamazsa, varsayılan /components/com_content/views/article/tmpl/ yolunu kullanır.
Bu sayede, çekirdek güncellemeleri yapılsa bile, şablon klasöründeki özelleştirilmiş dosyalarınız korunur.
Adım Adım Override Oluşturma Süreci
Bu süreci, en sık ihtiyaç duyulan senaryolardan biri olan "Makale Görünümü (Single Article)" özelleştirmesi üzerinden ele alalım.
1. Yöntem: Joomla Paneli Üzerinden (Hızlı Yöntem)
Joomla, kod editörü kullanmadan dosya yapısını oluşturmanıza olanak tanır:
Sistem > Şablonlar > Site Şablonları (System > Templates > Site Templates) yolunu izleyin.
Kullandığınız şablonun ismine (örneğin: Cassiopeia Details and Files) tıklayın.
Override Oluştur (Create Overrides) sekmesine geçin.
Listeden com_content > article seçeneğine tıklayın.
Sistem otomatik olarak gerekli PHP dosyasını /templates/sablonunuz/html/com_content/article/default.php yoluna kopyalayacaktır.
2. Kod Düzenleme ve Özelleştirme
Dosya oluşturulduktan sonra "Editor" sekmesine dönerek html > com_content > article > default.php dosyasını açın. Artık burada yapacağınız her değişiklik, sitenizdeki tüm tekil makale görünümlerini etkileyecektir.
Örnek Senaryo: Başlık ile İçerik Arasına Özel Alan (Custom Field) Ekleme
Standart yapıda başlık ve içerik ardışık gelir. Araya, örneğin bir "Yazar Biyografisi" veya "İlgili Tarih" özel alanı eklemek isterseniz, PHP kod bloğunda başlık (echo $this->escape($this->item->title); ) (Aradaki boşluğu silin) ile içerik (echo $this->item->text; ) (Aradaki boşluğu silin) arasına müdahale etmelisiniz.
PHP Kod:
<?php if ($params->get('show_title')) : ?>
<h1 class="art-title">
<?php echo $this->escape($this->item->title); ?>
</h1>
<?php endif; ?>
<div class="custom-override-info">
<span class="icon-user"></span>
Bu makale uzman ekibimiz tarafından incelenmiştir.
</div>
<?php echo $this->item->text; ?>Bazen tüm makaleleri değil, sadece belirli bir kategorideki makaleleri farklı göstermek isteyebilirsiniz. Bunun için "Alternative Layout" tekniğini kullanırız.
Oluşturduğunuz default.php dosyasının adını değiştirin (Örn: ozel-haber.php).
Artık makale düzenleme ekranında, "Seçenekler" sekmesinde Düzen (Layout) kısmında "ozel-haber" seçeneğinin belirdiğini göreceksiniz.
Profesyonel İpucu: CSS düzenlemelerinizi asla PHP dosyasının içine <style> etiketiyle gömmeyin. Bunun yerine user.css veya custom.css dosyasını kullanarak, override dosyasında tanımladığınız yeni CSS sınıflarını (class) hedefleyin.