Bilmek istediğin her şeye ulaş

PHP'de layout (veya masterpage) nasıl oluşturulur ?

Klasik anlamda header.php, menu.php ve footer.php dosyalarının include edildiği bir layout.php'ye sahip olduğumuzu varsayalım. Oluşturacağımız yeni tüm php dosyalarının bu layout.php dosyasını kullanması için nasıl bir yol izlenir ? Asp.Net'te masterpage kavramına karşılık gelen yapının PHP'de ne olduğunu öğrenmek isterim.Düzenle
Eğer herhangi bir PHP Framework kullanılmıyorsa PHP'nin kendi imkanları içinde şu şekilde hazırlık yapılır :

Projenizde include adında (dilerseniz farklı bir isimde) klasör oluşturun.header.php, menu.php, footer.php dosyalarını bu dizin altında oluşturun ve layout.php dosyası içerisine aşağıdaki gibi include methodu ile dahil edin.

Code
< ? Php include('/include/header.php') ; ? > 
< ? Php include '/include/menu.php'; ? > 
< ? Php include($content) ; ? > 
< ? Php include('/include/footer.php') ; ? > 


Yukarıdaki kodlarda dikkat ederseniz 3.satırda $content adında bir değişken var. Bunun anlamı sitenin içerik alanı bu bölgede çalışacak ve $content değişkenine diğer sayfaları aktaracağız.

Örneğin hakkımızda sayfası oluşturalım. Bunun için about_us.php sayfasını oluşturalım ve bir de about_us_content.php sayfası oluşturalım.

Code
about_us.php
< ? Php
$content = " about_us_content.php" ; 
include 'layout.php'; 
? > 


Yukarıdaki kodlarda about_us.php dosyası çağırıldığında kendisi $content değişkenine about_us_content.php stringini atar ve layout.php dosyasını kendi içinde çağırır. layout.php dosyası yüklenirken de sıra 3. Satırdaki $content değişkenine geldiğinde o bölgeye about_us_content.php dosyasını ekler(basar) . Adres satırında ise about_us.php programı çağırılmıştır.

Code
about_us_content.php
<?php echo 'About Us Page content goes here !' ?>


Asp. Net ve PHP ile ilgili kıyaslama yapanlar bu konularda bolca soru sorarlar. Asp. Net'te bu konu WebForms teknolojilerinde MasterPage ile MVC teknolojilerinde de "Shared\_Layout.cshtml" dosyası ile çözümlenmiştir.

PHP'de ise eğer Zend vb. Frameworkler kullanılmıyorsa yukarıdaki yöntemle bir masterpage ve contentpage ilişkisi çözülebilir. Farklı patternlar da kullanılabilmektedir.
  • Paylaş
Benzer bir özellike için Twig gibi bir template engine kullanman gerek.

symfony.com/doc/current/book/templating...
  • Paylaş
Sonraki Soru
HESAP OLUŞTUR

İstatistikler

834 Görüntülenme2 Takipçi2 Yanıt