суббота, 19 октября 2013 г.

И снова шаблоны на примере smarty и vamshop.

Для чего нужен шаблонизатор?

Ну людям он нужен что бы:
  1. Отделить верстку от логики.
  2. Получить плюшки типа кеширования
  3. Получить удобный способ систематизировать блоки, шаблоны и прочее.
А для чего он нужен php-движкам?
Для того что б написать у себя в маркетинговых текстах "У нас лучший шаблонизатор и  разделение кода".

Ну давайте посмотрим, как это.
Пациент на сегодня - vamshop.

Итак, у нас есть hrml странички. Мы хотим для них общий header/шапку страницы.

Как сделает здоровый человек? Создаст блок/блоки header.tpl и включит их  в нужном месте в page.tpl.

Там укажет нужные js, css, title, все что душа пожелает.

Как сделает типичный phpкодер, на примере vamshop?

Засунет в контроллер index.php конструкцию include 'app_top.php', в котором захардкодит echo '<.... $tempate_roo/script.js>'.

Т.е. иметь разный набор js/css для разных страниц уже проблема. Вся шапка генерится не шаблонизатором а тупейшим кодом птушника.

Идем дальше.

Как выглядит шаблон вывода списка чего-нибудь у нормального человека?
Ну например так.

<ul>
{foreach from=$myArray item=foo}
    <li>{$foo}</li>
{/foreach}
</ul>

Как он выглядит у курильщика vamshop-ца?

Не угадаете:

   {$content_list}

И отдельно в контроллере

$content='<ul class="my_class1>';
for () {
 $content.='<li > <img src='templete/vamshop/inc/....> ' + $foo;
...
}
smarty->assign (....  , $content);

 Хардкодят они все, пути к рисункам, классы, все что угодно. Главное не стесняться.
И все это внутри в кишках кода, далеко от шаблонов.

Это то, что у них называется:

Разделение всего кода на три слоя: php-html-css, т.е. php код отделён от html кода, html код отделён от элементов оформления (css кода). (http://vamshop.ru/manual/ch15.html)

И это я привел очень еще простой и безопасный пример, что б лапшу кода не устраивать.

Они туда еще global чего-нибудь любят передать. что потом повлияет на содержимое других блоков, ну и конечно, конечно, там же в кучу наши любимые sql запросы с $_POST['bla'].

Непонятно, как их к здоровым то пускают.