Perl и Template Tool Kit

  • Автор темы mustafa
  • Дата начала
M

mustafa

Делаю сайт. Индекс сайта начинает с
index.pl Содержимое в index.pl

#use Template;

my $tt2 = Template->new({
INCLUDE_PATH => '/usr/local/www/zones/tmpl',
INTERPOLATE => 1,
}) || die "$Template::ERROR\n";

my $vars={
title=>'КиноХроника',
INTERPOLATE => 1,
items=>['Один', 'Два', 'Три']
};



print "Content-type: text/html\n\n";

$tt2->process('index.tt2', $vars) || die $tt->error(), "\n";


Содержимое в index.tt2 (это темплейт тулкит)
[% WRAPPER _0wrap.tt2 %]


[% END %]


Содержимое в файле _0wrap.tt2Сам код html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="ru" xml:lang="ru">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251"/>
<title>$title</title>
<link rel="stylesheet" href="css/style.css" type="text/css"/>
</head>
<body>

<div style="height: 22px; padding-top: 50px; background-image: url(/htdoc/img/menu_line.jpg); background-repeat: repeat-x; background-position: bottom;">
<span style="margin-left: 5px; font: normal 12px Tahoma; color: red;">»</span>
<a class="nav" href="/anime.pl">Аниме</a></div>

[% content %]


</body>
</html>


Так вот проблема такая что на каждый tag a href приходится создавать отдельные файлы с расширением pl что бы при клике выполнялось все сначала и добавлялось новый темплейт.

Требуетя помошь специалиста. Как организавать все это, как создать систему управления сайта? Что бы все ссылки были в одном выпоняюшем pl файле а то их накопилось очень много.
Спосибо.
 
V

Vovochka

Обычно с помощью mod_rewrite все запросы перенаправлються одному файлу (скрипту), так называемой точке входа приложений.
Что-то типа:
RewriteRule * index.pl [L]

После чего в index.pl идет разбор запроса и в соответствии с ним выбирается и действие и шаблон.

Это упрощенно говоря.
 
M

mustafa

Обычно с помощью mod_rewrite все запросы перенаправлються одному файлу (скрипту), так называемой точке входа приложений.
Что-то типа:
RewriteRule * index.pl [L]

После чего в index.pl идет разбор запроса и в соответствии с ним выбирается и действие и шаблон.

Это упрощенно говоря.

Спосибо. А как этот разбор запроса сделать? Может кусочек кода подбросите плз. :D
 
V

Vovochka

К сожалению под рукой ничего нет, а писать какой-то пример нет ни времени ни желания.

Просто из %ENV выдергивается url запроса и разбирается. хоть тем же split'ом по "/";
А дальше как ваша фантазия подскажет, так и делайте :rolleyes:
 
M

mustafa

Можете посоветовать книгу по Перл где все это описанно. Ведь должна же быть книжка?
 
V

Vovochka

Я таких не видил. Чужие сырцы - мой учебник :)

Самый простой вариант, это когда ссылки идут такого рода:
index.pl?action=showpage&page=about
index.pl?action=news&newsid=45

Передавать таким образом action, и параметры к нему. Ну это как вариант.
 
M

mustafa2

Я заплачу. :)
Если через REQUEST_URI напишеш разбол ссылок.

my ($page) = $ENV{REQUEST_URI} =~ m#/([^/\?]+)#;
и
Template Toolkit
 
M

mustafa2

Обычно с помощью mod_rewrite все запросы перенаправлються одному файлу (скрипту), так называемой точке входа приложений.
Что-то типа:
RewriteRule * index.pl [L]

После чего в index.pl идет разбор запроса и в соответствии с ним выбирается и действие и шаблон.

Это упрощенно говоря.

Проверил RewriteRule * index.pl [L]
перестали грудится картинки и файл style.css
 
V

Vovochka

Разумеется. Чтоб таких проблем не было, используется RewriteCond, задающий условия.
Почитайте доки.
 
M

mustafa2

Сайт сделан полнстью на template toolkit. Сайт большой. Переделывать все тяжело.
Я заплачу если на template toolkit напишеш. Сам недавний прграмер :)

Единственное условие это направить процессы по ссылкам.

my $tt2 = Template->new({
INCLUDE_PATH => '/usr/local/www/filmzones/tmpl',
INTERPOLATE => 1,
}) || die "$Template::ERROR\n";

my $vars={
title=>'КиноХроника',
INTERPOLATE => 1,
items=>['Один', 'Два', 'Три']
};

$tt2->process('index.tt2', $vars) || die $tt->error(), "\n";

можно связатся mavzoley@mail.ru
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!