/static/smarty-docs/plugins.modifiers.html
HTML | 280 lines | 280 code | 0 blank | 0 comment | 0 complexity | 9204e7158fb5308a24bbe48001251153 MD5 | raw file
- <HTML
- ><HEAD
- ><TITLE
- >Modifiers</TITLE
- ><META
- NAME="GENERATOR"
- CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
- REL="HOME"
- TITLE="Smarty Manual"
- HREF="index"><LINK
- REL="UP"
- TITLE="Extending Smarty With Plugins"
- HREF="plugins"><LINK
- REL="PREVIOUS"
- TITLE="Template Functions"
- HREF="plugins.functions"><LINK
- REL="NEXT"
- TITLE="Block Functions"
- HREF="plugins.block.functions"><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="plugins.functions"
- ACCESSKEY="P"
- >Prev</A
- ></TD
- ><TD
- WIDTH="80%"
- ALIGN="center"
- VALIGN="bottom"
- >Chapter 16. Extending Smarty With Plugins</TD
- ><TD
- WIDTH="10%"
- ALIGN="right"
- VALIGN="bottom"
- ><A
- HREF="plugins.block.functions"
- ACCESSKEY="N"
- >Next</A
- ></TD
- ></TR
- ></TABLE
- ><HR
- ALIGN="LEFT"
- WIDTH="100%"></DIV
- ><DIV
- CLASS="sect1"
- ><H1
- CLASS="sect1"
- ><A
- NAME="plugins.modifiers"
- ></A
- >Modifiers</H1
- ><P
- > <A
- HREF="language.modifiers"
- >Modifiers</A
- > are little functions
- that are applied to a variable in the template before it is displayed or
- used in some other context. Modifiers can be chained together.
- </P
- ><DIV
- CLASS="funcsynopsis"
- ><A
- NAME="AEN7338"
- ></A
- ><P
- ></P
- ><P
- ><CODE
- ><CODE
- CLASS="FUNCDEF"
- >mixed <B
- CLASS="function"
- >smarty_modifier_<TT
- CLASS="replaceable"
- ><I
- >name</I
- ></TT
- ></B
- ></CODE
- > (mixed $value, [mixed $param1, ...])</CODE
- ></P
- ><P
- ></P
- ></DIV
- ><P
- > The first parameter to the modifier plugin is the value on which
- the modifier is to operate. The rest of the parameters are optional,
- depending on what kind of operation is to be performed.
- </P
- ><P
- > The modifier has to <A
- HREF="http://php.net/return"
- TARGET="_top"
- >return</A
- >
- the result of its processing.
- </P
- ><TABLE
- WIDTH="100%"
- BORDER="0"
- CELLPADDING="0"
- CELLSPACING="0"
- CLASS="EXAMPLE"
- ><TR
- ><TD
- ><DIV
- CLASS="example"
- ><A
- NAME="AEN7350"
- ></A
- ><P
- ><B
- >Example 16-3. A simple modifier plugin</B
- ></P
- ><P
- > This plugin basically aliases one of the built-in PHP functions. It
- does not have any additional parameters.
- </P
- ><TABLE
- BORDER="0"
- BGCOLOR="#E0E0E0"
- CELLPADDING="5"
- ><TR
- ><TD
- ><code><span style="color: #000000">
- <span style="color: #0000BB"><?php<br /></span><span style="color: #FF8000">/*<br /> * Smarty plugin<br /> * -------------------------------------------------------------<br /> * File: modifier.capitalize.php<br /> * Type: modifier<br /> * Name: capitalize<br /> * Purpose: capitalize words in the string<br /> * -------------------------------------------------------------<br /> */<br /></span><span style="color: #007700">function </span><span style="color: #0000BB">smarty_modifier_capitalize</span><span style="color: #007700">(</span><span style="color: #0000BB">$string</span><span style="color: #007700">)<br />{<br /> return </span><span style="color: #0000BB">ucwords</span><span style="color: #007700">(</span><span style="color: #0000BB">$string</span><span style="color: #007700">);<br />}<br /></span><span style="color: #0000BB">?></span>
- </span>
- </code></TD
- ></TR
- ></TABLE
- ></DIV
- ></TD
- ></TR
- ></TABLE
- ><P
- ></P
- ><TABLE
- WIDTH="100%"
- BORDER="0"
- CELLPADDING="0"
- CELLSPACING="0"
- CLASS="EXAMPLE"
- ><TR
- ><TD
- ><DIV
- CLASS="example"
- ><A
- NAME="AEN7355"
- ></A
- ><P
- ><B
- >Example 16-4. More complex modifier plugin</B
- ></P
- ><TABLE
- BORDER="0"
- BGCOLOR="#E0E0E0"
- CELLPADDING="5"
- ><TR
- ><TD
- ><code><span style="color: #000000">
- <span style="color: #0000BB"><?php<br /></span><span style="color: #FF8000">/*<br /> * Smarty plugin<br /> * -------------------------------------------------------------<br /> * File: modifier.truncate.php<br /> * Type: modifier<br /> * Name: truncate<br /> * Purpose: Truncate a string to a certain length if necessary,<br /> * optionally splitting in the middle of a word, and<br /> * appending the $etc string.<br /> * -------------------------------------------------------------<br /> */<br /></span><span style="color: #007700">function </span><span style="color: #0000BB">smarty_modifier_truncate</span><span style="color: #007700">(</span><span style="color: #0000BB">$string</span><span style="color: #007700">, </span><span style="color: #0000BB">$length </span><span style="color: #007700">= </span><span style="color: #0000BB">80</span><span style="color: #007700">, </span><span style="color: #0000BB">$etc </span><span style="color: #007700">= </span><span style="color: #DD0000">'...'</span><span style="color: #007700">,<br /> </span><span style="color: #0000BB">$break_words </span><span style="color: #007700">= </span><span style="color: #0000BB">false</span><span style="color: #007700">)<br />{<br /> if (</span><span style="color: #0000BB">$length </span><span style="color: #007700">== </span><span style="color: #0000BB">0</span><span style="color: #007700">)<br /> return </span><span style="color: #DD0000">''</span><span style="color: #007700">;<br /><br /> if (</span><span style="color: #0000BB">strlen</span><span style="color: #007700">(</span><span style="color: #0000BB">$string</span><span style="color: #007700">) > </span><span style="color: #0000BB">$length</span><span style="color: #007700">) {<br /> </span><span style="color: #0000BB">$length </span><span style="color: #007700">-= </span><span style="color: #0000BB">strlen</span><span style="color: #007700">(</span><span style="color: #0000BB">$etc</span><span style="color: #007700">);<br /> </span><span style="color: #0000BB">$fragment </span><span style="color: #007700">= </span><span style="color: #0000BB">substr</span><span style="color: #007700">(</span><span style="color: #0000BB">$string</span><span style="color: #007700">, </span><span style="color: #0000BB">0</span><span style="color: #007700">, </span><span style="color: #0000BB">$length</span><span style="color: #007700">+</span><span style="color: #0000BB">1</span><span style="color: #007700">);<br /> if (</span><span style="color: #0000BB">$break_words</span><span style="color: #007700">)<br /> </span><span style="color: #0000BB">$fragment </span><span style="color: #007700">= </span><span style="color: #0000BB">substr</span><span style="color: #007700">(</span><span style="color: #0000BB">$fragment</span><span style="color: #007700">, </span><span style="color: #0000BB">0</span><span style="color: #007700">, -</span><span style="color: #0000BB">1</span><span style="color: #007700">);<br /> else<br /> </span><span style="color: #0000BB">$fragment </span><span style="color: #007700">= </span><span style="color: #0000BB">preg_replace</span><span style="color: #007700">(</span><span style="color: #DD0000">'/\s+(\S+)?$/'</span><span style="color: #007700">, </span><span style="color: #DD0000">''</span><span style="color: #007700">, </span><span style="color: #0000BB">$fragment</span><span style="color: #007700">);<br /> return </span><span style="color: #0000BB">$fragment</span><span style="color: #007700">.</span><span style="color: #0000BB">$etc</span><span style="color: #007700">;<br /> } else<br /> return </span><span style="color: #0000BB">$string</span><span style="color: #007700">;<br />}<br /></span><span style="color: #0000BB">?></span>
- </span>
- </code></TD
- ></TR
- ></TABLE
- ></DIV
- ></TD
- ></TR
- ></TABLE
- ><P
- > See also
- <A
- HREF="api.register.modifier"
- ><TT
- CLASS="varname"
- >register_modifier()</TT
- ></A
- >,
- <A
- HREF="api.unregister.modifier"
- ><TT
- CLASS="varname"
- >unregister_modifier()</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="plugins.functions"
- ACCESSKEY="P"
- >Prev</A
- ></TD
- ><TD
- WIDTH="34%"
- ALIGN="center"
- VALIGN="top"
- ><A
- HREF="index"
- ACCESSKEY="H"
- >Home</A
- ></TD
- ><TD
- WIDTH="33%"
- ALIGN="right"
- VALIGN="top"
- ><A
- HREF="plugins.block.functions"
- ACCESSKEY="N"
- >Next</A
- ></TD
- ></TR
- ><TR
- ><TD
- WIDTH="33%"
- ALIGN="left"
- VALIGN="top"
- >Template Functions</TD
- ><TD
- WIDTH="34%"
- ALIGN="center"
- VALIGN="top"
- ><A
- HREF="plugins"
- ACCESSKEY="U"
- >Up</A
- ></TD
- ><TD
- WIDTH="33%"
- ALIGN="right"
- VALIGN="top"
- >Block Functions</TD
- ></TR
- ></TABLE
- ></DIV
- ></BODY
- ></HTML
- >