Страница 1 из 1

html4perl

Добавлено: 2008-04-23 21:16:49
ProFTPD
короче, как лучше всего использовать штмл с прелом? какими модулями или методами лучше?

1) если грузить html файлы, отделять от кода то получаеться, все равно, будет 50 файлов - не удо0бно
2) когда разделить <--1--> <--2--> то в одном файле будет много станиц

можно как-то повставлять переменные в один шаблон, точнее в 5 полных страниц (они для того чтобы дизайн был и...) и работать только с ними?

Re: html4perl

Добавлено: 2008-04-23 22:20:45
hizel

Re: html4perl

Добавлено: 2008-04-23 23:10:48
Alex Keda
а я сам такие писать начал...
под пхп
=========
оказалось реально удобно разобрать страницу на три десятка мелких кусочков и str_replace`ом заменять массивы...
тока вот приходиться ворочть в памяти пачку массивов и кучу переменных.
а так - весьма удобно.
(не только в оперативной - но и в своей =))

Re: html4perl

Добавлено: 2008-04-24 2:16:35
ProFTPD
http://www.template-toolkit.org/ тут в самом низу если я правильно понял, можно не разделять на кусочки а прямо на одно сделать..??

можно нескольок масивов, но лучше хэш...

Re: html4perl

Добавлено: 2008-06-29 8:39:39
ProFTP
HTML::Template

больше всего


[center]HTML::Template
[/center]

HTML::Template — небольшая по объёму перл-библиотека для работы с шаблонами, позволяющая разделять код, данные и представление.

Template Toolkit — наиболее удачное решение для работы с шаблонами в Perl. Template Toolkit более прост в изучении, написании, но обладает гораздо большими возможностями чем HTML::Template. Описываемая в этой статье библиотека позволяет писать лишь простейшие шаблоны, почти лишённые программной логики.
Содержание


* 1 Возможности. Преимущества. Специфика
* 2 Недостатки
* 3 Тэги
o 3.1 TMPL_VAR
o 3.2 TMPL_LOOP
o 3.3 TMPL_INCLUDE
o 3.4 TMPL_IF
o 3.5 TMPL_ELSE
o 3.6 TMPL_UNLESS
* 4 Автор
* 5 Ссылки

Возможности. Преимущества. Специфика

В HTML::Template используется свой мини-язык, по написанию схожий с HTML-тэгами.

Пример шаблона:

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

<html>
<head><title> <TMPL_VAR NAME="title"> </title></head>
<body>
Вывод списка:

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

  <ul>
  <TMPL_LOOP NAME="items">
    <li> <TMPL_VAR NAME="item"> </li>
  </TMPL_LOOP>
  </ul>
</body>
</html>
И вызывающий его скрипт:

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

#!/usr/bin/perl
use HTML::Template;
 
my $template = HTML::Template->new(filename => 'test.tmpl');
 
$template->param(title => "Заголовок страницы");
$template->param(items => [
   {item => 'один'},
   {item => 'два'},
   {item => 'три'},
]);
print "Content-type: text/html\n\n";
print $template->output();
* Может кэшировать шаблоны в память, общую память (shared memory) или на диск.


Недостатки



* Не позволяет обращаться напрямую ко вложенным структурам, таким как хэши массивов и тому подобным.
* Шаблоны можно вкладывать один в другой по схемам сверху-вниз и снаружи-внутрь. Строить шаблоны изнутри-наружу нельзя.
* Переменным нельзя присваивать значения, и вообще, производить с ними какие-либо операции, с них можно только считывать. Из-за этого не получится реализовать шаблонную логику уровня сложности выше простого.
* Из циклов присутствует только foreach, что позволяет вывести только последовательный список.
* Если внутри цикла присутствует переменная с таким же именем, как и вне цикла, то к последней изнутри цикла обратиться нельзя.
* Цикл не позволяет производить итерацию по хэшам.
* HTML::Template не позволяет обращаться к методам объектов.

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

 Тэги
HTML::Template обладает следующим скромным набором тэгов.

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

TMPL_VAR

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

<TMPL_VAR NAME="PARAMETER_NAME">
Самый простой тэг. Выводит значение переменной, значение которой вы присвоили через $template->param(PARAMETER_NAME => «VALUE»).

Позволяет делать HTML-экранирование, при помощи ESCAPE=HTML:

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

<input name=param type=text value="<TMPL_VAR ESCAPE=HTML NAME="PARAM">">
Позволяет делать URL-экранирование ESCAPE=URL, обрабатывать строки, которые в последствии будут строками кода JavaScript ESCAPE=JS. Позвляет так же устанавливать значение переменной по умолчанию DEFAULT='SOME VALUE'.


TMPL_LOOP

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

<TMPL_LOOP NAME="LOOP_NAME"> ... </TMPL_LOOP> 
Цикл по массиву. Переменная LOOP_NAME должна содержать массив хэшей.

<TMPL_LOOP> могут быть вложенными.

По умолчанию, переменные снаружи цикла не видны внутри него. Для изменения этого свойства следует использовать опцию global_vars в конструкторе объекта.

TMPL_INCLUDE

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

<TMPL_INCLUDE NAME="filename.tmpl">
Вставляет на место этого тэга указанный шаблон.

TMPL_IF

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

<TMPL_IF NAME="BOOL">
  Some text that only gets displayed if BOOL is true!
</TMPL_IF>
TMPL_ELSE

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

<TMPL_IF BOOL>
  Some text that is included only if BOOL is true
<TMPL_ELSE>
  Some text that is included only if BOOL is false
</TMPL_IF>
TMPL_UNLESS

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

 <TMPL_UNLESS BOOL>
   Some text that is output only if BOOL is FALSE.
 <TMPL_ELSE>
   Some text that is output only if BOOL is TRUE.
 </TMPL_UNLESS>
Тэг, обратный по действию тэгу <TMPL_IF>

Автор


Sam Tregar

Ссылки

* http://search.cpan.org/dist/HTML-Template/Template.pm