PHP + Template System - какъв е вашият подход при изграждане на структурата на сайта?

Fix

New Member
Здравейте,

Започнах да ползвам шаблонни системи в сайтовете ми и открих, че много ми помагат, да се концентрирам върху отделните части на сайта. В момента разучавам Twig и Smarty, но по-лесно ми е да работя с twig. Но откривам, че има деоста различни подходи при изграждането на сайт. Избора на структура трябва да се направи в самото начало на проекта иначе става голямо омазване, ако се опитам да я променя в последствие.
Силно ме интересува какъв подход използвате вие.
До сега съм стигнал до извода, че се използват следните стратегии (php-кода е вляво, тимплейта в дясно):
За примера си представете, че се изграждат поне 3 различни тимплейт страници: Начало, Галерия, Контакти

1. Всяка отделна страница от дизайна се изгражда самостоятелно. И масива (assign) съдържа всичко необходимо за рендването на страницата.
2rpu4w0.jpg


2. Има само една тимплейт страница, а php-кода е разделен на модули, като всеки модул отговаря за отделна част от страницата и при рендване всчико необходимо се събира в един масив:
20pbrb6.jpg


3. Модулно рендване на отделните елементи на страниците. Рендването става последователно - първо се рендва хедъра, после контента и накрая футъра:
2cxgp48.jpg


4. Рендване на отделните страници с наследяване на една главна и промяна на блоковете само където е необходимо. Това го видях в един туториал за Symfony. Контента разширява "хедър и футър", която пък е разширение на базовата страница:
27y8r4z.jpg


Ще съм ви благодарен да споделите кой подход предпочитате. Какви предимства ви дава вашият подход - скорост, яснота за дизайнера, по-добро структуриране и лесно за ориентиране. Аз все още се колебая между последния вариант 4 и до известна степен ми харесва 2-я вариант, но за него е добре отделните страници да имат сходна структура. Търсих в мрежата, да прочета нещо за теорията на шаблоните, но почти няма информация. В общи линии не се дискутира темата, просто в различните уроци са се спрели на някой от вариантите и циклят по него, но защо точно този вариант, не става ясно.
Предварително ви благодаря за споделените мнения!
 
От: PHP + Template System - какъв е вашият подход при изграждане на структурата на са

В Laravel темплейт енжина blade, е вариант 4. Аз с него си играя напоследък.
 
От: PHP + Template System - какъв е вашият подход при изграждане на структурата на са

Разгледах примери с Blade. Интересен енджин. Това, което видях ми прилича на тази структура:
2evugrq.jpg
 
От: PHP + Template System - какъв е вашият подход при изграждане на структурата на са

Интересно е, но засега предпочитам, по възможност без РНР.
 
Re: PHP + Template System - какъв е вашият подход при изграждане на структурата на са

Така, така. Силно препоръчвам 4, заради лесната къстамизация на всяка страница - от до. Но най-често съм виждал 2. Ползват се от повечето афилиейт програми, предоставящи фри темплейти като маркетинг материали. Удобни са, лесно се работи върху тях, но са дървени за модифициране. Ако искаш нещо различно във футъра или хедъра на отделни страници - забравяш. Но бодито - то винаги е различно, ако искаш де. ;)
 
От: PHP + Template System - какъв е вашият подход при изграждане на структурата на са

Ами в Laravel всъщност е малко по-различно от това което си дал като пример:

<!-- app/views/layouts/master.blade.php -->
<html>
<head>
@section('head')
@show

</head>
<body>
<header>
Глобален хедър за всички страници
</header>

<div class="container">
@yield('content')
</div>

<footer>
Глобален футър за всички страници
</footer>

@section('scripts')
@show

</body>
</html>

А страницата вече изглежда така:
@extends('layouts.master')

@section('head')
<title>Ala-bala</title>
@stop

@section('content')
<h1>Основен контент</h1>
@stop

@section('scripts')
<script src="js/jquery.min.js"></script>
@stop

Това което е различното тук е, че не се ограничаваш до хедър/футър/контент, а имаш неограничен брой секции, които можеш да инджектваш в мастър темплейта.
 
От: От: PHP + Template System - какъв е вашият подход при изграждане на структурата н

Ами в Laravel всъщност е малко по-различно от това което си дал като пример:
Това което е различното тук е, че не се ограничаваш до хедър/футър/контент, а имаш неограничен брой секции, които можеш да инджектваш в мастър темплейта.
Естествено. Точно това имах предвид с примера. Няма значение колко са секциите, важното е, че се използва наследяване на базов типлейт, който се разширява. В twig ситуацията е подобна:
http://twig.sensiolabs.org/doc/tags/extends.html

ПС: Благодаря ти за примера! Много ми харесва!
 

Горе