CMIContent Marketing InstituteContent directory

News · General · Archive

CodeMirror: Smarty mode

Home News

.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}

CodeMirror

Home Manual Code

Language modes Smarty

Smarty mode

{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}

Mode for Smarty version 2 or 3, which allows for custom delimiter tags.

Several configuration parameters are supported

leftDelimiter and rightDelimiter , which should be strings that determine where the Smarty syntax starts and ends. version , which should be 2 or 3. baseMode , which can be a mode spec like "text/html" to set a different background mode.

MIME types defined: text/x-smarty

Smarty 2, custom delimiters

{--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--}

Smarty 3

Nested tags {$foo={counter one=1 two={inception}}+3} are now valid in Smarty 3.

function test() { console.log("Smarty 3 permits single curly braces followed by whitespace to NOT slip into Smarty mode."); }

{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)}

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"} });

More in Archive · More in General · More in News