1

Тема: Smarty (та інші шаблонізатори) - чи доречно застосовувати?

Читаю книжку (Cristian Darie -> Begining  PHP amd MySQL eCommerce) і дізнався, що застосовується така штука, як шаблонізатор.
нібито для розділення логіки view та html коду.
але книжка досить стара , тож питання :
наскільки доречним є нині застосування такої прокладки як шаблонізатор?
що він робить такого, чого не може робити "чистий" PHP ?
який нині тренд - на посилення застосування чи на зникнення з обігу?

Re: Smarty (та інші шаблонізатори) - чи доречно застосовувати?

ping написав:

Читаю книжку (Cristian Darie -> Begining  PHP amd MySQL eCommerce) і дізнався, що застосовується така штука, як шаблонізатор.
нібито для розділення логіки view та html коду.
але книжка досить стара , тож питання :
наскільки доречним є нині застосування такої прокладки як шаблонізатор?
що він робить такого, чого не може робити "чистий" PHP ?
який нині тренд - на посилення застосування чи на зникнення з обігу?

Як на мене, застосування шаблонізатора є досить доречечним, оскільки не буде плутанини php і html.
Також + буде те, що коли треба буде змінити шаблон, не потрібно переписувати все у php файлах, а достатньо у директорії з шаблоном змінити відповідний файл, який відповідає за ту, чи іншу частину шаблону.
Хорошим прикладом шаблонізатора є cms DataLife Engine. Правда він у них удосконалений.
Так наприклад, щоб вивести title статті, достатньо написати {title} і все.

3

Re: Smarty (та інші шаблонізатори) - чи доречно застосовувати?

Hanter написав:

...
Хорошим прикладом шаблонізатора є cms DataLife Engine. Правда він у них удосконалений.
Так наприклад, щоб вивести title статті, достатньо написати {title} і все.


cmsms також застосовує, наскільки я тепер зрозумів.

{} characters are special in Smarty (the template system that CMSMS uses).http://wiki.cmsmadesimple.org/index.php/FAQ

але... що міняти шаблони, що міняти php...
ну, але , раз застосовується - треба мати поняття.

Re: Smarty (та інші шаблонізатори) - чи доречно застосовувати?

ping написав:

але... що міняти шаблони, що міняти php...

Це ви про: "...не потрібно переписувати все у php файлах..." ?
Якщо так, то я мав на увазі, що наприклад не потрібно згадувати у якому файлі, лежить якийсь кусок шаблону і тд тп.

5

Re: Smarty (та інші шаблонізатори) - чи доречно застосовувати?

Hanter написав:
ping написав:

але... що міняти шаблони, що міняти php...

Це ви про: "...не потрібно переписувати все у php файлах..." ?
Якщо так, то я мав на увазі, що наприклад не потрібно згадувати у якому файлі, лежить якийсь кусок шаблону і тд тп.

О!
тепер зрозуміло.

6

Re: Smarty (та інші шаблонізатори) - чи доречно застосовувати?

Якщо так, то я мав на увазі, що наприклад не потрібно згадувати у якому файлі, лежить якийсь кусок шаблону і тд тп.

Як це не потріно. У вас же сайт не 1н файл шаблону а декілька. Не залежно від того чи це header.tpl  чи це htader.php треба знати у якому файлі правити. Файли тем можна виносити куди хочеш не залежно є шаблонізатор чи немає.

Я вважаю що використання шаблонізатора доцільно тільки в 1му випадку, це якщо вам терба шаблон тримати в базі даних або ще якісь дані які динамічно генеруються. Наприклад для генерування договорів на сайті використовується twit так як просто підставляти туди змінні {dealer.name} І шаблони знаходяться в базі.
Сам сайт без всякого шаблонізатора так як з шаблонізатором у вас менше можливостей.

7 Востаннє редагувалося miroslav.chandler (04.11.2012 13:52:03)

Re: Smarty (та інші шаблонізатори) - чи доречно застосовувати?

шаблонізатор - зло :D
коли говориться, про розділення логіки і відображення - мвц вам в руки. Нашо додавати ше один шар абстракції в вигляді шаблонізатора? Якшо мова йде про PHP, то є альтернативний синтаксис.

        <?foreach($docs['items'] as $name=>$dir):?>
            <tr class="title_row">
                <td>
                    <h2><?=$name?></h2>
                </td>
            </tr>
            <?foreach ($dir['doc'] as $doc):?>
                    <tr>
                        <td class="table_name_row"><?=$doc['link']?></td>
                        <td class="table_dark"><?=$this->number($doc['limit3'])?></td>
                    </tr>
            <?endforeach;?>
                <tr>
                    <td class="table_name_row" width="446"><b>йцу</b></td>
                    <td class="table_row table_dark"><?=$this->number($dir['dir_limit3'])?></td> 
                </tr> 
        <?endforeach;?>

Який виглядає майже як шаблонізатор. Чув ше шо шаблонізатори юзають для кешування. Якшо ви вмієте кешувати тільки через шаблонізатор і тільки шаблони, в мене для вас погані новини :)

Подякували: Replace, Patron, funivan3

8

Re: Smarty (та інші шаблонізатори) - чи доречно застосовувати?

Згідний з Miroslavom, тільки от є задачі в яких шаблонізатор допомагає.
У вас 10 000 Юзерів. У вас кожен місяць нова акція на 5 мовах, або просто листи відправляються цим юзерам на різних мовах. У лист треба пісдатвити імя юзера і ще якісь дані, + шаблони литів зберігати в базі. Так як плодити купу файлів немає смислу. тут і поміг шаблонізатор :)  А так на сайті шаблонізатор юзати це дійсно не круто =))

Подякували: miroslav.chandler1

9 Востаннє редагувалося miroslav.chandler (04.11.2012 20:15:24)

Re: Smarty (та інші шаблонізатори) - чи доречно застосовувати?

funivan написав:

Згідний з Miroslavom, тільки от є задачі в яких шаблонізатор допомагає.
У вас 10 000 Юзерів. У вас кожен місяць нова акція на 5 мовах, або просто листи відправляються цим юзерам на різних мовах. У лист треба пісдатвити імя юзера і ще якісь дані, + шаблони литів зберігати в базі. Так як плодити купу файлів немає смислу. тут і поміг шаблонізатор :)  А так на сайті шаблонізатор юзати це дійсно не круто =))

в легких випадках можна обійтися str_replace, але якшо там листи складніші, то так, тут треба заюзати шаблонізатор

Подякували: funivan1

10

Re: Smarty (та інші шаблонізатори) - чи доречно застосовувати?

Шаблони використовують там, де є окремі позиції html дизайнера і php програміста. Тобто дизайнер пише шаблон, який він може відкрити в браузері і який буде на 100% виглядати так само як реальна сторінка. Тобто шаблон це для людей які знають html, але не знають php. Крім того, у випадку переходу на іншу мову програмування шаблон не треба переписувати.

Коли все робить одна людина і переходи на інші платформи не передбачається, то смислу в них нема.

11

Re: Smarty (та інші шаблонізатори) - чи доречно застосовувати?

Vo_Vik написав:

Шаблони використовують там, де є окремі позиції html дизайнера і php програміста. Тобто дизайнер пише шаблон, який він може відкрити в браузері і який буде на 100% виглядати так само як реальна сторінка. Тобто шаблон це для людей які знають html, але не знають php. Крім того, у випадку переходу на іншу мову програмування шаблон не треба переписувати.

Коли все робить одна людина і переходи на інші платформи не передбачається, то смислу в них нема.

якщо ваш верстальщик не може розібратися, де вставити іф, або фореч, добрих новин теж нема :)
люди які не знають PHP, запросто верстають шаблони під WP

Vo_Vik написав:

Тобто дизайнер пише шаблон, який він може відкрити в браузері і який буде на 100% виглядати так само як реальна сторінка.

врестаку не мішає нічого запхати в шаблон лорем іпсум. плюс я вважаю, інтеграцією шаблону в продукт, має займатися кодер. Верстальщик не розбереться в логічних умовах кодера, якщо він не може розібрнатися в простому іфі :)

у випадку переходу на ішу платформу, вам прийдеться шаблонізатор переписувати, якщо не правильний вибрати) А переписувати по любому прийдеться. Мені здається шо логіка відображення вашого додатку з шаблонізатором, не співпаде наприклад з джанго.

єдинине місце де я бачу користь шаблонів, це повторне використання на фронтенді, дс фреймворком.

12

Re: Smarty (та інші шаблонізатори) - чи доречно застосовувати?

іфів не буває в шаблонах. Сторінка розбивається на окремі частинки, і під кожну частинку робиться окремий файл.
На місті блоку з умовою кладеться блок, який буде замінятись іншим блоком з іншого файлу.

13

Re: Smarty (та інші шаблонізатори) - чи доречно застосовувати?

іфів не буває в шаблонах

Ви хочете сказати що коли я натягую дизайн на сайт я в ньому не пишу іф?? в дизайні сайту. Якщо я вас правильно зрозумів то у блоці не буває іфів вірно?

14

Re: Smarty (та інші шаблонізатори) - чи доречно застосовувати?

Vo_Vik написав:

іфів не буває в шаблонах. Сторінка розбивається на окремі частинки, і під кожну частинку робиться окремий файл.
На місті блоку з умовою кладеться блок, який буде замінятись іншим блоком з іншого файлу.

геніально)
а чому ви так вирішили категорично?

15

Re: Smarty (та інші шаблонізатори) - чи доречно застосовувати?

Ну я не категорично. я про той момент коли шаблон є чистим html. Ми ж про цей випадок говорили?

16

Re: Smarty (та інші шаблонізатори) - чи доречно застосовувати?

шаблон не може бути чистим HTML.
наприклад. вам треба вивести для не авторизованих користувачів - ссилку авторизувати, а для авторизованих - hello {{ hello user_name }}, без іфу ніяк.

17

Re: Smarty (та інші шаблонізатори) - чи доречно застосовувати?

{{Hello message}}

А в обробці підставляємо що має бути в тому хело чи лінк чи текст.

18

Re: Smarty (та інші шаблонізатори) - чи доречно застосовувати?

так получається, шо вам треба перенести кусок відображення в контроллер? і якщо треба буде поправити, наприклад класс для ссилки, прийдеться лізти в контроллер? :)

19

Re: Smarty (та інші шаблонізатори) - чи доречно застосовувати?

{{Hello message}}
А в обробці підставляємо що має бути в тому хело чи лінк чи текст.

так получається, шо вам треба перенести кусок відображення в контроллер? і якщо треба буде поправити, наприклад класс для ссилки, прийдеться лізти в контроллер?

Клас для ссилки це ще фігня а от в контроллері ви ж не будете писати

if(!$user){
 $smarty->assign('message', '<a href="/login.html">Login</a>');
}

Як на мене це дуже дуже погана практика якщо так можна культурно виразитись.

p.s. Надіюсь ми з Мірославом донесемо все таки свою думку що без шаблонізатороів набагато краще і зручніше, крім поодиноких випадків )

Подякували: miroslav.chandler1

20

Re: Smarty (та інші шаблонізатори) - чи доречно застосовувати?

два чая funivan'у :)