Şablon motorları faydalı araçlardır, ah bir de güncellemek gerekmese 🙂
Kullandığım Şablon Motoru / Template Engine adı Twig ve çok meşhur bir motor. Uzun zamandır yeni site yapmıyorum ve doğal olarak günceli takip etmiyordum. Lakin TinyMCE’de orta seviyede 3 açık çıkınca hala yayında kalan ve kendi özel altyapımı kullandığım tek sitemi (http://www.kitaphaber.com.tr) güncelleme durumu hasıl oldu. Güncellerken de madem güncelliyoruz tüm vendor klasöründeki scriptleri sırasıyla güncelleyeyim dedim.
Uzun zamandır web sitesi yapıyorum. Açık kaynak olarak ve başkalarının kullanımına açtığım bu alt yapıdan 2 tane site bulunuyor. Lakin bu iki siteye pek kimsenin ilgisi olmadı. (https://github.com/libreajans/superhaber.tv/ ve https://github.com/libreajans/video.superhaber.tv).
Neyse, konumuza dönersek elde kalan tek aktif siteyi twig 1 sürümünden twig 3 sürümüne geçirdim. Peki bunu nasıl yaptım.
İlk önce Composer kurmak gerekti. Bunu şu sayfadan çözdü: (https://www.digitalocean.com/community/tutorials/how-to-install-and-use-composer-on-ubuntu-20-04). Linkte hata yok arkadaşlar, Ubuntu LTS sürümlerini bilgisayarımda kullanıyorum.
Sonra twig indirmek gerekti. Projenin ana klasöründe şu kodu çalıştırdım.
composer require "twig/twig:^3.0"
Sonrasında neleri değiştirmek gerektiğini bulmaktı. Onu da şu sayfadan çözdük (https://twig.symfony.com/doc/3.x/intro.html)
Peki neleri kendi projemde değiştirmek zorunda kaldım. lib.init.php diye tüm dosyaları çağırdığım başlangıç çağrı dosyasında şu değişiklikler yapıldı.
Öcnelikle eski autoloader çağrısını kaldırdım.
Bul:
include SITEPATH.'vendor/Twig/Autoloader.php';
Değiştir:
require_once SITEPATH.'/vendor/autoload.php';
Şu satırı tamamen kaldırdım. Çünkü artık autoloader içinden otomatik hallediliyor.
Twig_Autoloader::register();
Sonrasında tema klasörlerinin yolunu gösterdiğimiz kodu değiştirdik.
Bul:
$loader = new Twig_Loader_Filesystem(SITEPATH.'app/Template/view');
Değiştir:
$loader = new \Twig\Loader\FilesystemLoader(SITEPATH.'app/Template/view');
Sonra template dosyalarının nerede derleneceğini belirttiğimiz cache kodunu değiştirdik.
Bul:
$twig = new Twig_Environment($loader, array('cache' => SITEPATH.'cache/tmp/'));
Değiştir:
$twig = new \Twig\Environment($loader, ['cache' => SITEPATH.'cache/tmp/']);
Bunları yapmak yetmiyor, template control dosyalarını da tek tek değiştirmek gerekti. Örnek olarak bir dosyadaki değişikliği göstereyim.
Bulduğum
$template = $twig->loadTemplate('site_footer.twig');
$footer = $template->render(array('year' => date("Y")));
Değiştirdiğim
$footer = $twig->render('site_footer.twig', ['year' => date("Y")]);
Bu kadar az değişiklikle Twig 1 sürümünden (ki 5 sene önce son sürüm yayınlanmış) yeni twig sürümüne geçiş yapabildim.
En son olarak kod renklendirmenin berbat olması dolayısıyla 2 ekran görüntüsü bırakayım.