Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > by-pkgid > 8377d4bb25a3992aad680df2952f4b71 > files > 140

php-smarty-doc-2.6.26-1mdv2010.0.noarch.rpm

<HTML
><HEAD
><TITLE
>Componentized Templates</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
REL="HOME"
TITLE="Smarty Manual"
HREF="index.html"><LINK
REL="UP"
TITLE="Tips & Tricks"
HREF="tips.html"><LINK
REL="PREVIOUS"
TITLE="WAP/WML"
HREF="tips.wap.html"><LINK
REL="NEXT"
TITLE="Obfuscating E-mail Addresses"
HREF="tips.obfuscating.email.html"><META
HTTP-EQUIV="Content-type"
CONTENT="text/html; charset=ISO-8859-1"></HEAD
><BODY
CLASS="sect1"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>Smarty Manual</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="tips.wap.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>Chapter 18. Tips &#38; Tricks</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="tips.obfuscating.email.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="sect1"
><H1
CLASS="sect1"
><A
NAME="tips.componentized.templates"
></A
>Componentized Templates</H1
><P
>&#13;    Traditionally, programming templates into your applications goes as
    follows: First, you accumulate your variables within your PHP
    application, (maybe with database queries.) Then, you instantiate your
    Smarty object, <A
HREF="api.assign.html"
><TT
CLASS="varname"
>assign()</TT
></A
>
    the variables and <A
HREF="api.display.html"
><TT
CLASS="varname"
>display()</TT
>
    </A
> the template. So lets
    say for example we have a stock ticker on our template. We would
    collect the stock data in our application, then assign these variables
    in the template and display it. Now wouldn't it be nice if you could
    add this stock ticker to any application by merely including the
    template, and not worry about fetching the data up front?
   </P
><P
>&#13;    You can do this by writing a custom plugin for fetching the content and
    assigning it to a template variable.
   </P
><TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
CLASS="EXAMPLE"
><TR
><TD
><DIV
CLASS="example"
><A
NAME="AEN7691"
></A
><P
><B
>Example 18-7. componentized template</B
></P
><P
>&#13;      <TT
CLASS="filename"
>function.load_ticker.php</TT
> -
      drop file in
      <A
HREF="variable.plugins.dir.html"
>&#13;      <TT
CLASS="parameter"
><I
>$plugins directory</I
></TT
></A
>
    </P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
CELLPADDING="5"
><TR
><TD
><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br /><br /></span><span style="color: #FF8000">//&nbsp;setup&nbsp;our&nbsp;function&nbsp;for&nbsp;fetching&nbsp;stock&nbsp;data<br /></span><span style="color: #007700">function&nbsp;</span><span style="color: #0000BB">fetch_ticker</span><span style="color: #007700">(</span><span style="color: #0000BB">$symbol</span><span style="color: #007700">)<br />{<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;put&nbsp;logic&nbsp;here&nbsp;that&nbsp;fetches&nbsp;$ticker_info<br />&nbsp;&nbsp;&nbsp;//&nbsp;from&nbsp;some&nbsp;ticker&nbsp;resource<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">return&nbsp;</span><span style="color: #0000BB">$ticker_info</span><span style="color: #007700">;<br />}<br /><br />function&nbsp;</span><span style="color: #0000BB">smarty_function_load_ticker</span><span style="color: #007700">(</span><span style="color: #0000BB">$params</span><span style="color: #007700">,&nbsp;&amp;</span><span style="color: #0000BB">$smarty</span><span style="color: #007700">)<br />{<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;call&nbsp;the&nbsp;function<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$ticker_info&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">fetch_ticker</span><span style="color: #007700">(</span><span style="color: #0000BB">$params</span><span style="color: #007700">[</span><span style="color: #DD0000">'symbol'</span><span style="color: #007700">]);<br /><br />&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;assign&nbsp;template&nbsp;variable<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$smarty</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">assign</span><span style="color: #007700">(</span><span style="color: #0000BB">$params</span><span style="color: #007700">[</span><span style="color: #DD0000">'assign'</span><span style="color: #007700">],&nbsp;</span><span style="color: #0000BB">$ticker_info</span><span style="color: #007700">);<br />}<br /></span><span style="color: #0000BB">?&gt;</span>
</span>
</code></TD
></TR
></TABLE
><P
>&#13;          <TT
CLASS="filename"
>index.tpl</TT
>
    </P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
CELLPADDING="5"
><TR
><TD
><PRE
CLASS="programlisting"
>{load_ticker symbol='SMARTY' assign='ticker'}

Stock Name: {$ticker.name} Stock Price: {$ticker.price}</PRE
></TD
></TR
></TABLE
></DIV
></TD
></TR
></TABLE
><P
>&#13;    See also
    <A
HREF="language.function.include.php.html"
><TT
CLASS="varname"
>{include_php}</TT
></A
>,
    <A
HREF="language.function.include.html"
><TT
CLASS="varname"
>{include}</TT
></A
>
    and
    <A
HREF="language.function.php.html"
><TT
CLASS="varname"
>{php}</TT
></A
>.
   </P
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="tips.wap.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="tips.obfuscating.email.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>WAP/WML</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="tips.html"
ACCESSKEY="U"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Obfuscating E-mail Addresses</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>