diff options
Diffstat (limited to 'vendor/smarty/smarty/docs/appendixes/tips.md')
-rw-r--r-- | vendor/smarty/smarty/docs/appendixes/tips.md | 332 |
1 files changed, 0 insertions, 332 deletions
diff --git a/vendor/smarty/smarty/docs/appendixes/tips.md b/vendor/smarty/smarty/docs/appendixes/tips.md deleted file mode 100644 index b0ea40cc7..000000000 --- a/vendor/smarty/smarty/docs/appendixes/tips.md +++ /dev/null @@ -1,332 +0,0 @@ -Tips & Tricks {#tips} -============= - -Blank Variable Handling {#tips.blank.var.handling} -======================= - -There may be times when you want to print a default value for an empty -variable instead of printing nothing, such as printing ` ` so that -html table backgrounds work properly. Many would use an -[`{if}`](#language.function.if) statement to handle this, but there is a -shorthand way with Smarty, using the -[`default`](#language.modifier.default) variable modifier. - -> **Note** -> -> "Undefined variable" errors will show an E\_NOTICE if not disabled in -> PHP\'s [`error_reporting()`](&url.php-manual;error_reporting) level or -> Smarty\'s [`$error_reporting`](#variable.error.reporting) property and -> a variable had not been assigned to Smarty. - - - {* the long way *} - {if $title eq ''} - - {else} - {$title} - {/if} - - {* the short way *} - {$title|default:' '} - - - -See also [`default`](#language.modifier.default) modifier and [default -variable handling](#tips.default.var.handling). - -Default Variable Handling {#tips.default.var.handling} -========================= - -If a variable is used frequently throughout your templates, applying the -[`default`](#language.modifier.default) modifier every time it is -mentioned can get a bit ugly. You can remedy this by assigning the -variable its default value with the -[`{assign}`](#language.function.assign) function. - - - {* do this somewhere at the top of your template *} - {assign var='title' value=$title|default:'no title'} - - {* if $title was empty, it now contains the value "no title" when you use it *} - {$title} - - - -See also [`default`](#language.modifier.default) modifier and [blank -variable handling](#tips.blank.var.handling). - -Passing variable title to header template {#tips.passing.vars} -========================================= - -When the majority of your templates use the same headers and footers, it -is common to split those out into their own templates and -[`{include}`](#language.function.include) them. But what if the header -needs to have a different title, depending on what page you are coming -from? You can pass the title to the header as an -[attribute](#language.syntax.attributes) when it is included. - -`mainpage.tpl` - When the main page is drawn, the title of "Main Page" -is passed to the `header.tpl`, and will subsequently be used as the -title. - - - {include file='header.tpl' title='Main Page'} - {* template body goes here *} - {include file='footer.tpl'} - - - -`archives.tpl` - When the archives page is drawn, the title will be -"Archives". Notice in the archive example, we are using a variable from -the `archives_page.conf` file instead of a hard coded variable. - - - {config_load file='archive_page.conf'} - - {include file='header.tpl' title=#archivePageTitle#} - {* template body goes here *} - {include file='footer.tpl'} - - - -`header.tpl` - Notice that "Smarty News" is printed if the `$title` -variable is not set, using the [`default`](#language.modifier.default) -variable modifier. - - - <html> - <head> - <title>{$title|default:'Smarty News'}</title> - </head> - <body> - - - -`footer.tpl` - - - </body> - </html> - - - -Dates {#tips.dates} -===== - -As a rule of thumb, always pass dates to Smarty as -[timestamps](&url.php-manual;time). This allows template designers to -use the [`date_format`](#language.modifier.date.format) modifier for -full control over date formatting, and also makes it easy to compare -dates if necessary. - - - {$startDate|date_format} - - - -This will output: - - - Jan 4, 2009 - - - - - {$startDate|date_format:"%Y/%m/%d"} - - - -This will output: - - - 2009/01/04 - - - -Dates can be compared in the template by timestamps with: - - - {if $order_date < $invoice_date} - ...do something.. - {/if} - - - -When using [`{html_select_date}`](#language.function.html.select.date) -in a template, the programmer will most likely want to convert the -output from the form back into timestamp format. Here is a function to -help you with that. - - - <?php - - // this assumes your form elements are named - // startDate_Day, startDate_Month, startDate_Year - - $startDate = makeTimeStamp($startDate_Year, $startDate_Month, $startDate_Day); - - function makeTimeStamp($year='', $month='', $day='') - { - if(empty($year)) { - $year = strftime('%Y'); - } - if(empty($month)) { - $month = strftime('%m'); - } - if(empty($day)) { - $day = strftime('%d'); - } - - return mktime(0, 0, 0, $month, $day, $year); - } - ?> - - - -See also [`{html_select_date}`](#language.function.html.select.date), -[`{html_select_time}`](#language.function.html.select.time), -[`date_format`](#language.modifier.date.format) and -[`$smarty.now`](#language.variables.smarty.now), - -WAP/WML {#tips.wap} -======= - -WAP/WML templates require a php [Content-Type -header](&url.php-manual;header) to be passed along with the template. -The easist way to do this would be to write a custom function that -prints the header. If you are using [caching](#caching), that won\'t -work so we\'ll do it using the [`{insert}`](#language.function.insert) -tag; remember `{insert}` tags are not cached! Be sure that there is -nothing output to the browser before the template, or else the header -may fail. - - - <?php - - // be sure apache is configure for the .wml extensions! - // put this function somewhere in your application, or in Smarty.addons.php - function insert_header($params) - { - // this function expects $content argument - if (empty($params['content'])) { - return; - } - header($params['content']); - return; - } - - ?> - - - -your Smarty template *must* begin with the insert tag : - - - {insert name=header content="Content-Type: text/vnd.wap.wml"} - - <?xml version="1.0"?> - <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml"> - - <!-- begin new wml deck --> - <wml> - <!-- begin first card --> - <card> - <do type="accept"> - <go href="#two"/> - </do> - <p> - Welcome to WAP with Smarty! - Press OK to continue... - </p> - </card> - <!-- begin second card --> - <card id="two"> - <p> - Pretty easy isn't it? - </p> - </card> - </wml> - - - -Componentized Templates {#tips.componentized.templates} -======================= - -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, [`assign()`](#api.assign) the variables and -[`display()`](#api.display) 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? - -You can do this by writing a custom plugin for fetching the content and -assigning it to a template variable. - -`function.load_ticker.php` - drop file in -[`$plugins directory`](#variable.plugins.dir) - - - <?php - - // setup our function for fetching stock data - function fetch_ticker($symbol) - { - // put logic here that fetches $ticker_info - // from some ticker resource - return $ticker_info; - } - - function smarty_function_load_ticker($params, $smarty) - { - // call the function - $ticker_info = fetch_ticker($params['symbol']); - - // assign template variable - $smarty->assign($params['assign'], $ticker_info); - } - ?> - - - -`index.tpl` - - - {load_ticker symbol='SMARTY' assign='ticker'} - - Stock Name: {$ticker.name} Stock Price: {$ticker.price} - - - -See also [`{include_php}`](#language.function.include.php), -[`{include}`](#language.function.include) and -[`{php}`](#language.function.php). - -Obfuscating E-mail Addresses {#tips.obfuscating.email} -============================ - -Do you ever wonder how your email address gets on so many spam mailing -lists? One way spammers collect email addresses is from web pages. To -help combat this problem, you can make your email address show up in -scrambled javascript in the HTML source, yet it it will look and work -correctly in the browser. This is done with the -[`{mailto}`](#language.function.mailto) plugin. - - - <div id="contact">Send inquiries to - {mailto address=$EmailAddress encode='javascript' subject='Hello'} - </div> - - - -> **Note** -> -> This method isn\'t 100% foolproof. A spammer could conceivably program -> his e-mail collector to decode these values, but not likely\.... -> hopefully..yet \... wheres that quantum computer :-?. - -See also [`escape`](#language.modifier.escape) modifier and -[`{mailto}`](#language.function.mailto). |