jekcms Tema Dosya Yapısı: Bu Mimariyi Neden Seçtik

Bir jekcms temasında hangi dosyalar var, her sayfa hangi şablonu yükler ve neden şablon motoru yerine düz PHP kullanıyoruz.

jekcms Tema Dosya Yapısı: Bu Mimariyi Neden Seçtik, jekcms blog kapağı

Bir jekcms temasında hangi dosyalar var, her sayfa hangi şablonu yükler ve neden şablon motoru yerine düz PHP kullanıyoruz.

Bir jekcms teması tek bir klasörden oluşuyor ve içindeki dosyaların her birinin belli bir görevi var. Bu yazıda o klasörün içini, sitenin hangi sayfada hangi şablonu yüklediğini ve neden düz PHP şablonlarını seçtiğimizi anlatıyoruz.

Klasörün İçi

Hazır temaların hepsi aynı düzeni kullanıyor. Örnek olarak News temasının klasörü şöyle:

themes/news/
+-- theme.json        # temanın adı, sürümü, renkleri ve yazı tipleri
+-- functions.php     # temaya özel yardımcı fonksiyonlar
+-- screenshot.png    # panelde görünen önizleme
+-- demo-content.php  # örnek içerik
+-- templates/        # sayfa şablonları
|   +-- header.php, footer.php
|   +-- index.php, single.php, page.php, archive.php
|   +-- search.php, 404.php, contact.php, legal.php
+-- partials/         # tekrar kullanılan parçalar
|   +-- post-card.php, pagination.php, sidebar.php, comments.php
+-- sections/         # düzen editöründe dizilen bölümler
+-- assets/css, assets/js

theme.json temanın kimlik kartı. Paneldeki tema özelleştirici renk ve yazı tipi seçeneklerini bu dosyadan okuyor, yani bir rengin varsayılan değerini değiştirmek için CSS'e dokunmanız gerekmiyor.

Hangi Sayfa Hangi Şablonu Yükler

jekcms'te WordPress'teki gibi uzun bir şablon hiyerarşisi yok. Her sayfa türü tek bir dosyaya gidiyor: yazılar single.php, sayfalar page.php, kategori ve etiket arşivleri archive.php, arama sonuçları search.php ile açılıyor. Bulunamayan adresler için 404.php, yasal metinler için legal.php var. Bir sayfanın neden öyle göründüğünü merak ettiğinizde bakmanız gereken dosya her zaman bellidir.

Parçalar ve Bölümler

partials/ klasöründeki dosyalar birden fazla şablonda kullanılıyor. Yazı kartını değiştirmek isterseniz yalnızca post-card.php dosyasını düzenlersiniz; ana sayfadaki, arşivdeki ve aramadaki kartların hepsi birlikte değişir. Şablonun içinden bir parçayı get_template_part('post-card') ile çağırıyorsunuz. Fonksiyon önce partials/, sonra templates/ klasörüne bakıyor.

sections/ klasörü ise ana sayfa ve kenar çubuğu bloklarını tutuyor: manşet, son yazılar, kategori bölümleri, bülten kutusu gibi. Paneldeki sürükle-bırak düzen editörü bu dosyaları sıralıyor; bir bölümü kapatmak ya da yerini değiştirmek kod gerektirmiyor.

functions.php

Temaya özel yardımcı fonksiyonlar functions.php dosyasında duruyor. News temasında son dakika haberlerini, en çok okunanları ya da bir kategorinin son yazılarını getiren fonksiyonlar burada. Bu fonksiyonlar çekirdeğin get_posts() ve get_categories() fonksiyonlarını kullanıyor; ikisi de nesne değil düz PHP dizisi döndürüyor. Diziler önbelleğe kolay giriyor ve şablonda $post['title'] diye okunuyor.

WordPress'ten gelenler için add_action, do_action ve apply_filters aynı adlarla tanımlı, ama tam bir eklenti kanca sistemi değil. Asıl amaçları, WordPress alışkanlığıyla yazılmış küçük kod parçalarının hata vermemesi. SEO etiketleri, şema ve analiz kodları şablona output_head_scripts() ile basılıyor.

Neden Şablon Motoru Değil

Twig ve Blade gibi şablon motorları şablonları önce PHP'ye derleyip bir önbellek klasörüne yazıyor. Paylaşımlı hostingde bu klasörün izinleri ve eski önbellek dosyaları sık sorun çıkarıyor. Düz PHP şablonlarında böyle bir ara adım yok: dosyayı değiştirdiğiniz anda değişiklik sitede görünüyor ve PHP bilen herkes şablonu okuyabiliyor.

CSS ve JavaScript Dosyaları

Temanın stilleri ve betikleri assets/css/ ve assets/js/ klasörlerinde duruyor. jekcms her dosyanın adresine son değiştirilme zamanını ?v= parametresi olarak ekliyor. Böylece tarayıcı dosyayı uzun süre önbellekte tutabiliyor, siz dosyayı güncellediğinizde ise ziyaretçiler yeni hâlini hemen alıyor.

Tema Geliştirirken

  • Yeni bir tema için hazır temalardan birini kopyalayıp başlayın; klasör düzeni ve theme.json alanları hazır gelir.
  • Tekrar eden HTML'i şablonlara değil partials/ klasörüne koyun.
  • Ana sayfa bloklarını sections/ klasöründe tutun ki düzen editöründe sıralanabilsin.
  • Geliştirme sırasında DEBUG_MODE ayarını açın; tanımsız değişken uyarılarını erkenden görürsünüz.

Yazar

Celil Uyanıkoğlu

25 yılı aşkın süredir bilgi işlem sektöründe çalışan bir bilgisayar mühendisi. jekcms'i geliştiriyor ve kendi yayın ağındaki sitelerin tamamını jekcms üzerinde çalıştırıyor - burada yayımlanan her rehber önce o canlı kurulumlarda denenir.

Tüm yazılarını gör →

Lisansınızı Seçin

İlk yıl indirimli yıllık lisans; güncelleme ve destek dahil. Kurulum 30 dakika.

Fiyatlara Bak
  • 30 dakikada kurulum ve yayın
  • 14 profesyonel tema
  • AVIF/WebP görsel optimizasyonu
  • Otomatik SEO - Sitemap, Schema.org
  • ZeroTrack çerezsiz analitik

Yeniliklerden ilk sen haberdar ol

Yeni özellikler, sürüm notları ve CMS rehberleri. Ayda birkaç e-posta gönderiyoruz.