| 
									
										
										
										
											2004-03-30 09:06:15 +00:00
										 |  |  | <?xml version="1.0" encoding="iso-8859-1"?> | 
					
						
							|  |  |  | <!-- $Revision$ --> | 
					
						
							|  |  |  |  <chapter id="plugins"> | 
					
						
							|  |  |  |   <title>Extending Smarty With Plugins</title> | 
					
						
							|  |  |  |   <para> | 
					
						
							|  |  |  |    Version 2.0 introduced the plugin architecture that is used | 
					
						
							|  |  |  |    for almost all the customizable functionality of Smarty. This includes: | 
					
						
							|  |  |  |    <itemizedlist spacing="compact"> | 
					
						
							|  |  |  |     <listitem><simpara>functions</simpara></listitem> | 
					
						
							|  |  |  |     <listitem><simpara>modifiers</simpara></listitem> | 
					
						
							|  |  |  |     <listitem><simpara>block functions</simpara></listitem> | 
					
						
							|  |  |  |     <listitem><simpara>compiler functions</simpara></listitem> | 
					
						
							|  |  |  |     <listitem><simpara>prefilters</simpara></listitem> | 
					
						
							|  |  |  |     <listitem><simpara>postfilters</simpara></listitem> | 
					
						
							|  |  |  |     <listitem><simpara>outputfilters</simpara></listitem> | 
					
						
							|  |  |  |     <listitem><simpara>resources</simpara></listitem> | 
					
						
							|  |  |  |     <listitem><simpara>inserts</simpara></listitem> | 
					
						
							|  |  |  |    </itemizedlist> | 
					
						
							|  |  |  |    With the exception of resources, backwards compatibility with the old | 
					
						
							|  |  |  |    way of registering handler functions via register_* API is preserved. If | 
					
						
							|  |  |  |    you did not use the API but instead modified the class variables | 
					
						
							|  |  |  |    <literal>$custom_funcs</literal>, <literal>$custom_mods</literal>, and | 
					
						
							|  |  |  |    other ones directly, then you will need to adjust your scripts to either | 
					
						
							|  |  |  |    use the API or convert your custom functionality into plugins. | 
					
						
							|  |  |  |   </para> | 
					
						
							|  |  |  |     | 
					
						
							|  |  |  |   <sect1> | 
					
						
							|  |  |  |    <title>How Plugins Work</title> | 
					
						
							|  |  |  |    <para> | 
					
						
							|  |  |  |     Plugins are always loaded on demand. Only the specific modifiers, | 
					
						
							|  |  |  |     functions, resources, etc invoked in the templates scripts will be | 
					
						
							|  |  |  |     loaded. Moreover, each plugin is loaded only once, even if you have | 
					
						
							|  |  |  |     several different instances of Smarty running within the same request. | 
					
						
							|  |  |  |    </para> | 
					
						
							|  |  |  |    <para> | 
					
						
							|  |  |  |     Pre/postfilters and output filters are a bit of a special case. Since | 
					
						
							|  |  |  |     they are not mentioned in the templates, they must be registered or | 
					
						
							|  |  |  |     loaded explicitly via API functions before the template is processed. | 
					
						
							|  |  |  |     The order in which multiple filters of the same type are executed | 
					
						
							|  |  |  |     depends on the order in which they are registered or loaded. | 
					
						
							|  |  |  |    </para> | 
					
						
							|  |  |  |    <para> | 
					
						
							|  |  |  |     There is only one plugins directory (for performance reasons). To | 
					
						
							|  |  |  |     install a plugin, simply place it in the directory and Smarty will use | 
					
						
							|  |  |  |     it automatically. | 
					
						
							|  |  |  |    </para> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-04-13 11:47:32 +00:00
										 |  |  | &programmers.plugins.plugins-naming-conventions; | 
					
						
							| 
									
										
										
										
											2004-03-30 09:06:15 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-04-13 11:47:32 +00:00
										 |  |  | &programmers.plugins.plugins-writing; | 
					
						
							| 
									
										
										
										
											2004-03-30 09:06:15 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-04-13 11:47:32 +00:00
										 |  |  | &programmers.plugins.plugins-functions; | 
					
						
							| 
									
										
										
										
											2004-03-30 09:06:15 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-04-13 11:47:32 +00:00
										 |  |  | &programmers.plugins.plugins-modifiers; | 
					
						
							| 
									
										
										
										
											2004-03-30 09:06:15 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-04-13 11:47:32 +00:00
										 |  |  | &programmers.plugins.plugins-block-functions; | 
					
						
							| 
									
										
										
										
											2004-03-30 09:06:15 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-04-13 11:47:32 +00:00
										 |  |  | &programmers.plugins.plugins-compiler-functions; | 
					
						
							| 
									
										
										
										
											2004-03-30 09:06:15 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-04-13 11:47:32 +00:00
										 |  |  | &programmers.plugins.plugins-prefilters-postfilters; | 
					
						
							| 
									
										
										
										
											2004-03-30 09:06:15 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-04-13 11:47:32 +00:00
										 |  |  | &programmers.plugins.plugins-outputfilters; | 
					
						
							| 
									
										
										
										
											2004-03-30 09:06:15 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-04-13 11:47:32 +00:00
										 |  |  | &programmers.plugins.plugins-resources; | 
					
						
							| 
									
										
										
										
											2004-03-30 09:06:15 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-04-13 11:47:32 +00:00
										 |  |  | &programmers.plugins.plugins-inserts; | 
					
						
							| 
									
										
										
										
											2004-03-30 09:06:15 +00:00
										 |  |  | </chapter> | 
					
						
							|  |  |  | <!-- Keep this comment at the end of the file
 | 
					
						
							|  |  |  | Local variables: | 
					
						
							|  |  |  | mode: sgml | 
					
						
							|  |  |  | sgml-omittag:t | 
					
						
							|  |  |  | sgml-shorttag:t | 
					
						
							|  |  |  | sgml-minimize-attributes:nil | 
					
						
							|  |  |  | sgml-always-quote-attributes:t | 
					
						
							|  |  |  | sgml-indent-step:1 | 
					
						
							|  |  |  | sgml-indent-data:t | 
					
						
							|  |  |  | indent-tabs-mode:nil | 
					
						
							|  |  |  | sgml-parent-document:nil | 
					
						
							|  |  |  | sgml-default-dtd-file:"../../../../manual.ced" | 
					
						
							|  |  |  | sgml-exposed-tags:nil | 
					
						
							|  |  |  | sgml-local-catalogs:nil | 
					
						
							|  |  |  | sgml-local-ecat-files:nil | 
					
						
							|  |  |  | End: | 
					
						
							|  |  |  | vim600: syn=xml fen fdm=syntax fdl=2 si | 
					
						
							|  |  |  | vim: et tw=78 syn=sgml | 
					
						
							|  |  |  | vi: ts=1 sw=1 | 
					
						
							|  |  |  | --> |