phpcms模板修改的时候,如何使get标签实现嵌套调用?

转载 2012年03月22日 17:30:53

phpcms模板修改的时候,如何使get标签实现嵌套调用?

phpcms模板中get标签的使用非常的方便灵活,是大多数站长们的最爱,一般懂一点sql语句的朋友使用,都没有任何问题.
但完美中也存在着不足,在官方的版本中get标签是不能嵌套调用的,下面就提供一种实现get标签嵌套调用的方法:
在这个方法中,主要改动的是  include/template.func.php这个文件,
首先打开这个文件,
找到这个函数  function template_parse
换成
function template_parse($str, $istag = 0)
{
$str = preg_replace(“/([]+)\t+/s”,”\\1″,$str);
$str = preg_replace(“/\<\!\-\-\{(.+?)\}\-\-\>/s”, “{\\1}”,$str);
$str = preg_replace(“/\{template\s+(.+)\}/”,”<?php include template(\\1); ?>”,$str);
$str = preg_replace(“/\{include\s+(.+)\}/”,”<?php include \\1; ?>”,$str);
$str = preg_replace(“/\{php\s+(.+)\}/”,”<?php “,$str’>\\1?>”,$str);
$str = preg_replace(“/\{if\s+(.+?)\}/”,”<?php if(\\1) { ?>”,$str);
$str = preg_replace(“/\{else\}/”,”<?php } else { ?>”,$str);
$str = preg_replace(“/\{elseif\s+(.+?)\}/”,”<?php } elseif (\\1) { ?>”,$str);
$str = preg_replace(“/\{\/if\}/”,”<?php } ?>”,$str);
$str = preg_replace(“/\{loop\s+(\S+)\s+(\S+)\}/”,”<?php if(is_array(\\1)) foreach(\\1 AS \\2) { ?>”,$str);
$str = preg_replace(“/\{loop\s+(\S+)\s+(\S+)\s+(\S+)\}/”,”<?php if(is_array(\\1)) foreach(\\1 AS \\2 => \\3) { ?>”,$str);
$str = preg_replace(“/\{\/loop\}/”,”<?php } ?>”,$str);
$str = preg_replace(“/\{\/get\s+dr=\”([^\"\}]+)\”\s+\}/”,”<?php } unset(\$\\1); ?>”,$str);
$str = preg_replace(“/\{\/get\}/”,”<?php } unset(\$DATA); ?>”,$str);
$str = preg_replace(“/\{tag_([^}]+)\}/e”, “get_tag(‘\\1′)”, $str);
$str = preg_replace(“/\{get\s+([^}]+)\}/e”, “get_parse(‘\\1′)”, $str);
$str = preg_replace(“/\{([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff:]*\(([^{}]*)\))\}/”,”<?php echo “,$str’>\\1;?>”,$str);
$str = preg_replace(“/\{\\$([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff:]*\(([^{}]*)\))\}/”,”<?php echo “,$str’>\\1;?>”,$str);
$str = preg_replace(“/\{(\\$[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)\}/”,”<?php echo “,$str’>\\1;?>”,$str);
$str = preg_replace(“/\{(\\$[a-zA-Z0-9_\[\]\’\”\$\x7f-\xff]+)\}/es”, “addquote(‘<?php echo ‘)&quot;,$str”>\\1;?>’)”,$str);
$str = preg_replace(“/\{([A-Z_\x7f-\xff][A-Z0-9_\x7f-\xff]*)\}/s”, “<?php echo “,$str’>\\1;?>”,$str);
if(!$istag) $str = “<?php defined(‘IN_PHPCMS’) or exit(‘Access Denied’); ?>”.$str;
return $str;
}

找到function get_parse换成
function get_parse($str)
{
preg_match_all(“/([a-z]+)\=\”([^\"]+)\”/i”, stripslashes($str), $matches, PREG_SET_ORDER);
foreach($matches as $v)
{
$r[$v[1]] = $v[2];
}
extract($r);
if(!isset($dbsource)) $dbsource = ”;
if(!isset($dbname)) $dbname = ”;
if(!isset($sql)) $sql = ”;
if(!isset($rows)) $rows = 0;
if(!isset($urlrule)) $urlrule = ”;
if(!isset($catid)) $catid = 0;
if(!isset($distinctfield)) $distinctfield = ”;
if(!isset($return) || !preg_match(“/^\w+$/i”, $return)) $return = ‘r’;
if(!isset($dr)) $dr = ‘DATA’;
if(!isset($sn)) $sn = ‘n’;
if(isset($page))
{
$str = “<?php \$ARRAY = get(\”$sql\”, $rows, $page, \”$dbname\”, \”$dbsource\”, \”$urlrule\”,\”$distinctfield\”,\”$catid\”);\${$dr}=\$ARRAY['data'];\$total=\$ARRAY['total'];\$count=\$ARRAY['count'];\$pages=\$ARRAY['pages'];unset(\$ARRAY);foreach(\${$dr} AS \${$sn}=>\${$return}){\${$sn}++;?>”;
}
else
{
$str = substr($str, -1) == ‘/’ ? “<?php \${$return} = get(\”$sql\”, -1, 0, \”$dbname\”, \”$dbsource\”);?>” : “<?php \${$dr} = get(\”$sql\”, $rows, 0, \”$dbname\”, \”$dbsource\”);foreach(\${$dr} AS \${$sn} => \${$return}) { \${$sn}++;?>”;
}
return $str;
}


原文地址:http://www.mianfeimoban.com/phpcms_jc/5353.html 欢迎转载。

相关文章推荐

phpcms网站修改模板中如何使get标签实现嵌套调用?

phpcms网站修改模板中如何使get标签实现嵌套调用? 在phpcms中get标签的使用非常的方便灵活,是大多数站长们的最爱,一般懂一点sql语句的朋友使用,都没有任何问题. 但完美中也存在...

ThinkPHP2.1 增加PHPCMS模板引擎,支持PC标签(get,json)

本人经常使用PHPCMS模板引擎。 用ThinkPHP2.1 自带的,感觉不爽,花点时间增加了个PHPCMS模板引擎 BY 夜色紫宸風 功能:PHPCMS模板解析引擎,支持PC标签(get,js...
  • wljk506
  • wljk506
  • 2011年11月15日 13:44
  • 1657

在phpcms模板页面中如何调用验证码以及实现验证码验证?

问题描述:不管是在phpcms的模板制作还是做某些功能模块的二次开发时,我们经常在一些表单中用到调用验证码,那么具体我们改如何调用呢?解决方法:在phpcms网站中使用验证码我们要考虑前端模板页面中如...

phpcms2008GET高级标签

  • 2009年07月14日 21:18
  • 1.04MB
  • 下载

phpcms v9 模板标签说明整理系列

{template "content","header"} 调用根目录下phpcms\template\content\header文件 {CHARSET} 字符集 (gbk或者utf-8)...

phpcms v9 模板标签说明大全

{template "content","header"} 调用根目录下phpcms\template\content\header文件 {CHARSET} 字符集 (gbk或者utf-8)...
  • jek803
  • jek803
  • 2014年06月17日 09:52
  • 492

phpcms pc标签 模板函数应用

开头小编说一下废话,自己傻傻的经历,刚开始接触phpcms,核心不是应用的很好,所以呢,我们老大给的任务,都是用最笨的方法解决,你们能想想到么,主页面29个导航链接,每个页面又有5个链接的2级导航,我...

【phpcms-v9】前台模板文件中{pc}标签的执行流程

前台pc标签的使用:{pc:content 参数名="参数值" 参数名="参数值" 参数名="参数值"} 如: {pc:content action="lists" catid="9" ca...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:phpcms模板修改的时候,如何使get标签实现嵌套调用?
举报原因:
原因补充:

(最多只允许输入30个字)