| 
									
										
										
										
											2018-01-21 10:33:32 -05:00
										 |  |  | <!doctype html> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | <title>CodeMirror: Smarty mode</title> | 
					
						
							|  |  |  | <meta charset="utf-8"/> | 
					
						
							|  |  |  | <link rel=stylesheet href="../../doc/docs.css"> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | <link rel="stylesheet" href="../../lib/codemirror.css"> | 
					
						
							|  |  |  | <script src="../../lib/codemirror.js"></script> | 
					
						
							|  |  |  | <script src="../xml/xml.js"></script> | 
					
						
							|  |  |  | <script src="smarty.js"></script> | 
					
						
							| 
									
										
										
										
											2019-06-02 09:59:07 +02:00
										 |  |  | <style>.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style> | 
					
						
							| 
									
										
										
										
											2018-01-21 10:33:32 -05:00
										 |  |  | <div id=nav> | 
					
						
							| 
									
										
										
										
											2018-10-07 12:02:07 +02:00
										 |  |  |   <a href="https://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> | 
					
						
							| 
									
										
										
										
											2018-01-21 10:33:32 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  |   <ul> | 
					
						
							|  |  |  |     <li><a href="../../index.html">Home</a> | 
					
						
							|  |  |  |     <li><a href="../../doc/manual.html">Manual</a> | 
					
						
							|  |  |  |     <li><a href="https://github.com/codemirror/codemirror">Code</a> | 
					
						
							|  |  |  |   </ul> | 
					
						
							|  |  |  |   <ul> | 
					
						
							|  |  |  |     <li><a href="../index.html">Language modes</a> | 
					
						
							|  |  |  |     <li><a class=active href="#">Smarty</a> | 
					
						
							|  |  |  |   </ul> | 
					
						
							|  |  |  | </div> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | <article> | 
					
						
							|  |  |  | <h2>Smarty mode</h2> | 
					
						
							|  |  |  | <form><textarea id="code" name="code"> | 
					
						
							|  |  |  | {extends file="parent.tpl"} | 
					
						
							|  |  |  | {include file="template.tpl"} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | {* some example Smarty content *} | 
					
						
							|  |  |  | {if isset($name) && $name == 'Blog'} | 
					
						
							|  |  |  |   This is a {$var}. | 
					
						
							|  |  |  |   {$integer = 451}, {$array[] = "a"}, {$stringvar = "string"} | 
					
						
							|  |  |  |   {assign var='bob' value=$var.prop} | 
					
						
							|  |  |  | {elseif $name == $foo} | 
					
						
							|  |  |  |   {function name=menu level=0} | 
					
						
							|  |  |  |     {foreach $data as $entry} | 
					
						
							|  |  |  |       {if is_array($entry)} | 
					
						
							|  |  |  |         - {$entry@key} | 
					
						
							|  |  |  |         {menu data=$entry level=$level+1} | 
					
						
							|  |  |  |       {else} | 
					
						
							|  |  |  |         {$entry} | 
					
						
							|  |  |  |       {/if} | 
					
						
							|  |  |  |     {/foreach} | 
					
						
							|  |  |  |   {/function} | 
					
						
							|  |  |  | {/if}</textarea></form> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | <p>Mode for Smarty version 2 or 3, which allows for custom delimiter tags.</p> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | <p>Several configuration parameters are supported:</p> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | <ul> | 
					
						
							|  |  |  |   <li><code>leftDelimiter</code> and <code>rightDelimiter</code>, | 
					
						
							|  |  |  |   which should be strings that determine where the Smarty syntax | 
					
						
							|  |  |  |   starts and ends.</li> | 
					
						
							|  |  |  |   <li><code>version</code>, which should be 2 or 3.</li> | 
					
						
							|  |  |  |   <li><code>baseMode</code>, which can be a mode spec | 
					
						
							|  |  |  |   like <code>"text/html"</code> to set a different background mode.</li> | 
					
						
							|  |  |  | </ul> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | <p><strong>MIME types defined:</strong> <code>text/x-smarty</code></p> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | <h3>Smarty 2, custom delimiters</h3> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | <form><textarea id="code2" name="code2"> | 
					
						
							|  |  |  | {--extends file="parent.tpl"--} | 
					
						
							|  |  |  | {--include file="template.tpl"--} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | {--* some example Smarty content *--} | 
					
						
							|  |  |  | {--if isset($name) && $name == 'Blog'--} | 
					
						
							|  |  |  |   This is a {--$var--}. | 
					
						
							|  |  |  |   {--$integer = 451--}, {--$array[] = "a"--}, {--$stringvar = "string"--} | 
					
						
							|  |  |  |   {--assign var='bob' value=$var.prop--} | 
					
						
							|  |  |  | {--elseif $name == $foo--} | 
					
						
							|  |  |  |   {--function name=menu level=0--} | 
					
						
							|  |  |  |     {--foreach $data as $entry--} | 
					
						
							|  |  |  |       {--if is_array($entry)--} | 
					
						
							|  |  |  |         - {--$entry@key--} | 
					
						
							|  |  |  |         {--menu data=$entry level=$level+1--} | 
					
						
							|  |  |  |       {--else--} | 
					
						
							|  |  |  |         {--$entry--} | 
					
						
							|  |  |  |       {--/if--} | 
					
						
							|  |  |  |     {--/foreach--} | 
					
						
							|  |  |  |   {--/function--} | 
					
						
							|  |  |  | {--/if--}</textarea></form> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | <h3>Smarty 3</h3> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | <textarea id="code3" name="code3"> | 
					
						
							|  |  |  | Nested tags {$foo={counter one=1 two={inception}}+3} are now valid in Smarty 3. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | <script> | 
					
						
							|  |  |  | function test() { | 
					
						
							|  |  |  |   console.log("Smarty 3 permits single curly braces followed by whitespace to NOT slip into Smarty mode."); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | </script> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | {assign var=foo value=[1,2,3]} | 
					
						
							|  |  |  | {assign var=foo value=['y'=>'yellow','b'=>'blue']} | 
					
						
							|  |  |  | {assign var=foo value=[1,[9,8],3]} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | {$foo=$bar+2} {* a comment *} | 
					
						
							|  |  |  | {$foo.bar=1}  {* another comment *} | 
					
						
							|  |  |  | {$foo = myfunct(($x+$y)*3)} | 
					
						
							|  |  |  | {$foo = strlen($bar)} | 
					
						
							|  |  |  | {$foo.bar.baz=1}, {$foo[]=1} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Smarty "dot" syntax (note: embedded {} are used to address ambiguities): | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | {$foo.a.b.c}      => $foo['a']['b']['c'] | 
					
						
							|  |  |  | {$foo.a.$b.c}     => $foo['a'][$b]['c'] | 
					
						
							|  |  |  | {$foo.a.{$b+4}.c} => $foo['a'][$b+4]['c'] | 
					
						
							|  |  |  | {$foo.a.{$b.c}}   => $foo['a'][$b['c']] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | {$object->method1($x)->method2($y)}</textarea> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | <script> | 
					
						
							|  |  |  | var editor = CodeMirror.fromTextArea(document.getElementById("code"), { | 
					
						
							|  |  |  |   lineNumbers: true, | 
					
						
							|  |  |  |   mode: "smarty" | 
					
						
							|  |  |  | }); | 
					
						
							|  |  |  | var editor = CodeMirror.fromTextArea(document.getElementById("code2"), { | 
					
						
							|  |  |  |   lineNumbers: true, | 
					
						
							|  |  |  |   mode: { | 
					
						
							|  |  |  |     name: "smarty", | 
					
						
							|  |  |  |     leftDelimiter: "{--", | 
					
						
							|  |  |  |     rightDelimiter: "--}" | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | }); | 
					
						
							|  |  |  | var editor = CodeMirror.fromTextArea(document.getElementById("code3"), { | 
					
						
							|  |  |  |   lineNumbers: true, | 
					
						
							|  |  |  |   mode: {name: "smarty", version: 3, baseMode: "text/html"} | 
					
						
							|  |  |  | }); | 
					
						
							|  |  |  | </script> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | </article> |