Template Toolkit: �������: ������� �����

Template Toolkit

(������� ��������)

[ ������� ] [ ����������� ] [ ������ ] [ ���������� ] [ ������� ] [ ������� ] [ ����� ] [ Perl-������� ] ����� ]
 
�����
Template Toolkit | ������� | ������� �����

������� �����

[ ������ � ������� ► ]
��������� �������� ����� � �������������� Template Toolkit.

����������

��������

������ ] [ ������� ] [ ������ ]

���� ������� ������������ ����� ������� � Template Toolkit � ���������� ��������� �������� �������� ������������� ���� ���������� ��� ��������� �������� �����. ������� ��������� ��������� ����������� ������� � �������������� ������ tpagettree � ������������ ������� � �������������� CGI �������� � ������������ Apache/mod_perl.

����������, ������� �������� � ���������� � �������������� �������� ��������� ������������ Template Toolkit. �������������� ���������� ��������� � pod-������������ Template, Template::Manual � � �����������, ��������

    perldoc Template			# ������������� ������ Template.pm
    perldoc Template::Manual	        # ���������� ������������
    perldoc Template::Manual::Config    # ����� ������������

������������ ����� ������������ � HTML ������� (��� ������, � ����� HTML ��������). �������� ������� 'docs' ������ ��� ��������� �������������� ���������� � ���������� HTML ������������.

���� �� �� ������� ��� ����������� ��� ����� HTML ������������, ������ ��� �� ����� ����������� �� ����. �� ������ ��������, ������������ � ������������ ������� ��������� ����� �������...

��������

������ ] [ ������� ] [ ������ ]

Template Toolkit - ��� ����� ������� Perl, ������� � ������������ ��������� ������� �� ��������� ��������. � ������ ��������� ������ - ��� ��������� ��������, ���������� ����������� ����������� ����, ���������� '�����������'. ��������� ��� ���������� ���������� �������� ��������� ��������� �������� � �������� ��������� � ��������� �� ��������� ����� ��������. ��������� ������������ ��� ����������� ��� ������ �������� ����������, ���������� ����������� �������� � ��������� (FOREACH), ���������� �������� �������� (IF/UNLESS/ELSE), ��������� � ���������� ������ �������� (INCLUDE) � �.�.

�� ���� ���������, �������� ��� ������� ��������� ���� � ����� ����� ����� ���������� (�������� HTML, XML, RTF, LaTeX, � �.�.). ��������� ���������� � �������� ������ ����������� ����������� �����. �� ���������, � �������� ����� ����� ������������ [%%], �� ��� ����� ���� �������� �� ������ ����� ����� ������������ ������. ������ HTML ��������� � ��������������� ����������� Template Toolkit.

   [% INCLUDE header
      title = 'This is an HTML example'
   %]
   <h1>Some Interesting Links</h1>
   [% webpages = [
         { url => 'http://foo.org', title => 'The Foo Organisation' }
         { url => 'http://bar.org', title => 'The Bar Organisation' }
      ]
   %]
   Links:
   <ul>
   [% FOREACH link = webpages %]
      <li><a href="[% link.url %]">[% link.title %]</a>
   [% END %]
   </ul>
   [% INCLUDE footer %]

���� ������ ���������� ��� ��������� INCLUDE ������������ ��� ��������, ��������� � ��������� � ������� �������� ��������� �������� 'header' � 'footer'. ��� ����� ����� ��������� �������� ���:

header:

    <html>
    <head>
    <title>[% title %]</title>
    </head>

    <body bgcolor="#ffffff">

footer:

    <hr>
    <center>
    &copy; Copyright 2000 Me, Myself, I
    </center>
    </body>
    </html>

����� � ������� �������� ������������� ��������� FOREACH ��� ���������� ������� ������ � ������� ����� �� ������� 'webpages'. �� ���������� ������ ������� ������, ���������� ��������� ������ �� ����, ��������� �� ���� ��������� 'url' � 'title'. ��������� FOREACH �������� �� �������, ��������� 'link' � �������� ��������� �� ������ ������� ������� (������ �� ���). ����� ��������� [% link.url %][% link.title %] �������� �������������� �������� ���� � ��������� �� � ��������.

� ��������� �������� �������� ������ ������� ����������� ������, ������� ������������ � ��������.

��������� ����������� �������

������ ] [ ������� ] [ ������ ]

������ ������, �� ������ ����� ���������� ��� � �������� ��������� �����. �������� ������� � ������� ������ ��� ����� ������������� ������� tpage. ��� ������������ ��� ����� ���������� Template Toolkit � ������ ���� ����������� � ������� � ������������ ������� perl.

���� �� ��������� ���� ������ ��� ���� 'mypage.html', ��� ����� ��������� �������:

    tpage mypage.html

��� ������� �������� ��������� �������, � ����� ����� ��������� �� STDOUT (�.�. �������� �� ������ ������). �� ����� ������������� ����� � ����, �� ������ ���������, �� ���������� �� �� ��� �����, ��� � ��� �������, ����� �� ������������ ���. �� ������ ������������ ��� �������� � ������� ������ ��������� ����������. ��������, ��� �������� ����������� ���������� '.atml' (������ 'Another Template Markup Language'?) � ��������� '.html' ��� �������� ������ (�������������, ��� �� �������� HTML). ���, �� ������ ������������� ����� � ������ �������, ��������

    tpage mypage.atml > mypage.html
    tpage templates/mypage.html > html/mypage.html

������� tpage �������� ������ � ������������� ��� ����, ����� ���� ����������� ������ ���������� ������ ��� ������������� ������ perl-���. ����� ������ ������� ttree �������� ����, �� ������ ��� ���������� ������ ���������������� �������� �� ������� ���� (��� ��������� ������ ������ �������):

    <html>
    <head>
    <title>This is an HTML example</title>
    </head>

    <body bgcolor="#ffffff">

    <h1>Some Interesting Links</h1>

    Links:
    <ul>
       <li><a href="http://foo.org">The Foo Organisation</a>
       <li><a href="http://bar.org">The Bar Organisation</a>
    </ul>

    <hr>

    <center>
    &copy; Copyright 2000 Me, Myself, I
    </center>

    </body>
    </html>

������� headerfooter �������� (��������������, ��� �� �� ������� � ��� ��������� � ������� ��������) � ������ � ������� ������������� � ������ � HTML-�����.

������� ttree, ����� ������������ � ������� ���������� Template Toolkit, ������������� ����� ������ ������ ��������� ��������. ��� ������ ������� �������, ��� ����� ���������� ������� ���������������� ����, � ����������� ������� ���������� '.ttreerc' � ����� �������� ��������. �������� 'y', ����� ������� ����.

������������ �� ttree ���������, ��� �� ������ �������� ������������ ��� �����, � ����� ��������� ��������� � ���������� ��������� ����� � ���� �����. ���������������� ����, ����������� � �������� �������, �������� �����������, ������� ����� ����� ������.

    perldoc ttree
    ttree -h

������� ������, ���������������� ���� ��������� ��������, � ������� �������� ������� (src), � ���� ����� ����������� �������������� ����� (dest), � ��������� ������ �������� (lib), ������� ����� ��������� ����� ��������, ������� �� ���������� �������� � ������� ��������� INCLUDE � ���� �������� �������. ����� � ���������������� ����� ����� ������� ����� ������� (����� ��� 'verbose' � 'recurse') � ��� ������ ���������� ��������� ���������� ������ ������, ������� ���������� ������������ �������� (ignore, accept) ��� ������� �����, ������� ������ ��������� ����� ����������� (copy).

������ ����� .ttreerc:

$HOME/.ttreerc:

    verbose
    recurse
    # �������, � ������� �������� ������ ���������������� ����� ttree
    cfg = ~/.ttree
    src  = ~/websrc/src
    lib  = ~/websrc/lib
    dest = ~/public_html/test
    ignore = \b(CVS|RCS)\b
    ignore = ^#

����� ������� ����� ������ ���������������� ������ � ��������� �� � ��������, ��������� � ����� 'cfg', ��� �������� ����. ����� �� ������ ������� ������� ttree ����� '-f filename', ����� ������������ ����� �� ����� ��������.

����� �� ���������� ������, �� ���������� ��� ����� � �������� 'src' (������� ����� � ������������, ���� ����������� ����� 'recurse') � ������� � �������� 'dest'. ���� ��������� ����� �� ���������� ��� �� ����� ����� ������ ����� �����������, ��� �������������� �������� ���� (������), �� �������� ���� ����� ��������� �������� � ����� ������� � �������� ����. ����� '-a' ��������� ������ ���������� ��� ����� ��� ����������� �� ������� �����������.

������ �� ������������ ����� �� �������� 'lib', �� �� �������� ������� � ���������� INCLUDE_PATH, ������������ ���������� �������� ��� ���� ����� �� ��� ���������� ��������������� ������, ����������� � ���������� INCLUDE ��� PROCESS. ����� �������, ������� 'lib' - ������� ����� ��� �������� ���������, ������������ � ��������, ����� ��� header, footer, � �.�., ������� �� �������� ����������� � ������ ������ ����� �����.

����� � ���������������� ����� ����� ������� ��������� ����� Template Toolkit. ��� ��������� ��������� ���������� ���������� � ������������ ttree � ������� ������� ('ttree -h'). ��������,

$HOME/.ttreerc:

    pre_process = config
    interpolate
    post_chomp

����� 'pre_process' ��������� ������� ������, ������� ����� ��������� ����� ������ ������. �������������, ��� ����� ���� ����� 'post_process' ��� ���������� �������, ��������������� ����� ��������� �����. � ����������� ���� ��������� �� ���������, ��� ������ 'config' ����� ����������� � �������� ����������� �������. �� ����� ������� ���� ���� � �������� 'lib' � ������������ ��� ��� ���������� ��������� ����� ����������, ������� ������������ ����� ������ �� ���-�������� � ������� �� ����� �������� ������������ � ������ ��������. ����� � ���� ���� �� ����� �������� ������ � ��������� HTML-���������, ��� ����, ������� ����� ����� ���������� � ������ ������ �������, �� ���� �� ����� ������������ ��� ���� ����� ��������� ���� 'header'.

$lib/config:

    [% root     = '~/abw'
       home     = "$root/index.html"
       images   = "$root/images"
       email    = 'abw@wardley.org'
       graphics = 1
       webpages = [
         { url => 'http://foo.org', title => 'The Foo Organsiation' }
         { url => 'http://bar.org', title => 'The Bar Organsiation' }
       ]
    %]

���������� ������� 'header' � 'footer' �� ������������ ����� ������� � �������� �� � ������� 'lib', �� ������ �������� ��������� � ����� �������� 'src' ���-��������, �������� ����������� ����, � ������������ �� � ������� ttree.

$src/newpage.html:

    [% INCLUDE header
       title = 'Another Template Toolkit Test Page'
    %]
    <a href="[% home %]">Home</a>
    <a href="mailto:[% email %]">Email</a>
    [% IF graphics %]
    <img src="[% images %]/logo.gif" align=right width=60 height=40>
    [% END %]
    [% INCLUDE footer %]

����� �� ��������, ��� ������������ ���������������� ���������� � �������� ������ ��� ��������� ��������� ������������ (��������, 'graphics') � ���������� ����� ����������, ����� ��� ����� email, URL� �������� ��������, �������� � ���������� � �.�. ����� ������ ��������� ���������� ��� ��������� ���� ���, � ����� ������� ������������ �� ����������� �� ���� ��������� � ���������� ����������� ����� �������� �� �������� �� �����.

����� ������� ttree, �� ������ ������� ������ � ����������� ���� ����� (��������������, ��� ���� verbose ����������).

  ttree 1.14 (Template Toolkit version 1.02a)
        Source: /home/abw/websrc/src
   Destination: /home/abw/public_html/test
  Include Path: [ /home/abw/websrc/lib ]
        Ignore: [ \b(CVS|RCS)\b, ^# ]
          Copy: [  ]
        Accept: [ * ]
    + newpage.html

'+' ����� 'newpage.html' ���������� ��� ���� ��� ��������� �����������, � ����� �������� � �������� ����������. ���� �� ����� ��������� ��� �������, �� �������, ��� � ���� ������ ������ ������ '+' ����� ������� '-' � ����� ��������� ������� �� ������� ���� �� ��� ��������� �����������.

    - newpage.html                     (not modified)

��������� ��������� �������� 'newpage.html' � �������� ���������� � ����� ����������� �������, ��� � ��������� �����, � �� ���� ������� ����� �� ��� ��������� ���������. ��� ����, ����� ������������� ���������� ��� �������� �����, ����������� ����� '-a'. ������������� �� ������ ������� ���� ��� ����� �������� ������ � �������� ���������� ��������� ������ ��� ������� ttree:

    ttree newpage.html

���������� ����� ��������� ����������� ���� ����� ��������� ��������� �������.

$dest/newpage.html:

    <html>
    <head>
    <title>Another Template Toolkit Test Page</title>
    </head>

    <body bgcolor="#ffffff">

    <a href="~/abw/index.html">Home</a>
    <a href="mailto:abw@wardley.org">Email</a>
    <img src="~/abw/images/logo.gif" align=right width=60 height=40>

    <hr>

    <center>
    &copy; Copyright 2000 Me, Myself, I
    </center>

    </body>
    </html>

�� ������ �������� ������� ������ ���������� � ������� 'src' � ttree ���������� �� ����������. ����� ������� ����� ��������� ��������� ����������� ���������� ����� � ������� ����� �������. �������������� ������ ����������� � ���, ��� �� ������ ���� ������� � ����������� ������, ������ ����� ����� � ���� ������ �����������, ������������� ����� ����� ������� � ����������.

������������ ��������� ������� � ������� CGI ��������

������ ] [ ������� ] [ ������ ]

������ Template ������������ ������� ��������� � ���������� Template Toolkit ��� ������������� � CGI-�������� � ������������ Apache/mod_perl. ������ �������� � ���� ������� ������ Template � ������� ������� 'use', �������� ��������� ������� � ������� ������ new(), � ����� ��������� ����� ������� process(), ��������� � �������� ��������� ��� ����� �������. ������ ������������ �������� - ������ �� ��� � �����������, ������� �� ����� ������� ���������� � �������:

    #!/usr/bin/perl -w
    use strict;
    use Template;
    my $file = 'src/greeting.html';
    my $vars = {
       message  => "Hello World\n"
    };
    my $template = Template->new();
    $template->process($file, $vars)
	|| die "Template process failed: ", $template->error(), "\n";

��� ���� ����� ���� ������� �������� � ��������� �� ���������� ��������, �� ����� �������� ��������� ����� ������������ � ������ ������������, ����� �������� ������� � ����� ���������:

    my $template->new({
	# ��� ������ ����� ��������
	INCLUDE_PATH => '/home/abw/websrc/src:/home/abw/websrc/lib',
	# �������������� ���������� lib/config, ����� ���������� �������������� ����������
	PRE_PROCESS  => 'config',
    });

��������, ��� ����� �� ���������� � ����� PRE_PROCESS ���� 'config'. ��� ��������, ��� �������, ������� �� ����� ������������ ����� ������������ �� �� ���������� ����������, ������� �� ���������� ������ ��� ������������� � ����������� ���������. ��� �� ����� �������� ���������� �� � �������. ��� �� �����, �� ����� ������������ �������������� ������ � ����������������, ����������� ��� ������� ����� ��� ����������, ������������ ������ process().

�������� ���� ����� ��������� ������� ����� ��� ������ ����������, ������ �� �������, ������ ����, ������� ��� �������. Template Toolkit ������������� �������� ������ ��������� ��� ������� � ������ ���������� ����, ����� �� ������ ������������ ���������� � �������.

�������� ����� ��������� ������ ��� ����������� ������������. ����� ��������� ���������� �������, ������������ � '$vars', �� ������� ������ �� ������ CGI � ������ �� ������� 'get_user_projects'.

    #!/usr/bin/perl -w
    use strict;
    use Template;
    use CGI;
    $| = 1;
    print "Content-type: text/html\n\n";
    my $file = 'userinfo.html';
    my $vars = {
        'version'  => 3.14,
	'days'     => [ qw( mon tue wed thu fri sat sun ) ],
	'worklist' => \&get_user_projects,
        'cgi'      => CGI->new(),
	'me'       => {
            'id'     => 'abw',
            'name'   => 'Andy Wardley',
	},
    };
    sub get_user_projects {
	my $user = shift;
	my @projects = ...   # ��������� �������
	return \@projects;
    }
    my $template = Template->new({
	INCLUDE_PATH => '/home/abw/websrc/src:/home/abw/websrc/lib',
	PRE_PROCESS  => 'config',
    });
    $template->process($file, $vars)
	|| die $template->error();

���� �������� ������ �������, ������� �� ����� ������������ � �������.

$src/userinfo.html:

    [% INCLUDE header
       title = 'Template Toolkit CGI Test'
    %]
    <a href="mailto:[% email %]">Email [% me.name %]</a>
    <p>This is version [% version %]</p>
    <h3>Projects</h3>
    <ul>
    [% FOREACH project = worklist(me.id) %]
       <li> <a href="[% project.url %]">[% project.name %]</a>
    [% END %]
    </ul>
    [% INCLUDE footer %]

���� ������ ���������� ��� ����� ��������� perl-���������� (���) � ������������� (HTML), ��� �� ������ ������ ����� ��������� ��������, �� � ��������� ����������� ������������ ������������ ��������� ��������, ����� ��� �����, ������� � �.�. ��������� ������� ��� ����������� ������ CGI ��������, �� ������ ���������� ����� �� �����������, ����� �� �������� ��� ���������� ����������� ������� � ������� ttree � ������ �������.

����� ����, �� ����� ��� �������������� ��� ������, ��� �� ����� ������������ ����� ���� �� ������ ��������, ������������ ������������ ������. CGI ������ ��� ��������� ���� ������ ������������� �����, ��������, ������������ ���� ������ ��� ����� ��������� ����� �������������, �� �� ����� � ���������� �������������� ����������� ��� ���������� ������������ ������� � �������������, � ������ ������ ��� ������ ������ ���� ������������� �������, � �.�. �� ������ ����������� � perl-���� ������ ������ ����������, � ����� ������� ��� ��� ���� ������ ��� ����, ����� ���������� ����������� ��� �������� ��������� ���������� �����.

������������ ��������� ������� ����� ���������� APACHE/MOD_PERL

������ ] [ ������� ] [ ������ ]

��������: �� ������ ������� �� ���� CPAN ������ Apache::Template, ������� ������������ ������� � ������ � ������������� ��������� ����� Apache/mod_perl � Template Toolkit. � ������ ��������� ����� ��������� ��� �������� ������ ����� (0.01), ������� ���������� ������ ����� ������� �����������, �� � ��� ����������� ������� �����, ���� �� ���, ��� ������� ����. ������� �������� ������������� ������ ���� ����������� ����������. ��� �� �����, �� ������ �������, ��� ����� ������������ �������� ���� ����������� ���������� ��� ���� ����������� �����, � ���� ������ ������� ��� � ���� ��������.

������ Template ����� ������������ ������� �������� �� ����������� Apache/mod_perl. ���� �������� �������� �������� ����� ������������ Apache httpd.conf:

    PerlModule CGI;
    PerlModule Template
    PerlModule MyOrg::Apache::User
    PerlSetVar websrc_root   /home/abw/websrc
    <Location /user/bin>
        SetHandler     perl-script
        PerlHandler    MyOrg::Apache::User
    </Location>

���� �������� ���������� URL '/user/bin', ��� ������� � �������� ����� ������������ ������ handler() ������ MyOrg::Apache::User. ���� ������ ����� ��������� �������������� ���:

    package MyOrg::Apache::User;

    use strict;
    use vars qw( $VERSION );
    use Apache::Constants qw( :common );
    use Template qw( :template );
    use CGI;

    $VERSION = 1.59;

    sub handler {
    	my $r = shift;
    	my $websrc = $r->dir_config('websrc_root')
    	    or return fail($r, SERVER_ERROR,
    			   "'websrc_root' not specified");
    	my $template = Template->new({
    	    INCLUDE_PATH  => "$websrc/src/user:$websrc/lib",
    	    PRE_PROCESS   => 'config',
    	    OUTPUT        => $r,     # ������ ����� � ������ ������� Apache
    	});

    	my $params = {
    	    uri     => $r->uri,
    	    cgi     => CGI->new,
    	};

    	# ���������� path_info ��� ����������� �������, ������� ���������� ����������
    	my $file = $r->path_info;
    	$file =~ s[^/][];

    	$r->content_type('text/html');
    	$r->send_http_header;

    	$template->process($file, $params)
    	    || return fail($r, SERVER_ERROR, $template->error());

    	return OK;
    }

    sub fail {
    	my ($r, $status, $message) = @_;
    	$r->log_reason($message, $r->filename);
    	return $status;
    }

���������� �������� � �������� ��������� ������ � ���������� ��� ��� ����������� �������� 'websrc_root' �� ����� ������������. ��� �������� ����� ������������ ��� ����������� INCLUDE_PATH ��� �������� ������� Template. ����� �� ������� �������� URI � ������� ������ CGI. ��� ������� ������������ ��� ���������� �������.

���� ��� ������� ����������� �� PATH_INFO �������. � ����� �������, ��� ����� ������ URL, ������� ����� '/user/bin', �� ���� ��� '/user/bin/edit', �������� ����� ���� 'edit', ������������� � "$websrc/src/user" ����� ������� ��������� � ������������ ������. ���� ����� ������������ �������� � ����� print() ������� ������� Apache.

������������� �������-���������� (��������)

������ ] [ ������� ] [ ������ ]

��� �� ��� ��������, ��� �������� ������������� �������� � ������� CGI �������� ��� ������������ Apache/mod_perl ����� ��������� ������ � ������� �� Perl � ����������� �������. Template Toolkit ����� ������������� ��������� ��� �������� ������� ���������� (��������), ������� ��������� ��� ���������� ��� �������������� ������ �/��� ���������������� � ��������� ������ � ����� ��������� ��� � ������������ �� ���������� � ������� ��������� USE.

�������� ������������ ������ ������� ����������� � ���, ��� �� ������ ������������ ����� ���������� � ����� ��������, ���� � ���, ������� ������������ ��� ���������� ������������ �������� � ������� tpage ��� ttree. ��� �� ����� ���������� ������ ������� �� Perl ������ ��� ����, ����� ��������� ������ � ������� ��� ��������� ����� ��� ���������� �������.

������� ���������������� ���� ������� �� ������� ������� DBI, ����������� ������� ��������� (Simon Matthews <sam@knowledgepool.com>). �� ������ ������� ���� ������ � ����� �������� 'src', ���������� ��� ��� ������ ttree � ���������� ���������. ����������, ���� ������ ������� �� ������� ���������� ���� ������ SQL, �� �� ������ ������������ ��� ��� ���� �����������, ���� ������ ������������� ��� ������ ������������ Template Toolkit.

    [% INCLUDE header
       title = 'User Info'
    %]

    [% USE DBI('dbi:mSQL:mydbname') %]

    <table border=0 width="100%">
    <tr>
      <th>User ID</th>
      <th>Name</th>
      <th>Email</th>
    </tr>

    [% FOREACH user = DBI.query('SELECT * FROM user ORDER BY id') %]
    <tr>
      <td>[% user.id %]</td>
      <td>[% user.name %]</td>
      <td>[% user.email %]</td>
    </tr>
    [% END %]

    </table>

    [% INCLUDE footer %]

������ - ��� ������� Perl ������, ������������� � ������������ ����� � ������������� � ���������� ����������� ����� �������, ����� Template Toolkit ���� ����� ��� � ������������� ���������. �� ������ ������� ���� ����������� ������ � ������� ������������ ������ Template::Plugin.

���� �������� ������, ������� ���������� ��������� ������ ('foo' � 'people') � ����� ����� ������� ('bar'). �� ��������� ������� �� ������� ������ 'FooBar' � �������� ��� � ������ 'MyOrg::Template::Plugin::FooBar'. �� �������� 'MyOrg' � �������� ����� ������ 'Template::Plugin::*', ����� �������� ��������� ���� � ������������� ���������.

��������� ������ ����� ������� � ������� Perl ������� h2xs:

    h2xs -A -X -n MyOrg::Template::Plugin::FooBar

��� ������� ������� ��������� ���������, ���������� ��� ������ � ������� ������, ������������ ��� ����� ������. �� ������ ��������������� FooBar.pm, ����� �� �������� �������� ���:

    package MyOrg::Template::Plugin::FooBar;
    use Template::Plugin;
    use vars qw( $VERSION );
    use base qw( Template::Plugin );
    $VERSION = 1.23;
    sub new {
        my ($class, $context, @params) = @_;
	bless {
	    _CONTEXT => $context,
            foo      => 25,
            people   => [ 'tom', 'dick', 'harry' ],
	}, $class;
    }
    sub bar {
	my ($self, @params) = @_;
        # ...���-�� ������...
	return $some_value;
    }

��� ������� � Perl, ����������� ������� new() �������� ��� ������ � �������� ������� ���������. ��������� �������� - ������ �� ��������� ������� Template::Context. ������ ��� �� ����� ����������� �� ���� �������. ��� �������� ������ ������� Template Toolkit. �� ������������� ������ � ���������������� ���������� � ��������� �������� ����� ����������� ���������������� � ���. ��� ��� ���� �� �����, �� �� ��� �� ����� �������� ��� ������ � ���������� ������� '_CONTEXT'. ��������� ������������� - ��� ���������� �� ������ ����������, ������� ��������� ��� ��� ���������� ��������� � Template Toolkit �� ����� �������� �������� ������ � ���� ����������. ������ ������������ ���������� 'foo' � 'people' - ��� ������� ������, ������� ����� �������� �� ��������, ������������ ���� ������. ������ �� ������� �� ������ Template::Context ���� �������������� ���������, ������� ����������� � ���������� USE, ����� ��� �������� ������, 'dbi:mSQL:mydbname', ������� �� ������������ � ���������� ������� � �������� DBI.

���� ��� �������� ��������� ������ �� ������������ h2xs, �� � ��� ��� ���� ���� Makefile.PL � �� ������ ��������� �������� ��������� �� ������ � ��������� ������. �� �������� �������� ����� � test.pl!

    perl Makefile.PL
    make
    make test
    make install

���� �� �� ����� ��� �� ������ ���������� ������ � ������� ����� ��� �������� ������� Perl (��������, ���� � ��� ������������ ����������), �� ������ ���������� ���������� ��������� PERL5LIB, ����� ������� ������ �����, ��� ���������� ������. ���� �� ����������� ttree, ������ ����� �� ������ �������� ��������� ������ � ��� ���������������� ����. ��� ����� ����������� ���������� '/path/to/modules' � ������ @INC.

$HOME/.ttreerc:

    perl5lib = /path/to/modules

��� ���� �������������� ������ ������ ���� ���������, ����� ������� ������� ����� ��� �������, ������� �� ������� ��� ����� ��������:

$HOME/.ttreerc:

    plugin_base = 'MyOrg::Template::Plugin'

���� �� ������ ������, ������������ ������ Template ��������, ��� ���������� ����� ���� �������� ��� �������� ������������ ��� �������� �������.

    use Template;
    my $template = Template->new({
	PLUGIN_BASE => 'MyOrg::Template::Plugin'
    });

������ �� ����� ������� ������, ������������ ���� ������:

    [% INCLUDE header
       title = 'FooBar Plugin Test'
    %]
    [% USE FooBar %]
    Some values available from this plugin:
      [% FooBar.foo %] [% FooBar.bar %]
    The users defined in the 'people' list:
    [% FOREACH uid = FooBar.people %]
      * [% uid %]
    [% END %]
    [% INCLUDE footer %]

����� 'foo', 'bar' � 'people' �� ������� FooBar ������������� ������������� � ��������������� ���������� ��� ������ ������� �������� � ������ �������.

��������� ���� ������, ����� ������� ���� ������, ���������� ��� ���������������� ����������, ������� ����� ����� ���� ����������� �� ������� � ����� �������. ������� ��������� ����� ����������� ������� � ��������� ������ ��������� ��������� �������, ������������ ������� �� ���������� ������� ��������, ������ �� ���� � ������� � ������ ����������.

�����

������ ] [ ������� ] [ ������ ]

���� ������ (Andy Wardley <abw@andywardley.com>)

http://www.andywardley.com/

������

������ ] [ ������� ] [ ������ ]

Template Toolkit ������ 2.14, ���� ������ - 4 ������� 2004.

��������� �����

������ ] [ ������� ] [ ������ ]

  Copyright (C) 1996-2004 Andy Wardley.  All Rights Reserved.
  Copyright (C) 1998-2002 Canon Research Centre Europe Ltd.

���� ������ �������� ��������-���������������� ����������� ������������; �� ������ �������������� �/��� �������������� ��� �� ��� �� ��������, ��� � Perl.

liveinternet.ru: �������� ����� ����������� �� �������