Perl и Template Tool Kit

Тема в разделе "Perl программирование", создана пользователем mustafa, 29 мар 2009.

  1. mustafa

    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;">&raquo;</span>
    <a class="nav" href="/anime.pl">Аниме</a></div>

    [% content %]


    </body>
    </html>


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

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

    Vovochka Гость

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

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

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

    mustafa Гость

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

    Vovochka Гость

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

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

    mustafa Гость

    Спосибо.
     
  6. mustafa

    mustafa Гость

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

    Vovochka Гость

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

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

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

    mustafa2 Гость

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

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

    mustafa2 Гость

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

    Vovochka Гость

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

    Vovochka Гость

    Мое давнее баловство. "Красивых" урлов там нет, но хоть что-то там есть. Суждению и обсуждению не подлежит.
    Посмотреть вложение vwe.rar
     
  12. mustafa2

    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
     
Загрузка...
Похожие Темы - Perl Template Tool
  1. Anna_Kashina
    Ответов:
    0
    Просмотров:
    136
  2. SvetlanaL
    Ответов:
    0
    Просмотров:
    408
  3. SvetlanaL
    Ответов:
    0
    Просмотров:
    423
  4. SvetlanaL
    Ответов:
    0
    Просмотров:
    504
  5. SvetlanaL
    Ответов:
    0
    Просмотров:
    606

Поделиться этой страницей