Шаблоны

И всё прочее, что касается HTML
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Шаблоны

Непрочитанное сообщение zg » 2008-12-28 21:15:16

совсем недавно наткнулся на такую штуку http://sourceforge.net/projects/php-templates/. Заинтерисовало тем, что на пхп.нет про неё ни слова не написано. Почитал доку, в принципе вещь интересная. Кто-нибудь ей пользовался?

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35454
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: [PHP] Шаблоны

Непрочитанное сообщение Alex Keda » 2008-12-28 21:59:25

невижу каких-то преимуществ перед самописными темплейтами, которые юзаю.
может будет чуть быстрей - но у у меня и так тысячные секунды на сбрку из полусони шаблонов...
Убей их всех! Бог потом рассортирует...

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: [PHP] Шаблоны

Непрочитанное сообщение zg » 2008-12-28 22:47:21

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

На данный момент, я так думаю, надо переходить тотально на XSLT. Но может я чего-то упускаю отказываясь от этого модуля? :smile:

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: [PHP] Шаблоны

Непрочитанное сообщение ProFTP » 2008-12-29 3:46:31

где-то было написано что этот шаблон из perl интегрировали (не смотрел - не знаю)

про смарти говорили что не реально использовать, но легко там просто массивы загрузить, то есть только ресурсов выделить, я использвоал gallery2, которая на смарти, это ужос был на одного пользователя 10М рама

если используется mod-php, то php и html одно целое как и разницы нету где html...
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: [PHP] Шаблоны

Непрочитанное сообщение zg » 2008-12-29 8:15:02

ProFTP писал(а):я использвоал gallery2, которая на смарти, это ужоснах был на одного пользователя 10М рама
-))) есть такое дело. Но если бы смарти был компилированным модулем пхп на С++, то я бы пожалуй его использовал и неважно, сколько бы он жрал. Важно то, что он бы был включён в дистрибутив пхп.
ProFTP писал(а):если используется mod-php, то php и html одно целое как и разницы нету где html...
суть не в этом, а в том чтобы разделить логически обработку информации и её вывод. Это позволяет во-первых упростить код, а во-вторых разделить работу - одни пишут шаблоны, вторые пишут логику. Смарти делал упор как раз на это разделение.

В принципе с точки зрения обывателя смарти избавляет от многих проблем и даёт весомые преимущества. Но чтобы его использовать надо знать как минимум два языка - пхп и смарти :smile: Платой за простоту является невозможность проверки синтаксиса на стадии редактирования и выбора переменных из списка. Это позволяет к примеру зенд студия для пхп. Поэтому я рассуждал примерно так - если на входе имеем пхп-код и на выходе такой же пхп-код, то на кой тогда смарти?!...

Помимо смарти есть интересный шаблонизатор - парсер от артлебедева. Это самостоятельный сервер, он основан и предназначен для шаблонов. Очень простой, функциональный и быстрый, но увы никак с пхп не связан....

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

Поэтому хотелось бы узнать, может кто-нибудь использует шаблонизаторы сторонних производтелей, которые заслуживают внимания?

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: [PHP] Шаблоны

Непрочитанное сообщение ProFTP » 2008-12-29 8:25:10

я использую HTML::Template кэширую в оперативку

Код: Выделить всё

blind_cache - if set to 1 the module behaves exactly as with normal caching but does not check to see if the file has changed on each request. This option should be used with caution, but could be of use on high-load servers. My tests show blind_cache performing only 1 to 2 percent faster than cache under mod_perl.

NOTE: Combining this option with shared_cache can result in stale templates stuck permanently in shared memory!
еще есть

http://search.cpan.org/~tinita/HTML-Tem ... ompiled.pm
http://search.cpan.org/~samtregar/HTML- ... .05/JIT.pm

можно пхп сессии использовать а шаблоны на перле
артлебедева
что это? от чего?
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: [PHP] Шаблоны

Непрочитанное сообщение zg » 2008-12-29 8:33:43

ProFTP писал(а):еще есть httр://search.cpan.org/~tinita/HTML-Tem ... ompiled.pm
-))) это практически XSLT в чистом виде, только проще и намного быстрее.
ProFTP писал(а):можно пхп сессии использовать а шаблоны на перле
не, пожалуй это перебор -)))

Аватара пользователя
hizel
дядя поня
Сообщения: 9032
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: [PHP] Шаблоны

Непрочитанное сообщение hizel » 2008-12-29 9:41:08

вот еще есть отечественная разработка
http://reki.ru/products/ctpp/
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: [PHP] Шаблоны

Непрочитанное сообщение zg » 2008-12-29 13:17:07

hizel писал(а):вот еще есть отечественная разработка

Код: Выделить всё

Пример 3.1:
Шаблон:

<table width="100%">
    <TMPL_loop EMPLOYEE_INFO>
    <tr>
    <td>#: <TMPL_var __COUNTER__></td>
        <td>Имя: <TMPL_VAR NAME></td>
        <td>Должность: <TMPL_VAR JOB></td>
        </tr></TMPL_LOOP>
</table>
сильно смахивает на XSLT
В тоже время, библиотека быстрее широкоизвестных проектов типа Xalan-C или libxslt потому, что не предоставляет излишнюю, зачастую ненужную, но снижающую производительность функциональность.
.... :smile:

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: [PHP] Шаблоны

Непрочитанное сообщение zg » 2008-12-29 13:40:31

Код: Выделить всё

		<xsl:for-each select="table/column">
	<th>
		<a href="{@href}" title="{.}"><xsl:value-of select="." /></a>
	</th>
		</xsl:for-each>
а так выглядит цикл на XSLT... несколько сложнее, но не сильно.

Аватара пользователя
hizel
дядя поня
Сообщения: 9032
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: [PHP] Шаблоны

Непрочитанное сообщение hizel » 2008-12-29 13:44:56

они все похожи, тут оно по мотивам HTML::Templates сделано
мне из тэмплейтов больше нравится то, что сделанно в python
особенно Jinja

Код: Выделить всё

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html lang="en">
<head>
    <title>My Webpage</title>
</head>
<body>
    <ul id="navigation">
    {% for item in navigation %}
        <li><a href="{{ item.href }}">{{ item.caption }}</a></li>
    {% endfor %}
    </ul>

    <h1>My Webpage</h1>
    {{ a_variable }}
</body>
</html>
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: [PHP] Шаблоны

Непрочитанное сообщение ProFTP » 2008-12-29 14:31:00

я смотрел и пилил несколько больши программ на пхп, лучше всего без шаблона можно разделить данные в 2 этапа...в первом код. а во втором шаблон
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: [PHP] Шаблоны

Непрочитанное сообщение ProFTP » 2008-12-29 14:33:57

hizel писал(а):они все похожи, тут оно по мотивам HTML::Templates сделано
мне из тэмплейтов больше нравится то, что сделанно в python
особенно Jinja

Код: Выделить всё

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html lang="en">
<head>
    <title>My Webpage</title>
</head>
<body>
    <ul id="navigation">
    {% for item in navigation %}
        <li><a href="{{ item.href }}">{{ item.caption }}</a></li>
    {% endfor %}
    </ul>

    <h1>My Webpage</h1>
    {{ a_variable }}
</body>
</html>
элементов много кажется на странице? шаблон должен быть такой чтобы не ставить дофига всего, или зачем тогда шаблон?

В чем разница

Код: Выделить всё

    for item in navigation {
     echo '   <li><a href="{{ item.href }}">{{ item.caption }}</a></li>'
    }
а как ты заносишь данные в шаблон?

Код: Выделить всё

push @{$rows}, $_ while $_ = $sth->fetchrow_hashref();
 
# instantiate the template and substitute the values
my $template = HTML::Template->new(filename => 'songs.tmpl');
$template->param(ROWS => $rows);

<table>
<!-- TMPL_LOOP NAME=ROWS -->
   <tr>
      <td><!-- TMPL_VAR NAME=TITLE --></td>
      <td><!-- TMPL_VAR NAME=ARTIST --></td>
      <td><!-- TMPL_VAR NAME=ALBUM --></td>
      <td><!-- TMPL_VAR NAME=YEAR --></td>
   </tr>
<!-- /TMPL_LOOP -->
</table>

Код: Выделить всё

my $data = $DBH->selectall_arrayref("
   select @{[join(',', @COLS)]}
   from songs
   order by ?
", undef, ($sort));

# prepare the DS for the headers

# prepare the DS for the rows
my $i;
my $rows = [
   map {
      my $row = $_;
      (++$i % 2)
         ? { ODD  => [ map { {VALUE => $_} } @{$row} ] }
         : { EVEN => [ map { {VALUE => $_} } @{$row} ] }
   } @{$data}
];


<TMPL_LOOP NAME=ROWS>
   <tr>
   <TMPL_UNLESS NAME="__ODD__">
      <TMPL_LOOP NAME=EVEN>
         <td style="background: #B3B3B3"><TMPL_VAR NAME=VALUE></td>
      </TMPL_LOOP>
   <TMPL_ELSE>
      <TMPL_LOOP NAME=ODD>
         <td style="background: #CCCCCC"><TMPL_VAR NAME=VALUE></td>
      </TMPL_LOOP>
   </TMPL_UNLESS>
   </tr>
</TMPL_LOOP>
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

Аватара пользователя
hizel
дядя поня
Сообщения: 9032
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: [PHP] Шаблоны

Непрочитанное сообщение hizel » 2008-12-29 15:21:02

да везде принцип одинаковый
разделяем логику обработки данных и логику отображения данных, тут довольно тонкая граница, можно легко скотицо к аля-php всё в одном
разные системы шаблонов по разному в этом плане ориентированы
некоторые, как например HTML::Templates жестоко ограничивают кол-во операций и возможностей
другие отдают на откуп создателю, такие например как Template Toolkit, в котором с помощью плагинов, можно даже мускул запросы слать

золотую середину каждый выбирает сам ;)
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: [PHP] Шаблоны

Непрочитанное сообщение ProFTP » 2008-12-29 15:26:50

это тоже жырная штука Template Toolkit, можно на ней написать CMS, не использую perl и php
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

Аватара пользователя
hizel
дядя поня
Сообщения: 9032
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: [PHP] Шаблоны

Непрочитанное сообщение hizel » 2008-12-29 15:29:19

это из той же серии, что и "можно гланды через анус отрезать" :roll:
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: [PHP] Шаблоны

Непрочитанное сообщение ProFTP » 2008-12-29 15:33:54

это кстате можно так как у тебя в это шаблоне шаблолне будет myqsl, массивы, хэши, цыклы, арифметические выражения
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

Аватара пользователя
hizel
дядя поня
Сообщения: 9032
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: [PHP] Шаблоны

Непрочитанное сообщение hizel » 2008-12-29 15:40:31

ты это к чему ?

вот еще аспект - разделение труда
в самом элементарном случае, один программист и один дизайнер
дизайнеру нужен инструмент который не напрягает его лишними знаниями,
то есть попробуй напряги и выучи человека xslt
нужен простой язык шаблонов причём такой чтобы его ограничители не ломали например подсветку в редакторе HTML-ном
jinja как раз с таким прицелом и делалась их кстати таких еще пачка в интернетах
чего чего а шаблонов для pythn вагон и тележка, разных есть и xml подобные
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: [PHP] Шаблоны

Непрочитанное сообщение zg » 2008-12-29 18:31:42

а кто-нибудь XSLT юзает? пятый раз начинаю читать спецификацию XSLT и всё-равно нифига не понимаю...

Аватара пользователя
Volodymyr
лейтенант
Сообщения: 614
Зарегистрирован: 2008-06-17 16:04:56
Откуда: Ukraine, Lviv
Контактная информация:

Re: [PHP] Шаблоны

Непрочитанное сообщение Volodymyr » 2008-12-30 16:20:51

zg писал(а):а кто-нибудь XSLT юзает? пятый раз начинаю читать спецификацию XSLT и всё-равно нифига не понимаю...
Я использовал на старой роботе. Жутко интересная вещь. Чем-то на Пролог похожа. Два единственных минуса. 1. Очень прожорливая (тогда оно саблотроном крутилось, сейчас говорят не особо шустрее стало) ну и 2. Нелинейность языка все-таки резко сужает количество разработчиков которые могут поддерживать. вот и скатился к Смарти с его компилированными шаблонами (по суте тоже РНР)и кешированием страниц. Если честно по скорости нареканий пока нету, хотя смотреть надо в каждом частном случае. А возможность вынесение части бизнес логики (кстати это присутствует и XLST что является не плохим плюсом) делает некоторые вещи более простыми что-ли (например подбитие суммы в колонках при выводи таблиц во время ее формирования). Еще одна позитивная сторона XLST - возможность трансформации на стороне клиента. В таком случае ресурсы экономятся отлично, но не все браузеры умеют делать трансформацию XML-ля. Алгоритм роботы просто, данные в XML, а XML на трансформацию XLST (шаблон). Или же 2 документа на пользователя.

P.S. в свое время писал свои шаблонизаторы, если базироваться суто на парсинге то есть проигрыш компилированы в РНР шаблонам.

jeehadina
мл. сержант
Сообщения: 93
Зарегистрирован: 2008-04-07 8:59:20

Re: [PHP] Шаблоны

Непрочитанное сообщение jeehadina » 2008-12-30 19:11:08

для самописных движков Smarty - лучшее решение, ИМХО.
и все это баян про его неповоротливость. при сегодняшних соотношениях цен на рабочие руки и более мощные железки Smarty рулит.
я не баба, я - мужик...
(это чтоб никто не путал)

Аватара пользователя
Volodymyr
лейтенант
Сообщения: 614
Зарегистрирован: 2008-06-17 16:04:56
Откуда: Ukraine, Lviv
Контактная информация:

Re: [PHP] Шаблоны

Непрочитанное сообщение Volodymyr » 2008-12-30 19:20:14

jeehadina писал(а):для самописных движков Smarty - лучшее решение
А что есть не самописный движок?

jeehadina
мл. сержант
Сообщения: 93
Зарегистрирован: 2008-04-07 8:59:20

Re: [PHP] Шаблоны

Непрочитанное сообщение jeehadina » 2008-12-30 20:08:53

Volodymyr писал(а):
jeehadina писал(а):для самописных движков Smarty - лучшее решение
А что есть не самописный движок?
я имел в виду веб-приложения? написанные без использования "вседелающих" фреймворков и CMS. (joomla, drupal, nuke, чего там еще.),
где составлящие организующие взаимодействие с БД, кешем, шаблонами и т.д. писалось для конкретного проекта, либо собиралось из уже готовых решений.
я не баба, я - мужик...
(это чтоб никто не путал)

jeehadina
мл. сержант
Сообщения: 93
Зарегистрирован: 2008-04-07 8:59:20

Re: [PHP] Шаблоны

Непрочитанное сообщение jeehadina » 2008-12-30 20:09:45

сорри, затупил. :-D
Не самописный движок: joomla, nuke, dle, drupal
это имелось в виду
я не баба, я - мужик...
(это чтоб никто не путал)

Аватара пользователя
Volodymyr
лейтенант
Сообщения: 614
Зарегистрирован: 2008-06-17 16:04:56
Откуда: Ukraine, Lviv
Контактная информация:

Re: [PHP] Шаблоны

Непрочитанное сообщение Volodymyr » 2008-12-30 20:16:52

jeehadina писал(а):Не самописный движок: joomla, nuke, dle, drupal
А его пишут не такие же люди как мы? На самом деле это просто готовые поделки в основном солянка из таких же готовых вещей. Кстати в большинстве из них внутри можно обнаружить тот же смарти. Если не в чистом виде, то в виде концепта . Хотя последнее время идет в обычной поставке классов.