mirror of
				https://github.com/smarty-php/smarty.git
				synced 2025-10-31 04:11:37 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			90 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			90 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| Block Functions {#plugins.block.functions}
 | |
| ===============
 | |
| 
 | |
| void
 | |
| 
 | |
| smarty\_block\_
 | |
| 
 | |
| name
 | |
| 
 | |
| array
 | |
| 
 | |
| \$params
 | |
| 
 | |
| mixed
 | |
| 
 | |
| \$content
 | |
| 
 | |
| object
 | |
| 
 | |
| \$template
 | |
| 
 | |
| boolean
 | |
| 
 | |
| &\$repeat
 | |
| 
 | |
| Block functions are functions of the form: `{func} .. {/func}`. In other
 | |
| words, they enclose a template block and operate on the contents of this
 | |
| block. Block functions take precedence over [custom
 | |
| functions](#language.custom.functions) of the same name, that is, you
 | |
| cannot have both custom function `{func}` and block function
 | |
| `{func}..{/func}`.
 | |
| 
 | |
| -   By default your function implementation is called twice by Smarty:
 | |
|     once for the opening tag, and once for the closing tag. (See
 | |
|     `$repeat` below on how to change this.)
 | |
| 
 | |
| -   Starting with Smarty 3.1 the returned value of the opening tag call
 | |
|     is displayed as well.
 | |
| 
 | |
| -   Only the opening tag of the block function may have
 | |
|     [attributes](#language.syntax.attributes). All attributes passed to
 | |
|     template functions from the template are contained in the `$params`
 | |
|     variable as an associative array. The opening tag attributes are
 | |
|     also accessible to your function when processing the closing tag.
 | |
| 
 | |
| -   The value of the `$content` variable depends on whether your
 | |
|     function is called for the opening or closing tag. In case of the
 | |
|     opening tag, it will be NULL, and in case of the closing tag it will
 | |
|     be the contents of the template block. Note that the template block
 | |
|     will have already been processed by Smarty, so all you will receive
 | |
|     is the template output, not the template source.
 | |
| 
 | |
| -   The parameter `$repeat` is passed by reference to the function
 | |
|     implementation and provides a possibility for it to control how many
 | |
|     times the block is displayed. By default `$repeat` is TRUE at the
 | |
|     first call of the block-function (the opening tag) and FALSE on all
 | |
|     subsequent calls to the block function (the block\'s closing tag).
 | |
|     Each time the function implementation returns with `$repeat` being
 | |
|     TRUE, the contents between `{func}...{/func}` are evaluated and the
 | |
|     function implementation is called again with the new block contents
 | |
|     in the parameter `$content`.
 | |
| 
 | |
|     <?php
 | |
|     /*
 | |
|      * Smarty plugin
 | |
|      * -------------------------------------------------------------
 | |
|      * File:     block.translate.php
 | |
|      * Type:     block
 | |
|      * Name:     translate
 | |
|      * Purpose:  translate a block of text
 | |
|      * -------------------------------------------------------------
 | |
|      */
 | |
|     function smarty_block_translate($params, $content, \Smarty\Template $template, &$repeat)
 | |
|     {
 | |
|         // only output on the closing tag
 | |
|         if(!$repeat){
 | |
|             if (isset($content)) {
 | |
|                 $lang = $params['lang'];
 | |
|                 // do some intelligent translation thing here with $content
 | |
|                 return $translation;
 | |
|             }
 | |
|         }
 | |
|     }
 | |
|     ?>
 | |
| 
 | |
|          
 | |
| 
 | |
| See also: [`registerPlugin()`](#api.register.plugin),
 | |
| [`unregisterPlugin()`](#api.unregister.plugin).
 |