Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Шаблонизатор 
:(
    Опции темы
Gold Dragon
Дата 6.1.2007, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



что-то настолько привык уже писать шаблоны, что даже для сайтиков из 5-6 страничек это по привычке делаю..

А вообще, по моему, самое главное это разделять PHP и HTML ^)


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
Powerhead
Дата 12.1.2007, 14:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 7.11.2006

Репутация: 1
Всего: 2



Хочу спросить, почему же всё-таки целесообразно использовать шаблонные движки, если можно обойтись php.
Для чего создавать тысячи новых синтаксисов

Вот требования к парсеру шаблонов, озвученные в этом топике:

Цитата

Обязательно должна быть поддержка циклических и условных операций ... 
Все это есть в php

Цитата

Очень полезная вещь - это возможность получить вывод шаблона в переменную (без вывода на экран) (аналог fetch в Smarty).
http://php.net/manual/ru/ref.outcontrol.php

Цитата

Возможность подключения текстовых/РНР файлов в шаблон.
Зачем? include()

Цитата

Некие утилиты для составления select'ов и прочих мелочей используемых в формах.
Есть море готовых php классов для этих целей.

Цитата

...по моему не полностью разделяют код от дизайна
Разделить код от дизайна полностью невозможно в принципе.

Цитата

Но конструкции PHP ИМХО не кошерно использовать
Eugene_Bond, почему? Хотелось бы услышать хоть один аргумент.

Цитата

люди могут и не знать php, дизайнеры например, как у нас в конторе... дизайнер верстает... но php не знает... и шаблоны делать умеет... для нашего движка 
А что его знать? Во-первых, дизайнер может получить готовые голые шаблоны с реализацией, при этом блоки кода ему не нужно править вообще.
Во-вторых, изучить несколько функций foreach(), if(), print() проще и целесообразней, чем забивать себе голову синтаксисом, который через 5 лет никому нужен не будет.

Я вижу отличие шаблонных движков от php в одном - в возможности кеширования страниц. Но, при современных мощностях, я уверен, просто бессмысленно жертвовать удобством разработки и плодить множество подъязыков ради сомнительного прироста в производительности вебсайта.

Цитата

так вот. для каждой функции вывода блока должна быть маленькая функция возвращающая время последнего изменения блока (для новостей, дата последней новости, для пользователя например дата последнего привата или даже 0 для стат. блоков!)
Проверка даты изменения каждого блока может занять больше времени, чем просто вывод этих данных из бд.

Цитата

Для менее опытных программистов (или что ещё критичнее верстальщиков) шаблоны PHP могут оказаться слишком мощными, из за чего возможно появление ошибок и нарушение концепции MVC.
Smarty - настолько мощная система, что позволяет запросто разрушить MVC и наделать кучу ошибок.

Пока я не вижу ни одной причины, по которой было бы целесообразно усложнять средства разработки.
PM MAIL WWW ICQ   Вверх
SamDark
Дата 12.1.2007, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый кот
***


Профиль
Группа: Участник
Сообщений: 1424
Регистрация: 25.7.2006
Где: Voronezh

Репутация: 10
Всего: 38



Powerhead, 
Как уже говорилось: 
Цитата
шаблоны PHP могут оказаться слишком мощными

Когда пишешь в одиночку - всё отлично. Никакие шаблоны не нужны.
Если пишет команда, как правило, есть пара опытных программистов и остальные - менее опытные.
Более опытные занимаются обычно разработкой архитектуры, интерфейсов и т.д. Менее опытные часто занимаются частью, отвечающей за представление. Иногда им чего-то нехватает и они начинают писать код, который модифицирует данные модели (не форматирует, а именно модифицирует).

Шаблоны же не позволяют таких вольностей.

Да, Smarty - уже не совсем шаблонная система, в синтаксисе шаблонов которой тоже можно понаделать ошибок, но она как раз не допустит разрушение концепции MVC, что важно.

Цитата
азделить код от дизайна полностью невозможно в принципе.

Согласен. Поэтому надо ставить другую задачу: "Разделить модель от её представления максимально удобным и безопасным способом".

P.s. кэширование организовать на чистом  php не так уж сложно с помощью упомянутых вами ob_*()


--------------------
rmcreative.ru — Это жжж неспроста...
yiiframework.ru — О фреймворке Yii на русском.
reggi — здесь я регистрирую домены
PM MAIL WWW GTalk Jabber MSN   Вверх
Gold Dragon
Дата 13.1.2007, 11:57 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



Цитата(Powerhead @  12.1.2007,  14:50 Найти цитируемый пост)
по моему не полностью разделяют код от дизайна

Цитата(Powerhead @  12.1.2007,  14:50 Найти цитируемый пост)
люди могут и не знать php, дизайнеры например, как у нас в конторе... дизайнер верстает... но php не знает... и шаблоны делать умеет... для нашего движка 

Вот я вывожу типа новостной ленты. Т.е. Есть функция которая где-то по каким-то запроса достаёт данные. Страница состоит из нескольких одинаковых блоков. Вот пример
Код

function sСomment($info){
    return <<<EOF
        <tr>
            <td>Cообщение: {$info['id']}<br>от{$info['user_data']}<br>{$info['bal']} </td>
            <td>{$info['user_com']}<br>({$info['user_nik']}) </td>
        </tr>
        <tr>
                     <td>Комментарий владельца:<br>от {$info['adm_data']} </td>
                     <td>{$info['adm_com']}<br>({$info['adm_nik']})</td>
        </tr>
        <tr>
                     <td><img src="images/1x1_c.gif" width="100%" height="1" border="0"></td>
        </tr>
EOF;
}

А теперь если мне надоела форма вывода, то я просто меняю шаблон и не задумываюсь над тем как работает сам скрипт. И второе, есть люди, которые нефига не понимают в PHP (да им это и не нужно), но которые отвечают за сам дизайн сайта. Вот и получается, что один специалист в PHP, другой HTML+CSS. PHP тут только сама функция, всё остальное чистый HTML

Цитата(Powerhead @  12.1.2007,  14:50 Найти цитируемый пост)
Во-вторых, изучить несколько функций foreach(), if(), print() проще и целесообразней, чем забивать себе голову синтаксисом, который через 5 лет никому нужен не будет.

это полная ерунда! Что значит изучить несколько функций? А остальное? Вот если я из английского знаю только "Май нэйм из Ваня",  то я не думаю что способен разговаривать с англичанами!

Цитата(Powerhead @  12.1.2007,  14:50 Найти цитируемый пост)
Пока я не вижу ни одной причины, по которой было бы целесообразно усложнять средства разработки.

а такой встречный вопрос... ты возвращался к своим старым проектам? Даже если всё комментировать намного сложнее менять дизайн если он не отделён от кода.



--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
SamDark
Дата 15.1.2007, 10:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый кот
***


Профиль
Группа: Участник
Сообщений: 1424
Регистрация: 25.7.2006
Где: Voronezh

Репутация: 10
Всего: 38



Gold Dragon, 
В твоём подходе есть минус - верстальщику не видно кода всей страницы. Да, для программиста так удобней.
Но вот открывать кучу тэгов в function head() и закрывать в function foot() не очень удобно...


--------------------
rmcreative.ru — Это жжж неспроста...
yiiframework.ru — О фреймворке Yii на русском.
reggi — здесь я регистрирую домены
PM MAIL WWW GTalk Jabber MSN   Вверх
Gold Dragon
Дата 15.1.2007, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



Согласен, только это просто шаблон повторяющейся части, а целая страница есть конечно smile

И в любом случае лучше так, чем мешать с PHP


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
SamDark
Дата 15.1.2007, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый кот
***


Профиль
Группа: Участник
Сообщений: 1424
Регистрация: 25.7.2006
Где: Voronezh

Репутация: 10
Всего: 38



Gold Dragon, 
Цитата
 <td>Cообщение: {$info['id']}<br>от{$info['user_data']}<br>{$info['bal']} </td>

Вылитый синтаксис Smarty ;)


--------------------
rmcreative.ru — Это жжж неспроста...
yiiframework.ru — О фреймворке Yii на русском.
reggi — здесь я регистрирую домены
PM MAIL WWW GTalk Jabber MSN   Вверх
Gold Dragon
Дата 16.1.2007, 12:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



SamDark, ну может и так smile зато ничего придумывать и парсить не нужно.

по моему и IPB так написан...


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
SamDark
Дата 16.1.2007, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый кот
***


Профиль
Группа: Участник
Сообщений: 1424
Регистрация: 25.7.2006
Где: Voronezh

Репутация: 10
Всего: 38



Gold Dragon, 
Да, IPB написан именно так.


--------------------
rmcreative.ru — Это жжж неспроста...
yiiframework.ru — О фреймворке Yii на русском.
reggi — здесь я регистрирую домены
PM MAIL WWW GTalk Jabber MSN   Вверх
americanets
Дата 25.1.2007, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1100
Регистрация: 27.9.2006

Репутация: 5
Всего: 12



Проблемка с динамичным созданием шаблона выводит ерунду, то что нужно + код шаблона влезает  

Код

<?php
function LastNews() { 
$sql = "SELECT * FROM `news_config`";
    $result=mysql_query($sql);
    $dat=mysql_fetch_array($result);
    $titles=$dat[sitename];
    $news_kratko=$dat[news_kratko];
    $templates=$dat[templates];
$query="SELECT * from news ORDER BY 'id' DESC LIMIT 0,$news_kratko";
$query = mysql_query($query) or die (mysql_error());
WHILE ($dat=mysql_fetch_array($query))
     {
    $templater= file_get_contents('templates/news/last');
    $HTMLData .= preg_replace('/NEWS/', $dat[nazvanie],$templater);
    $HTMLData .= preg_replace('/KRATKO/',$dat[kratko],$templater);
    
    /* если вывожу так то все путем
    $HTMLData .= "<a href=\"/news/".$dat[id]."/\"><strong><font style=\"BACKGROUND-COLOR: #E05617\" color=\"#ffffff\"> &nbsp; ".$dat[den]." / ".$dat[mecyac]." / ".$dat[god]."  </font><font style=\"BACKGROUND-COLOR: #D7D7D7\" color=\"#000000\">&nbsp;&nbsp;".$dat[nazvanie]."</font></strong></a><br><font color=#666666>".$dat[kratko]."....&nbsp;&nbsp;</font><br><br>\n";*/
    
    }        
    return $HTMLData;        
        }
$TEMP_BLOCKS["LAST-NEWS"] = LastNews();
?>



--------------------
Пусть популярную музыку слушают те, среди кого она популярна
PM   Вверх
SamDark
Дата 25.1.2007, 12:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый кот
***


Профиль
Группа: Участник
Сообщений: 1424
Регистрация: 25.7.2006
Где: Voronezh

Репутация: 10
Всего: 38



americanets, 
Это как раз не шаблон, а антишаблон. Весь смысл шаблона - не мешать его с кодом.


--------------------
rmcreative.ru — Это жжж неспроста...
yiiframework.ru — О фреймворке Yii на русском.
reggi — здесь я регистрирую домены
PM MAIL WWW GTalk Jabber MSN   Вверх
americanets
Дата 25.1.2007, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1100
Регистрация: 27.9.2006

Репутация: 5
Всего: 12



ну вот как раз в шаблоне у меня написано 
NEWS <br>
KRATKO

должно туда все вставиться , а на выходе получается смешение информации в шаблоне и нужной информации

Добавлено @ 14:10 
а вот как сделать чтоб выводилось нормально ума не приложу хотя если делаю в коде

Код

$HTMLData .= "<a href=\"/news/".$dat[id]."/\"><strong><font style=\"BACKGROUND-COLOR: #E05617\" color=\"#ffffff\"> &nbsp; ".$dat[den]." / ".$dat[mecyac]." / ".$dat[god]."  </font><font style=\"BACKGROUND-COLOR: #D7D7D7\" color=\"#000000\">&nbsp;&nbsp;".$dat[nazvanie]."</font></strong></a><br><font color=#666666>".$dat[kratko]."....&nbsp;&nbsp;</font><br><br>\n";


то все пучком а разелить пока не получается


--------------------
Пусть популярную музыку слушают те, среди кого она популярна
PM   Вверх
IZ@TOP
Дата 2.2.2007, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Может кто-то и высказывался за PHP Plain, но я еще раз скажу: нафиг смарти когда он в точности повторяет PHP код? Неужели проще написать {{$var}} вместо <?=$var?>, {{if $var == 1}}...{{/if}} вместо <?if($var == 1)?>...<?}?>?


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Gold Dragon
Дата 5.2.2007, 09:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



может и не проще, но истетичнее smile

на мой взгляд, например, это
Код

<table>
    <tr><?php
        $q['q1'] = 1;
        $q['q2'] = 2;
        <td><?php echo $q['q1'];?></td>
        <td><?php echo $q['q2'];?></td>
    <tr>
        <td><?php if($w == 1){
            $q['q4'] = 4;
        }else{
            $q['q4'] = 5;
        }
        echo $q['q4'];
        ?></td>
        <?php $q['q3'] = 3; ?>
        <td><?php echo $q['q3'];?></td>
    </tr>
</table>

 хуже читается чем это
Код

<?php
$q['q1'] = 1;
$q['q2'] = 2;
$q['q3'] = 3;
if($w == 1){
    $q['q4'] = 4;
}else{
    $q['q4'] = 5;
}
echo sEcho($q);
//--------------------------------------------------
function sEcho($q){
return <<<EOF
<table>
    <tr><?php
        <td>{$q['q1']}</td>
        <td>{$q['q1']}</td>
    <tr>
        <td>{$q['q4']}</td>
        <td>{$q['q3']}</td>
    </tr>
</table>
EOF;
}
?>



--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
SamDark
Дата 5.2.2007, 12:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый кот
***


Профиль
Группа: Участник
Сообщений: 1424
Регистрация: 25.7.2006
Где: Voronezh

Репутация: 10
Всего: 38



Gold Dragon, 
Можно немного покороче:
Код

<table>
    <tr><?
        $q['q1'] = 1;
        $q['q2'] = 2;
        <td><?=$q['q1'];?></td>
        <td><?=$q['q2'];?></td>
    <tr>
        <td><? if($w == 1){
            $q['q4'] = 4;
        }else{
            $q['q4'] = 5;
        }
        echo $q['q4'];
        ?></td>
        <? $q['q3'] = 3; ?>
        <td><?=$q['q3'];?></td>
    </tr>
</table>



--------------------
rmcreative.ru — Это жжж неспроста...
yiiframework.ru — О фреймворке Yii на русском.
reggi — здесь я регистрирую домены
PM MAIL WWW GTalk Jabber MSN   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0647 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.