CMS Made Simple/用户定义的标签
CMS Made Simple | 安装 | 内容管理 | 布局 | 用户&用户组 | 站点管理 | 我的设置 | 扩展 | FAQ |
User Defined Tags用户自定义标签,提供了一种非常简单的方式来向你的站点添加PHP代码。利用它,可以非常简单地创建一个新的标签,然后将PHP代码粘贴到<? 和 ?>之间。然后smarty就可以通过标签{tag:name}来调用该标签;
提示:如果你喜欢用一个外部的编辑器来编辑的的代码,那么在编辑的时候php标签会高亮显示,那么注意保存的时候没有什么突出显示的错误;
标签的一些参数:
你可以将下面这些参数传递到你定义的标签中,例如tag{image_link src='hedgehog'}:
echo '<a href="' . $params['src'] . '.jpg" target="_blank">'; echo '<img src="t_' . $params['src'] . '.jpg"></a>';
怎样创建一个用户自定义标签[ ]
- 登录到后台,点击顶部下拉菜单中的“Extension/User Defined Tags”;
- 点击页面底部的“Add User Definded Tag”按钮;
- 在“Name”字段的文本框中输入标签的名称(只能包含字母、下划线、数字),这个标签可以在创建页面的时候使用;
- 在“Code”文本框中输入php代码,这样标签将会在页面被请求的时候替换成代码中设置的(详情,请继续向下阅读)
- 点击“Submit”按钮,提交;
你的第一个UDT[ ]
根据上面的步骤,在“name”中输入“helloworld”(不含引号),然后在“Code”添加下行代码:
echo 'Hello World!';
点击“submit”提交;
下面测试一下我们所创建的标签怎么使用:
新建一个页面,在 Content/Page中 “Add Content”,在正文body中输入“{helloworld}“(不含引号),然后预览,你不会看到{helloworld},而是看到“helloworld“;
echo在php中的作用就是输入其后面双引号里的内容,所以我们可以利用它来天加HTML、甚至DHTML或者Javascript对象。
试试下面的代码,点击刚才我们新建的标签,重新编辑,在其“code”文本框中输入下面代码:
echo '<h3>Hello World!</h3>';
然后同样使用上述的方法测试一下重新编辑后的这个标签,看看是什么效果。
使用UDT参数[ ]
但是,不可能全部使用HTML文本,为了解决这个问题,我们就需要使用UDT的参数了。参数可以让你具体设置某一标签,举个例子,现在我们想向一个叫BOB的人问好,可以使用下面代码:
echo '<h3>Hello ' . $params['name'] . '!</h3>';
这样就为创建的标签添加了一个“name”参数,现在我们在测试使用这个标签的时候,就需要这样来引用,"{helloworld name='Bob'}" ,这样在页面创建预览就会显示:Hello Bob!
将页面的内容作为一个参数进行传递[ ]
在用户自定义的标签中可以将页面内容作为一个参数来访问。
在你的模板中:
{content assign=pagecontent} {table_of_contents thepagecontent="$pagecontent"}
在你的用户自定义标签中,命名为“table_of_contents”:
echo $params['thepagecontent']; // 显示页面内容.
怎样从content_id中获得URL[ ]
假设你的页面conten_id的变量名为$page_content_id
$gCms = cmsms(); //global $gCms; $hm =& $gCms->GetHierarchyManager(); $curnode =& $hm->getNodeById($page_content_id); $curcontent =& $curnode->GetContent(); echo 'Page URL: ' . $curcontent->GetURL();
怎样从一个用户自定义标签来执行Smarty标签[ ]
你可以这样做:
$gCms = cmsms(); //global $gCms; $smarty = &$gCms->GetSmarty(); $smarty_data = "{menu}"; $smarty->_compile_source('temporary template', $smarty_data, $_compiled ); @ob_start(); $smarty->_eval('?>' . $_compiled); $_contents = @ob_get_contents(); @ob_end_clean(); echo $_contents;
下面的代码,则让你可以管理CMSMS对应的多个域名;
$gCms = cmsms(); //global $gCms; $smarty = &$gCms->GetSmarty(); $url = $_SERVER['REQUEST_URI']; if(eregi('domain1',$url)) { $smarty_data = "{menu template='cssmenu.tpl'}"; } else if(eregi('domain2',$url)) { $smarty_data = "{menu template='cssmenu2.tpl'}"; } $smarty->_compile_source('temporary template', $smarty_data, $_compiled ); @ob_start(); $smarty->_eval('?>' . $_compiled); $_contents = @ob_get_contents(); @ob_end_clean(); echo $_contents;
怎样向你的页面以及模板提供UDT中的变量[ ]
有些时候,你需要向你的页面或者是模板提供经处理过的信息,通过UDT中的PHP变量。那么,首先我们添加一个新的UDT,例如,命名为“Var”,然后在“code”代码中添加下面代码:
$gCms = cmsms(); //global $gCms; $smarty = &$gCms->GetSmarty(); $foo= "test"; // Variable you want to provide $smarty->assign('foo', $foo); // make variable "foo" visible for CMSms
现在你就可以通过Smarty在页面或者模板中使用这个变量了:
{Var} {* Call the UDT "Var" before using its variable(s) *}
The content of the variable "foo" is {$foo}.
然后页面将会输出:
The content of the variable "foo" is test.
参考来源[ ]
CMS Made Simple使用手册导航 | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
针对所有用户:
|