Smarty: Custom Functions-html_select_date
html_select_date
html_select_date is a custom function that creates date dropdowns for you. It
can display any or all of year, month, and day.
Example 8-10. html_select_date
This will output:
<select name="Date_Month"> <option value="1">January</option> <option value="2">February</option> <option value="3">March</option> <option value="4">April</option> <option value="5">May</option> <option value="6">June</option> <option value="7">July</option> <option value="8">August</option> <option value="9">September</option> <option value="10">October</option> <option value="11">November</option> <option value="12" selected="selected">December</option> </select> <select name="Date_Day"> <option value="1">01</option> <option value="2">02</option> <option value="3">03</option> <option value="4">04</option> <option value="5">05</option> <option value="6">06</option> <option value="7">07</option> <option value="8">08</option> <option value="9">09</option> <option value="10">10</option> <option value="11">11</option> <option value="12">12</option> <option value="13" selected="selected">13</option> <option value="14">14</option> <option value="15">15</option> <option value="16">16</option> <option value="17">17</option> <option value="18">18</option> <option value="19">19</option> <option value="20">20</option> <option value="21">21</option> <option value="22">22</option> <option value="23">23</option> <option value="24">24</option> <option value="25">25</option> <option value="26">26</option> <option value="27">27</option> <option value="28">28</option> <option value="29">29</option> <option value="30">30</option> <option value="31">31</option> </select> <select name="Date_Year"> <option value="2001" selected="selected">2001</option> </select>
|
|
Example 8-11. html_select_date
{* start and end year can be relative to current year *} {html_select_date prefix="StartDate" time=$time start_year="-5" end_year="+1" display_days=false}
|
This will output: (current year is 2000)
<select name="StartDateMonth"> <option value="1">January</option> <option value="2">February</option> <option value="3">March</option> <option value="4">April</option> <option value="5">May</option> <option value="6">June</option> <option value="7">July</option> <option value="8">August</option> <option value="9">September</option> <option value="10">October</option> <option value="11">November</option> <option value="12" selected="selected">December</option> </select> <select name="StartDateYear"> <option value="1995">1995</option> <option value="1996">1996</option> <option value="1997">1997</option> <option value="1998">1998</option> <option value="1999">1999</option> <option value="2000" selected="selected">2000</option> <option value="2001">2001</option> </select>
|
|
html_select_time
html_select_time is a custom function that creates time dropdowns for you. It
can display any or all of hour, minute, second and meridian.
The time-attribute can have different formats. It can be a unique timestamp
or a string of the format YYYYMMDDHHMMSS or a string that is parseable by php's
strtotime().
Example 8-12. html_select_time
{html_select_time use_24_hours=true}
|
This will output:
<select name="Time_Hour"> <option value="00">00</option> <option value="01">01</option> <option value="02">02</option> <option value="03">03</option> <option value="04">04</option> <option value="05">05</option> <option value="06">06</option> <option value="07">07</option> <option value="08">08</option> <option value="09" selected>09</option> <option value="10">10</option> <option value="11">11</option> <option value="12">12</option> <option value="13">13</option> <option value="14">14</option> <option value="15">15</option> <option value="16">16</option> <option value="17">17</option> <option value="18">18</option> <option value="19">19</option> <option value="20">20</option> <option value="21">21</option> <option value="22">22</option> <option value="23">23</option> </select> <select name="Time_Minute"> <option value="00">00</option> <option value="01">01</option> <option value="02">02</option> <option value="03">03</option> <option value="04">04</option> <option value="05">05</option> <option value="06">06</option> <option value="07">07</option> <option value="08">08</option> <option value="09">09</option> <option value="10">10</option> <option value="11">11</option> <option value="12">12</option> <option value="13">13</option> <option value="14">14</option> <option value="15">15</option> <option value="16">16</option> <option value="17">17</option> <option value="18">18</option> <option value="19">19</option> <option value="20" selected>20</option> <option value="21">21</option> <option value="22">22</option> <option value="23">23</option> <option value="24">24</option> <option value="25">25</option> <option value="26">26</option> <option value="27">27</option> <option value="28">28</option> <option value="29">29</option> <option value="30">30</option> <option value="31">31</option> <option value="32">32</option> <option value="33">33</option> <option value="34">34</option> <option value="35">35</option> <option value="36">36</option> <option value="37">37</option> <option value="38">38</option> <option value="39">39</option> <option value="40">40</option> <option value="41">41</option> <option value="42">42</option> <option value="43">43</option> <option value="44">44</option> <option value="45">45</option> <option value="46">46</option> <option value="47">47</option> <option value="48">48</option> <option value="49">49</option> <option value="50">50</option> <option value="51">51</option> <option value="52">52</option> <option value="53">53</option> <option value="54">54</option> <option value="55">55</option> <option value="56">56</option> <option value="57">57</option> <option value="58">58</option> <option value="59">59</option> </select> <select name="Time_Second"> <option value="00">00</option> <option value="01">01</option> <option value="02">02</option> <option value="03">03</option> <option value="04">04</option> <option value="05">05</option> <option value="06">06</option> <option value="07">07</option> <option value="08">08</option> <option value="09">09</option> <option value="10">10</option> <option value="11">11</option> <option value="12">12</option> <option value="13">13</option> <option value="14">14</option> <option value="15">15</option> <option value="16">16</option> <option value="17">17</option> <option value="18">18</option> <option value="19">19</option> <option value="20">20</option> <option value="21">21</option> <option value="22">22</option> <option value="23" selected>23</option> <option value="24">24</option> <option value="25">25</option> <option value="26">26</option> <option value="27">27</option> <option value="28">28</option> <option value="29">29</option> <option value="30">30</option> <option value="31">31</option> <option value="32">32</option> <option value="33">33</option> <option value="34">34</option> <option value="35">35</option> <option value="36">36</option> <option value="37">37</option> <option value="38">38</option> <option value="39">39</option> <option value="40">40</option> <option value="41">41</option> <option value="42">42</option> <option value="43">43</option> <option value="44">44</option> <option value="45">45</option> <option value="46">46</option> <option value="47">47</option> <option value="48">48</option> <option value="49">49</option> <option value="50">50</option> <option value="51">51</option> <option value="52">52</option> <option value="53">53</option> <option value="54">54</option> <option value="55">55</option> <option value="56">56</option> <option value="57">57</option> <option value="58">58</option> <option value="59">59</option> </select> <select name="Time_Meridian"> <option value="am" selected>AM</option> <option value="pm">PM</option> </select>
|
|
html_table
html_table is a custom
function that dumps an array of data into an HTML table. The
cols attribute determines
how many columns will be in the table. The
table_attr,
tr_attr and
td_attr values determine the attributes given to
the table, tr and td tags. If tr_attr
or td_attr are arrays,
they will be cycled through. trailpad
is the value put into the trailing cells on the last table row if there are any
present.
Example 8-13. html_table
<?php
require('Smarty.class.php');
$smarty = new Smarty;
$smarty->assign('data',array(1,2,3,4,5,6,7,8,9));
$smarty->assign('tr',array('bgcolor="#eeeeee"','bgcolor="#dddddd"'));
$smarty->display('index.tpl');
?>
|
{html_table loop=$data} {html_table loop=$data cols=4 table_attr='border="0"'} {html_table loop=$data cols=4 tr_attr=$tr}
|
The above example will output:
<table border="1"> <tr><td>1</td><td>2</td><td>3</td></tr> <tr><td>4</td><td>5</td><td>6</td></tr> <tr><td>7</td><td>8</td><td>9</td></tr> </table> <table border="0"> <tr><td>1</td><td>2</td><td>3</td><td>4</td></tr> <tr><td>5</td><td>6</td><td>7</td><td>8</td></tr> <tr><td>9</td><td> </td><td> </td><td> </td></tr> </table> <table border="1"> <tr bgcolor="#eeeeee"><td>1</td><td>2</td><td>3</td><td>4</td></tr> <tr bgcolor="#dddddd"><td>5</td><td>6</td><td>7</td><td>8</td></tr> <tr bgcolor="#eeeeee"><td>9</td><td> </td><td> </td><td> </td></tr> </table>
|
|
math
math allows the template designer to do math equations in the template. Any
numeric template variables may be used in the equations, and the result is
printed in place of the tag. The variables used in the equation are passed as
parameters, which can be template variables or static values. +, -, /, *, abs,
ceil, cos, exp, floor, log, log10, max, min, pi, pow, rand, round, sin, sqrt,
srans and tan are all valid operators. Check the PHP documentation for further
information on these math functions.
If you supply the special "assign" attribute, the output of the math function
will be assigned to this template variable instead of being output to the
template.
Technical Note: math is an expensive function in performance
due to its use of the php eval() function. Doing the math in PHP is much
more efficient, so whenever possible do the math calculations in PHP and
assign the results to the template. Definately avoid repetitive math
function calls, like within section loops.
Example 8-14. math
{* $height=4, $width=5 *}
{math equation="x + y" x=$height y=$width}
OUTPUT:
9
{* $row_height = 10, $row_width = 20, #col_div# = 2, assigned in template *}
{math equation="height * width / division" height=$row_height width=$row_width division=#col_div#}
OUTPUT:
100
{* you can use parenthesis *}
{math equation="(( x + y ) / z )" x=2 y=10 z=2}
OUTPUT:
6
{* you can supply a format parameter in sprintf format *}
{math equation="x + y" x=4.4444 y=5.0000 format="%.2f"}
OUTPUT:
9.44
|
|
mailto
mailto automates the creation of mailto links and optionally encodes them.
Encoding e-mails makes it more difficult for web spiders to pick up e-mail
addresses off of your site.
Technical Note: javascript is probably the most thorough form
of encoding, although you can use hex encoding too.
Example 8-15. mailto
{mailto address="me@example.com"} {mailto address="me@example.com" text="send me some mail"} {mailto address="me@example.com" encode="javascript"} {mailto address="me@example.com" encode="hex"} {mailto address="me@example.com" subject="Hello to you!"} {mailto address="me@example.com" cc="you@example.com,they@example.com"} {mailto address="me@example.com" extra='class="email"'} {mailto address="me@example.com" encode="javascript_charcode"}
OUTPUT:
<a class="blue" HREF="p_mailto:me@example.com" >me@example.com</a> <a class="blue" HREF="p_mailto:me@example.com" >send me some mail</a> <script type="text/javascript" language="javascript">eval(unescape('%64%6f%63%75%6d%65%6e%74%2e%77%72%6 9%74%65%28%27%3c%61%20%68%72%65%66%3d%22%6d%61%69%6c%74%6f%3a%6d%65%40%64%6f%6d% 61%69%6e%2e%63%6f%6d%22%20%3e%6d%65%40%64%6f%6d%61%69%6e%2e%63%6f%6d%3c%2f%61%3e %27%29%3b'))</script> <a class="blue" HREF="p_mailto:%6d%65@%64%6f%6d%61%69%6e.%63%6f%6d" >me@domain.com</a> <a class="blue" HREF="p_mailto:me@example.com?subject=Hello%20to%20you%21" >me@example.com</a> <a class="blue" HREF="p_mailto:me@example.com?cc=you@example.com%2Cthey@example.com" >me@example.com</a> <a class="blue" HREF="p_mailto:me@example.com" class="email">me@example.com</a> <script type="text/javascript" language="javascript"> <!-- {document.write(String.fromCharCode(60,97,32,104,114,101,102,61,34,109,97,105,108,116,111,58,109,101,64,101,120,97,109,112,108,101,46,99,111,109,34,32,62,109,101,64,101,120,97,109,112,108,101,46,99,111,109,60,47,97,62))} //--> </script>
|
|
popup_init
popup is an integration of overLib, a library used for popup windows. These
are used for context sensitive information, such as help windows or tooltips.
popup_init must be called once at the top of any page you plan on using the
popup function. overLib was written by Erik Bosrup, and the homepage is located
at http://www.bosrup.com/web/overlib/.
As of Smarty version 2.1.2, overLib does NOT come with the release. Download
overLib, place the overlib.js file under your document root and supply the
relative path to this file as the "src" parameter to popup_init.
Example 8-16. popup_init
{* popup_init must be called once at the top of the page *} {popup_init src="/javascripts/overlib.js"}
|
|
popup
|