Sculpin Kurulumu ve Kullanımına Başlama Rehberi
Sculpin, PHP tabanlı, açık kaynaklı bir statik site oluşturucudur (Static Site Generator – SSG). Geleneksel dinamik içerik yönetim sistemlerinin (CMS) aksine, Sculpin içeriğinizi ve şablonlarınızı bir dizi statik HTML, CSS ve JavaScript dosyasına dönüştürür. Bu statik dosyalar daha sonra herhangi bir web sunucusunda barındırılabilir ve dinamik bir arka uca ihtiyaç duymadan hızlı, güvenli ve ölçeklenebilir bir web sitesi sunar. Bu makalede, Sculpin’i nasıl kuracağınızı, yeni bir proje oluşturacağınızı, içerik ekleyeceğinizi ve sitenizi dağıtacağınızı adım adım öğreneceksiniz.
1. Giriş: Sculpin Nedir ve Neden Kullanmalısınız?
Günümüz web geliştirme dünyasında, web siteleri oluşturmak için birçok farklı yaklaşım bulunmaktadır. Dinamik CMS’ler (WordPress, Drupal gibi) içerik yönetimi ve esneklik sunarken, beraberinde sunucu maliyeti, güvenlik açıkları ve performans sorunları gibi dezavantajlar da getirebilir. İşte bu noktada statik site oluşturucular devreye girer.
1.1. Statik Site Oluşturuculara Genel Bakış
Statik site oluşturucular, web sitelerini önceden derlenmiş statik dosyalardan oluşturan araçlardır. Siz Markdown veya benzeri basit metin formatlarında içerik yazarsınız, SSG ise bu içeriği Twig gibi bir şablonlama motoruyla birleştirerek nihai HTML sayfalarını üretir. Veritabanı sorgularına veya sunucu tarafı kod çalıştırmaya gerek kalmadığı için, statik siteler son derece hızlıdır, güvenlidir ve bakım maliyetleri düşüktür.
1.2. Sculpin’in Avantajları
Sculpin, PHP geliştiricileri için özellikle cazip bir seçenektir çünkü mevcut PHP becerilerini ve ekosistemini (Composer, Twig) kullanmalarına olanak tanır. Başlıca avantajları şunlardır:
* Hız ve Performans: Statik dosyalar doğrudan tarayıcıya servis edildiği için yükleme süreleri çok kısadır.
* Güvenlik: Dinamik bir arka uç veya veritabanı olmadığı için siber saldırılara karşı daha az hedef oluşturur.
* Maliyet Etkinliği: Basit bir web sunucusu veya CDN üzerinde barındırılabilir, bu da hosting maliyetlerini düşürür.
* Ölçeklenebilirlik: Yüksek trafik altında bile performansını korur çünkü sunucu tarafında işlem yükü yoktur.
* Geliştirici Dostu: Markdown ile içerik yazma ve Twig ile şablonlama, geliştiriciler için tanıdık ve verimli bir deneyim sunar.
* Sürüm Kontrolü Entegrasyonu: Tüm içerik ve şablonlar dosya tabanlı olduğu için Git gibi sürüm kontrol sistemleriyle mükemmel uyum sağlar.
* Esneklik: Sculpin’i bloglar, kişisel web siteleri, dokümantasyon siteleri ve hatta küçük e-ticaret siteleri gibi çeşitli projeler için kullanabilirsiniz.
1.3. Sculpin Kimler İçin Uygundur?
Sculpin, özellikle aşağıdaki senaryolarda parlak bir seçenektir:
* Blog Yazarları: İçeriklerini Markdown ile yazmayı tercih eden ve hızlı, güvenli bir blog arayanlar.
* Dokümantasyon Siteleri: Teknik dokümantasyon veya API referansları oluşturmak isteyenler.
* Kişisel Portföy veya Kurumsal Tanıtım Siteleri: Sık güncellenmeyen, ancak profesyonel ve hızlı olması gereken siteler.
* PHP Geliştiricileri: PHP ve Composer ekosistemine aşina olup, bu yeteneklerini statik web sitesi oluşturma süreçlerinde kullanmak isteyenler.
* Performans ve Güvenliğe Önem Verenler: Maksimum hız ve minimum güvenlik riski arayan herkes.
2. Ön Gereksinimler: Sculpin İçin Hazırlık
Sculpin’i kurmadan ve kullanmaya başlamadan önce, sisteminizde bazı temel araçların kurulu olması gerekir. Bu araçlar, Sculpin’in kendisi gibi PHP ekosisteminin önemli parçalarıdır.
2.1. PHP Kurulumu ve Sürüm Kontrolü
Sculpin, PHP ile yazıldığı için sisteminizde PHP’nin kurulu olması zorunludur. Sculpin genellikle PHP 7.2 veya daha yüksek bir sürüm gerektirir. En güncel ve desteklenen sürümü kullanmanız önerilir.
* PHP Kurulumunu Kontrol Etme: Terminalinizi veya komut istemcinizi açın ve aşağıdaki komutu çalıştırın:
php -v
Bu komut, kurulu PHP sürümünüzü gösterecektir. Eğer PHP kurulu değilse veya sürümü eski ise, işletim sisteminize göre kurulum yapmanız gerekir:
* Ubuntu/Debian: sudo apt update && sudo apt install php
* macOS (Homebrew ile): brew install php
* Windows: XAMPP, WAMP veya Laragon gibi bir paket kullanarak PHP’yi kolayca kurabilirsiniz. Alternatif olarak, PHP’nin resmi web sitesinden indirip manuel olarak PATH’e ekleyebilirsiniz.
2.2. Composer Kurulumu
Composer, PHP için bir bağımlılık yöneticisidir. Sculpin’i ve onun bağımlılıklarını yönetmek için Composer’a ihtiyacınız olacak.
* Composer Kurulumunu Kontrol Etme:
composer -V
Bu komut, Composer sürümünüzü gösterecektir. Eğer Composer kurulu değilse:
* Linux/macOS:
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php composer-setup.php
php -r "unlink('composer-setup.php');"
sudo mv composer.phar /usr/local/bin/composer
Bu adımlar, Composer’ı indirir, kurar ve sistem genelinde erişilebilir hale getirir.
* Windows: Composer’ın resmi web sitesinden (getcomposer.org) Windows Installer’ı indirip kurmanız en kolay yoldur.
2.3. Git Kurulumu (Opsiyonel ama Önerilir)
Git, bir sürüm kontrol sistemidir ve Sculpin projeleriniz için şiddetle tavsiye edilir. İçeriğinizi ve kodunuzu yönetmenize, değişiklikleri takip etmenize ve farklı sürümler arasında geçiş yapmanıza olanak tanır.
* Git Kurulumunu Kontrol Etme:
git --version
Eğer Git kurulu değilse:
* Ubuntu/Debian: sudo apt update && sudo apt install git
* macOS (Homebrew ile): brew install git
* Windows: Git’in resmi web sitesinden (git-scm.com) Windows Installer’ı indirip kurabilirsiniz.
3. Sculpin Kurulumu
Ön gereksinimleri tamamladıktan sonra, Sculpin’i sisteminize kurmaya hazırsınız. Sculpin’i iki farklı şekilde kurabilirsiniz: global olarak veya proje bazında.
3.1. Global Kurulum (Composer ile)
Global kurulum, Sculpin komutunu herhangi bir dizinden çalıştırabilmenizi sağlar. Bu, birden fazla Sculpin projesi üzerinde çalışıyorsanız veya sık sık yeni projeler oluşturuyorsanız kullanışlıdır.
composer global require sculpin/sculpin
Bu komut, Sculpin’i Composer’ın global bağımlılıklar dizinine indirir. Bu dizin genellikle ~/.composer/vendor/bin veya benzer bir yoldadır. Sculpin komutunun sistem genelinde çalışabilmesi için bu dizinin PATH ortam değişkeninize eklenmesi gerekebilir.
* PATH’e Ekleme (Linux/macOS):
~/.bashrc, ~/.zshrc veya ~/.profile dosyanına aşağıdaki satırı ekleyin:
export PATH="$PATH:$HOME/.composer/vendor/bin"
Değişiklikleri kaydettikten sonra terminali yeniden başlatın veya source ~/.bashrc (veya kullandığınız dosya) komutunu çalıştırın.
3.2. Proje Bazlı Kurulum (Composer ile)
Proje bazlı kurulumda Sculpin, her proje için ayrı ayrı kurulur. Bu, projenizin bağımlılıklarını izole etmenizi sağlar ve farklı projelerde farklı Sculpin sürümleri kullanmanıza olanak tanır. Bu yöntem genellikle daha güvenli ve yönetilebilirdir.
Yeni bir proje dizini oluşturun ve içine girin:
mkdir my-sculpin-project
cd my-sculpin-project
Ardından, Composer kullanarak Sculpin’i projenize bağımlılık olarak ekleyin:
composer require sculpin/sculpin
Bu komut, Sculpin’i vendor/bin/sculpin yoluna kuracaktır. Bu kurulumda Sculpin komutunu çalıştırmak için her zaman vendor/bin/sculpin ön ekini kullanmanız gerekecektir.
3.3. Kurulumun Doğrulanması
Kurulumun başarılı olup olmadığını kontrol etmek için Sculpin sürümünü sorgulayabilirsiniz.
* Global Kurulum İçin:
sculpin -V
* Proje Bazlı Kurulum İçin:
vendor/bin/sculpin -V
Her iki durumda da, kurulu Sculpin sürüm numarasını görmeniz gerekir.
4. Yeni Bir Sculpin Projesi Oluşturma
Sculpin’i kurduktan sonra, yeni bir web sitesi projesi oluşturmaya hazırsınız. Sculpin, boş bir proje veya önceden tanımlanmış bir şablon kullanarak proje oluşturma seçenekleri sunar.
4.1. Boş Bir Proje Oluşturma
Eğer sitenizi sıfırdan oluşturmak ve tüm yapılandırmayı kendiniz yapmak istiyorsanız, boş bir proje oluşturabilirsiniz:
# Global kurulum için
sculpin init my-new-site
Proje bazlı kurulum için (önceki adımda projenin kök dizinindeyseniz)
vendor/bin/sculpin init .
veya yeni bir dizin oluşturmak için
vendor/bin/sculpin init my-new-site
Bu komut, belirtilen dizinde temel bir Sculpin proje yapısı oluşturacaktır.
4.2. Şablon Kullanarak Proje Oluşturma
Sculpin, özellikle bloglar için hazır şablonlar sunar. Bu şablonlar, başlamak için iyi bir temel sağlar ve blog için gerekli temel düzenleri, CSS’i ve örnek içerikleri içerir.
En popüler şablonlardan biri olan blog şablonunu kullanarak yeni bir proje oluşturalım:
# Global kurulum için
sculpin init my-blog-site --theme=sculpin/sculpin-blog-skeleton
Proje bazlı kurulum için
vendor/bin/sculpin init my-blog-site --theme=sculpin/sculpin-blog-skeleton
Bu komut, my-blog-site adında yeni bir dizin oluşturacak ve içine blog şablonunun içeriğini kopyalayacaktır. Bu, özellikle bir blog başlatmak isteyenler için hızlı bir başlangıç noktasıdır.
4.3. Proje Yapısı ve Dosyalar
Bir Sculpin projesi oluşturduğunuzda, aşağıdaki gibi temel bir dizin yapısıyla karşılaşırsınız:
my-sculpin-project/
├── app/
│ ├── config/
│ │ ├── sculpin_dev.yml
│ │ └── sculpin_prod.yml
│ └── sculpin_kernel.php
├── source/
│ ├── _posts/
│ │ └── 2023-01-01-ilk-yazi.md
│ ├── _views/
│ │ ├── default.html.twig
│ │ └── index.html.twig
│ ├── index.html
│ └── assets/
│ ├── css/
│ └── js/
├── output_dev/ (geliştirme sunucusu çalıştırıldığında oluşturulur)
├── output_prod/ (üretim için derlendiğinde oluşturulur)
├── composer.json
├── composer.lock
└── vendor/
* app/: Sculpin’in ana yapılandırma dosyalarını içerir.
* app/config/: Ortama özgü yapılandırma dosyalarını barındırır. sculpin_dev.yml geliştirme ortamı için, sculpin_prod.yml ise üretim ortamı içindir. Burada URL yapıları, eklentiler ve diğer site ayarları tanımlanır.
* sculpin_kernel.php: Sculpin uygulamasının çekirdeğidir ve genellikle düzenlemeniz gerekmez.
* source/: Web sitenizin tüm kaynak dosyalarını (içerik, şablonlar, varlıklar) barındırır.
* _posts/: Blog yazılarınızı veya diğer zaman serisi içeriklerinizi Markdown formatında tutar. Dosya adları genellikle YYYY-MM-DD-slug.md şeklindedir.
* _views/: Twig şablon dosyalarınızı içerir. Ana düzenler, sayfa şablonları burada yer alır.
* index.html: Sitenizin ana sayfasıdır. Genellikle bir Twig şablonuna yönlendirir.
* assets/: CSS, JavaScript, resimler gibi statik varlıklarınızı tutar.
* output_dev/: Geliştirme sunucusunu çalıştırdığınızda Sculpin’in oluşturduğu geçici statik dosyaları içerir.
* output_prod/: Sitenizi üretim için derlediğinizde oluşturulan nihai statik dosyaları içerir. Bu dizinin içeriği dağıtılır.
* composer.json: Projenizin Composer bağımlılıklarını tanımlar.
* vendor/: Composer tarafından yönetilen tüm PHP bağımlılıklarını içerir.
5. İçerik Oluşturma: Markdown ve Twig
Sculpin’in gücü, içeriği Markdown ile yazma kolaylığını Twig’in esnek şablonlama yetenekleriyle birleştirmesinden gelir.
5.1. Markdown ile Sayfalar ve Yazılar Oluşturma
Sculpin’de içerik genellikle Markdown dosyaları olarak yazılır. Bu dosyalar, sayfanın içeriğinin yanı sıra, sayfa hakkında meta verileri (Front Matter) içeren bir YAML bloğu da içerir.
* Front Matter (YAML) Kullanımı:
Her Markdown dosyasının başında, üç tire (—) ile ayrılmış bir YAML bloğu bulunabilir. Bu blok, sayfa başlığı, yazar, tarih, şablon gibi meta verileri tanımlar.
Örnek bir blog yazısı (source/_posts/2023-10-27-ilk-sculpin-yazisi.md):
---
title: İlk Sculpin Yazım
subtitle: Sculpin ile Statik Site Oluşturma Yolculuğum
author: Adınız Soyadınız
date: 2023-10-27 10:30:00
tags: [Sculpin, Statik Site, PHP, Markdown]
layout: post # Kullanılacak Twig şablonu
is_page: false
---
Merhaba dünya! Bu, Sculpin ile yazdığım ilk blog yazısı. Sculpin, statik web siteleri oluşturmayı gerçekten kolaylaştırıyor.
## Neden Sculpin?
* Hız: Statik siteler inanılmaz hızlıdır.
* Güvenlik: Dinamik bir arka uç yok.
* Basitlik: Markdown ile içerik yazmak çok kolay.
Bu yazıda, Sculpin'in temel özelliklerini ve nasıl kullanıldığını keşfettik. Gelecek yazılarda daha derinlemesine konulara dalacağız.
layout anahtarı, bu içeriği işlemek için hangi Twig şablonunun kullanılacağını belirtir. is_page: false ise bunun bir blog yazısı olduğunu (bir sayfa olmadığını) belirtir.
* Markdown Sözdizimi Temelleri:
* Başlıklar: # Başlık 1, ## Başlık 2, ### Başlık 3
* Paragraflar: Boş bir satırla ayrılmış metin blokları.
* Kalın Metin: kalın veya __kalın__
İtalik Metin: italik* veya _italik_
* Listeler:
Sırasız: - Madde 1, Madde 2
* Sıralı: 1. Madde 1, 2. Madde 2
* Bağlantılar: [Bağlantı Metni](https://example.com)
* Resimler: 
* Kod Blokları: Üç ters tırnak (
) arasına alınmış kod.
5.2. Twig Şablonlama Motoru
Twig, Sculpin'in kullandığı esnek ve güçlü bir şablonlama motorudur. İçeriğinizin nasıl görüneceğini tanımlamak için Twig şablonlarını kullanırsınız.
* Şablon Dosyaları (source/_views/):
Tüm Twig şablonlarınız source/_views/ dizininde bulunur.
* default.html.twig: Genellikle sitenizin ana düzenidir. Diğer şablonlar bu şablonu genişleterek ortak HTML yapısını paylaşır.
* post.html.twig: Blog yazılarını görüntülemek için kullanılan şablon.
* index.html.twig: Ana sayfa için kullanılan şablon.
* Bloklar ve Genişletme (extends, block):
Twig'in en güçlü özelliklerinden biri, şablon kalıtımıdır. Ortak bir düzeni (default.html.twig gibi) tanımlayabilir ve diğer şablonların bu düzeni genişletmesini sağlayabilirsiniz.
source/_views/default.html.twig (Ana düzen):
twig
{% block content %}{% endblock %}
source/_views/post.html.twig (Yazı şablonu):
twig
{% extends ‘default.html.twig’ %}
{% block title %}{{ page.title }} – {% parent %}{% endblock %}
{% block content %}
{{ page.title }}
{{ page.content|raw }} {# Markdown içeriği HTML olarak render edilir #}
{% if page.tags %}
{% endif %}
{% endblock %}
dosyasında tanımlanmış genel site başlığına erişim. *{% extends 'default.html.twig' %}iledefault.html.twigşablonu genişletilir.{% block content %}içindeki her şey, üst şablondakicontentbloğunun yerini alır.{% parent %}ise üst şablondaki bloğun içeriğini korur. * Değişkenlere Erişim: Twig şablonlarında,page(mevcut sayfanın veya yazının meta verileri ve içeriği),site(genel site ayarları) veposts(tüm blog yazıları) gibi değişkenlere erişebilirsiniz. *{{ page.title }}: Mevcut sayfanın başlığına erişim. *{{ page.content|raw }}: Markdown içeriğini HTML olarak işlenmiş haliyle gösterir (rawfiltresi HTML etiketlerinin kaçmasını önler).{{ site.title }}:app/config/sculpin_.yml{% for post in site.posts %}: Tüm blog yazılarını döngüye almak için. * Döngüler ve Koşullar (for,if): Twig, döngüler ve koşullu ifadeler için standart sözdizimine sahiptir:
twig
{% for post in site.posts %}
{{ post.title }}
{{ post.date|date(‘Y-m-d’) }}
{{ post.excerpt }}
{# Yazının kısa özeti #}
{% endfor %}
{% if page.author %}
Yazar: {{ page.author }}
{% endif %}
5.3. Varlıklar (Assets): CSS, JS, Resimler
Statik varlıklarınız (CSS, JavaScript, resimler vb.) genellikle source/assets/ dizininde bulunur. Sculpin, bu dosyaları olduğu gibi output_dev/ veya output_prod/ dizinine kopyalar.
* CSS Bağlama:
HTML şablonlarınızda CSS dosyalarınıza aşağıdaki gibi bağlantı verebilirsiniz:
html
Bu, source/assets/css/style.css dosyasının, oluşturulan statik sitede /assets/css/style.css olarak erişilebilir olmasını sağlar.
* JavaScript Ekleme:
html
* Resim Kullanımı:
Markdown içeriğinizde veya şablonlarınızda resimlere referans verebilirsiniz:
markdown

6. Sculpin Sunucusu ve Geliştirme Süreci
İçerik ve şablonlarınızı oluşturduktan sonra, sitenizi yerel olarak önizlemek ve geliştirme sürecini hızlandırmak için Sculpin'in yerleşik geliştirme sunucusunu kullanabilirsiniz.
6.1. Geliştirme Sunucusunu Başlatma
Projenizin kök dizininde aşağıdaki komutu çalıştırarak geliştirme sunucusunu başlatın:
bash
Global kurulum için
sculpin generate –server –watch
Proje bazlı kurulum için
vendor/bin/sculpin generate –server –watch
* generate: Sculpin'e statik dosyaları oluşturmasını söyler.
* --server: Oluşturulan dosyaları servis etmek için yerel bir web sunucusu başlatır (genellikle http://localhost:8000).
* --watch: Kaynak dosyalarınızdaki değişiklikleri otomatik olarak izler ve bir değişiklik algılandığında siteyi yeniden derler.
Komutu çalıştırdıktan sonra, terminalde sunucunun hangi adreste çalıştığını belirten bir mesaj göreceksiniz. Tarayıcınızla bu adrese giderek sitenizin yerel bir önizlemesini görebilirsiniz.
6.2. Değişiklikleri İzleme ve Otomatik Yenileme
--watch bayrağı sayesinde, source/ dizinindeki herhangi bir dosyayı (Markdown, Twig, CSS, JS vb.) kaydettiğinizde Sculpin sitenizi otomatik olarak yeniden derleyecektir. Çoğu modern tarayıcı, sayfa yeniden derlendiğinde otomatik olarak yenilenecek şekilde yapılandırılmıştır, bu da hızlı bir geliştirme döngüsü sağlar. Eğer tarayıcınız otomatik yenilemiyorsa, sayfayı manuel olarak yenilemeniz gerekebilir.
6.3. Hata Ayıklama İpuçları
* Terminal Çıktısını Kontrol Edin: Sculpin bir hata ile karşılaştığında, terminalde ayrıntılı hata mesajları verir. Bu mesajları dikkatlice okuyun.
* Twig Hataları: Twig şablonlarında bir hata yaparsanız (örneğin, yanlış değişken adı), Sculpin size hatanın hangi şablonda ve hangi satırda olduğunu söyleyecektir.
* YAML Hataları: Front Matter veya yapılandırma dosyalarındaki YAML sözdizimi hataları, Sculpin'in çalışmasını engelleyebilir. Bir YAML doğrulayıcı kullanmak faydalı olabilir.
* Önbelleği Temizleme: Bazen Sculpin'in önbelleği sorunlara neden olabilir. sculpin clear-cache komutunu çalıştırarak önbelleği temizleyebilirsiniz.
* Ortam Değişkenleri: Geliştirme ve üretim ortamları arasında farklı yapılandırmalarınız varsa (sculpin_dev.yml vs. sculpin_prod.yml), doğru ortamda çalıştığınızdan emin olun. Geliştirme sunucusu varsayılan olarak dev ortamını kullanır.
7. Üretim İçin Derleme ve Dağıtım
Siteniz yerel olarak harika göründüğünde, onu internete dağıtmanın zamanı gelmiştir. Sculpin, sitenizi üretim ortamı için optimize edilmiş statik dosyalara derler.
7.1. Üretim Ortamı İçin Derleme
Sitenizi üretim için derlemek için aşağıdaki komutu kullanın:
bash
Global kurulum için
sculpin generate –env=prod
Proje bazlı kurulum için
vendor/bin/sculpin generate –env=prod
* --env=prod: Sculpin'e sitenizi üretim ortamı yapılandırmasını (app/config/sculpin_prod.yml) kullanarak derlemesini söyler. Bu genellikle daha sıkıştırma, önbellekleme ve diğer optimizasyonları içerir.
Bu komut, output_prod/ dizinini oluşturacak (veya güncelleyecek) ve sitenizin tüm statik HTML, CSS, JavaScript ve resim dosyalarını bu dizine yerleştirecektir.
7.2. output_prod Dizini
output_prod/ dizini, web sitenizin dağıtıma hazır nihai sürümünü içerir. Bu dizindeki dosyalar, herhangi bir ek PHP veya veritabanı olmadan doğrudan bir web sunucusunda barındırılabilir. Bu dizinin içeriğini olduğu gibi kopyalayıp web sunucunuzun kök dizinine yerleştirmeniz yeterlidir.
7.3. Dağıtım Yöntemleri
Statik siteleri dağıtmak için birçok basit ve uygun maliyetli yöntem bulunmaktadır:
* FTP/SFTP: output_prod/ dizininin içeriğini geleneksel bir FTP/SFTP istemcisi kullanarak web sunucunuza yükleyebilirsiniz.
* Git: Eğer sunucunuz Git depolarını destekliyorsa, output_prod/ dizinini bir Git deposu olarak kullanabilir ve sunucunuza push edebilirsiniz.
* Statik Hosting Sağlayıcıları (Netlify, Vercel, Render): Bu platformlar, statik siteler için özel olarak tasarlanmıştır ve Git depolarınızla entegre olarak her push işleminde sitenizi otomatik olarak derleyip dağıtabilirler. Genellikle ücretsiz katmanları bulunur.
* GitHub Pages / GitLab Pages: Eğer projeniz zaten GitHub veya GitLab üzerinde ise, output_prod/ dizinini bir gh-pages dalına push ederek veya CI/CD kullanarak sitenizi doğrudan barındırabilirsiniz.
* Amazon S3 / Google Cloud Storage: Statik dosyaları bulut depolama hizmetlerinde barındırabilir ve bir CDN (Content Delivery Network) ile entegre ederek yüksek performanslı ve küresel bir dağıtım sağlayabilirsiniz.
* GitHub Pages ile Dağıtım Örneği:
1. GitHub'da projeniz için bir depo oluşturun (örneğin, kullaniciadi.github.io veya normal bir proje deposu).
2. Projenizin kök dizininde output_prod dizinini oluşturun (eğer yoksa) ve sitenizi derleyin:
bash
sculpin generate –env=prod
3. output_prod dizinini ayrı bir Git deposu olarak ele alabilir veya ana deponuzun bir alt dalına (gh-pages) push edebilirsiniz. En basit yöntemlerden biri, output_prod içeriğini ana deponuzun gh-pages dalına kopyalamaktır:
bash
git checkout -b gh-pages
git add -f output_prod
git commit -m “Publishing to GitHub Pages”
git subtree push –prefix output_prod origin gh-pages # Bu daha iyi bir yöntem olabilir.
Veya daha basit bir yaklaşımla, output_prod içeriğini kök dizine kopyalayıp main dalına push edip GitHub Pages ayarlarından main dalını seçebilirsiniz. Ancak bu, kaynak kodunuzla derlenmiş kodunuzu karıştırır. Genellikle gh-pages dalı tercih edilir.
8. Sculpin'i Özelleştirme ve Genişletme
Sculpin, sitenizi ihtiyaçlarınıza göre özelleştirmek ve genişletmek için çeşitli yollar sunar.
8.1. Konfigürasyon Dosyaları (app/config/)
Sculpin'in davranışını app/config/sculpin_dev.yml ve app/config/sculpin_prod.yml dosyalarında tanımlanan YAML yapılandırmalarıyla kontrol edersiniz.
* Genel Site Ayarları:
yaml
# app/config/sculpin_dev.yml veya sculpin_prod.yml
sculpin_content_types:
pages:
type: path
path: pages
layout: default
posts:
type: path
path: _posts
layout: post
permalink: blog/:year/:month/:day/:slug/
enabled: true
taxonomies:
tags:
layout: tag
permalink: tags/:tag/
Burada, posts içerik tipi için kalıcı bağlantı yapısını (permalink) ve etiketler için taksonomi ayarlarını görebilirsiniz.
* Kalıcı Bağlantılar (Permalinks):
permalink ayarı ile URL yapısını özelleştirebilirsiniz. Örneğin, blog/:year/:month/:day/:slug/ gibi.
8.2. Twig Fonksiyonları ve Filtreleri Oluşturma
Sculpin, Symfony'nin TwigBundle'ını kullanır, bu da kendi özel Twig uzantılarınızı (fonksiyonlar, filtreler, etiketler) kolayca oluşturabileceğiniz anlamına gelir.
1. Bir Twig Uzantısı Sınıfı Oluşturun:
php
// app/src/MyProject/Twig/MyExtension.php (Bu dizini kendiniz oluşturmanız gerekebilir)
namespace MyProject\Twig;
use Twig\Extension\AbstractExtension;
use Twig\TwigFunction;
class MyExtension extends AbstractExtension
{
public function getFunctions()
{
return [
new TwigFunction(‘sayHello’, [$this, ‘sayHelloFunction’]),
];
}
public function sayHelloFunction(string $name = ‘Dünya’): string
{
return ‘Merhaba, ‘ . $name . ‘!’;
}
}
2. Uzantıyı Sculpin'e Kaydedin:
app/sculpin_kernel.php dosyasında, configureContainer() metodunda uzantınızı bir servis olarak kaydedin:
php
// app/sculpin_kernel.php
// …
class SculpinKernel extends BaseSculpinKernel
{
// …
protected function configureContainer(ContainerBuilder $container): void
{
// … diğer konfigürasyonlar
$container->register(‘my_project.twig.extension.my_extension’, ‘MyProject\Twig\MyExtension’)
->addTag(‘twig.extension’);
}
// …
}
Artık Twig şablonlarınızda {{ sayHello('Sculpin') }} gibi özel fonksiyonunuzu kullanabilirsiniz.
8.3. Veri Kaynakları (Data Sources)
Sculpin, sadece Markdown dosyalarından değil, aynı zamanda YAML, JSON veya diğer formatlardaki dosyalardan da veri okuyabilir. Bu, siteniz için yapılandırılmış veri (örneğin, ürün listeleri, ekip üyeleri) kullanmak istediğinizde faydalıdır.
Örneğin, source/_data/team.yml adında bir dosya oluşturun:
yaml
– name: Ali Can
title: Geliştirici
bio: PHP ve Sculpin aşığı.
– name: Ayşe Yılmaz
title: Tasarımcı
bio: Kullanıcı deneyimine odaklı.
Daha sonra Twig şablonlarınızda bu verilere erişebilirsiniz:
twig
{% for member in site.data.team %}
{{ member.name }}
{{ member.title }}
{{ member.bio }}
{% endfor %}
“
8.4. Eklentiler (Plugins) ve Uzantılar
Sculpin, Symfony bileşenleri üzerine inşa edildiği için, Symfony eklentilerini veya kendi özel eklentilerinizi entegre edebilirsiniz. Bu, daha karmaşık işlevsellikler (örneğin, resim optimizasyonu, arama motoru entegrasyonu) eklemek için bir yol sunar. Mevcut eklentileri Sculpin topluluğu kaynaklarında veya GitHub'da bulabilirsiniz.
9. Sıkça Sorulan Sorular ve Sorun Giderme
Sculpin kullanırken karşılaşabileceğiniz bazı yaygın sorunlar ve çözümleri:
* "sculpin: command not found" hatası:
* Composer'ın global bağımlılıklar dizininin PATH'inize doğru şekilde eklendiğinden emin olun.
* Eğer proje bazlı kurulum yaptıysanız, vendor/bin/sculpin kullanmayı unutmayın.source ~/.bashrc
* Termal oturumunuzu yeniden başlatın veya (veya ilgili dosya) komutunu çalıştırın.
* Composer bağımlılık sorunları:
* composer update komutunu çalıştırarak bağımlılıkları güncellemeyi deneyin.vendor/
* dizinini ve composer.lock dosyasını silip composer install komutunu yeniden çalıştırın.
* PHP sürümünüzün Sculpin'in gereksinimlerini karşıladığından emin olun.
* Sayfa veya yazı görünmüyor:
* Markdown dosyasının source/ içindeki doğru dizinde (örneğin _posts/) olduğundan emin olun.layout
* Front Matter'ın doğru YAML sözdizimiyle yazıldığından emin olun. Özellikle anahtarı doğru şablonu işaret ediyor mu?sculpin generate –env=dev
* komutunu çalıştırıp output_dev/ dizinini kontrol edin. Dosyalar orada mı?site.posts
* Twig şablonlarınızda veya site.pages gibi koleksiyonları doğru döngüye aldığınızdan emin olun.
* Resimler veya CSS yüklenmiyor:
* Dosyaların source/assets/ dizininde doğru yolda olduğundan emin olun.src
* HTML'deki veya href yollarının doğru olduğundan emin olun (genellikle /assets/css/style.css gibi kök tabanlı yollar kullanılır).sculpin generate –env=dev
* komutunu çalıştırıp output_dev/assets/` dizinini kontrol edin. Dosyalar kopyalanmış mı?
* Performans ipuçları:
* Büyük resimleri optimize edin.
* CSS ve JavaScript dosyalarını sıkıştırın (Sculpin üretim derlemesinde bunu yapmaya yardımcı olabilir, ancak ek araçlar da kullanabilirsiniz).
* Bir CDN kullanarak varlıklarınızı küresel olarak dağıtın.
* Gereksiz Twig döngülerinden veya karmaşık mantıktan kaçının.
10. Sonuç ve İleri Adımlar
Sculpin, PHP geliştiricileri için statik web siteleri oluşturmak adına güçlü, esnek ve verimli bir araçtır. Bu rehberde, Sculpin’i kurmaktan, içerik oluşturmaya, yerel olarak geliştirmeye ve sitenizi dağıtmaya kadar temel adımları ele aldık. Statik site oluşturucuların sunduğu hız, güvenlik ve düşük maliyet avantajları sayesinde, Sculpin birçok web projesi için mükemmel bir seçim olabilir.
Sculpin ile yolculuğunuza devam ederken, aşağıdaki alanları keşfetmek isteyebilirsiniz:
* Daha Karmaşık Şablonlama: Twig’in daha gelişmiş özelliklerini (makrolar, filtreler, testler) kullanarak daha dinamik şablonlar oluşturun.
* Arama Motoru Optimizasyonu (SEO): Meta etiketlerini, site haritalarını ve diğer SEO en iyi uygulamalarını sitenize uygulayın.
* Dış Veri Kaynakları: Harici API’lardan veri çekerek sitenizi derleme zamanında zenginleştirin (örneğin, bir e-ticaret sitesi için ürün bilgileri).
* CI/CD Entegrasyonu: GitHub Actions, GitLab CI/CD veya Jenkins gibi araçlarla otomatik derleme ve dağıtım süreçleri kurun.
* Eklentiler ve Uzantılar: Sculpin ekosistemindeki mevcut eklentileri keşfedin veya kendi özel ihtiyaçlarınız için eklentiler geliştirin.
* Topluluk Katılımı: Sculpin’in GitHub deposunu ziyaret edin, sorunları bildirin veya yeni özellikler için katkıda bulunun.
Sculpin’in sunduğu olanaklarla, web geliştirme süreçlerinizi daha hızlı, daha güvenli ve daha keyifli hale getirebilirsiniz. Başarılar dileriz!