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>';


怎样创建一个用户自定义标签[ ]

  1. 登录到后台,点击顶部下拉菜单中的“Extension/User Defined Tags”;
  2. 点击页面底部的“Add User Definded Tag”按钮;
  3. 在“Name”字段的文本框中输入标签的名称(只能包含字母、下划线、数字),这个标签可以在创建页面的时候使用;
  4. 在“Code”文本框中输入php代码,这样标签将会在页面被请求的时候替换成代码中设置的(详情,请继续向下阅读)
  5. 点击“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使用手册导航

针对所有用户:

安装:

环境需求 | 通过Shell安装 | 通过FTP安装 | 通过cPanel安装 | 在本地Windows系统下安装 | 升级 | 复制到一个新服务器上 | 可选设置 | 技巧与窍门 | 故障排除

内容管理:

页面创建 | 新闻创建 | 图片管理 | 文件管理 | 全局内容块与内容块

布局:

模板 | 样式表 | 菜单管理器 | 主题管理模块

用户&用户组:

用户 | 用户组 | 添加用户至用户组 | 用户组权限

站点管理:

全局设置 | 页面默认值 | 系统信息 | 系统检测 | 管理日志

我的设置:

我的账户 | 用户设置 | 快捷方式管理

扩展:

模块 | 标签 | 事件管理器 | 用户定义的标签

FAQ

针对网站设计者
模板使用 | 样式表使用
针对网站开发者:
开发者FAQ | 模块API | Smarty技巧 | 模块制作教程 | 模块制作技巧 | 用户定义的标签 | 内容区块剖析 | 运行SVN版本 | 添加菜单项的副文本 | 开发笔记 | 模块分类