设为首页收藏本站麻城天气预报

麻城热线

 找回密码
 马上注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

社区广播台
热门
最新
查看: 5870|回复: 8
打印 上一主题 下一主题

phpcms2008万能标签GET移植到PHPCMS2007的方法

  [复制链接]
跳转到指定楼层
楼主
发表于 2009-6-11 12:39:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如果你了解PHP,可以按一下方法操作,如果不了解,请直接下载附件里的三个文件覆盖include里的同名文件即可
PHPCMS版本:phpcms2007SP6
移植方法:
1:打开/include/template.func.php,
查找
$str = preg_replace("/\{tag_([^}]+)\}/e", "get_tag('\\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);

在最后加入:
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($return) || !preg_match("/^\w+$/i", $return)) $return = 'r';
if(isset($page))
{
     $str = "<?php \$ARRAY = get(\"$sql\", $rows, $page, \"$dbname\", \"$dbsource\");\$DATA=\$ARRAY['data'];\$total=\$ARRAY['total'];\$count=\$ARRAY['count'];\$pages=\$ARRAY['pages'];unset(\$ARRAY);foreach(\$DATA AS \$n=>\${$return}){\$n++;?>";
}
else
{
  $str = substr($str, -1) == '/' ? "<?php \${$return} = get(\"$sql\", -1, 0, \"$dbname\", \"$dbsource\");?>" : "<?php \$DATA = get(\"$sql\", $rows, 0, \"$dbname\", \"$dbsource\");foreach(\$DATA AS \$n => \${$return}) { \$n++;?>";
}
return $str;
}
2:打开/include/global.func.php,
在最后加入:
function get($sql, $rows = 0, $page = 0)
{
if(!$sql) return false;
        global $db;
        if(DB_PRE != 'phpcms_') $sql = str_replace('phpcms_', DB_PRE, $sql);
$rows = intval($rows);
if(!isset($page)) $page = 1;
$page = max(intval($page), 0);
$pages = $limit = '';
if($page)
{
  $offset = $rows*($page-1);
  $limit = " LIMIT $offset, $rows";
  $total = cache_count("SELECT COUNT(*) AS `count` ".stristr($sql, 'from'));
  $pages = pages($total, $page, $rows);
}
elseif($rows > 0)
{
  $limit = " LIMIT $rows";
}
$data = $rows == -1 ? $db->get_one($sql) : $db->select($sql.$limit);
if(isset($s['dbcharset']) && $s['dbcharset'] != DB_CHARSET) $data = str_charset($s['dbcharset'], CHARSET, $data);
if($page)
{
  $count = count($data);
  if(!isset($total)) $total = $count;
  return array('data'=>$data, 'total'=>$total, 'count'=>count($data), 'pages'=>$pages);
}
else
{
  return $data;
}
}

3:打开/include/db_mysql.class.php,
查找:
function query(
在此函数后面增加一下函数:
function select($sql, $keyfield = '')
{
  $array = array();
  $result = $this->query($sql);
  while($r = $this->fetch_array($result))
  {
   if($keyfield)
   {
    $key = $r[$keyfield];
    $array[$key] = $r;
   }
   else
   {
    $array[] = $r;
   }
  }
  $this->free_result($result);
  return $array;
}

移植完成!
注明:移植后不会影响之前功能,新功能GET使用方法[暂不支持跨库调用和分页]:
1、调用本系统单条数据,示例(调用ID为1的信息,标题长度不超过25个汉字,显示更新日期):
{get sql="select * from phpcms_content where contentid=1" /}
标题:{str_cut($r[title], 50)} URL:{$r[url]} 更新日期:{date('Y-m-d', $r[updatetime])}
2、调用本系统多条数据,示例(调用栏目ID为1通过审核的10条信息,标题长度不超过25个汉字,显示更新日期):
{get sql="select * from phpcms_content where catid=1 and status=99 order by updatetime desc" rows="10"}
标题:{str_cut($r[title], 50)} URL:{$r[url]} 更新日期:{date('Y-m-d', $r[updatetime])}
{/get}

getforphpcms2007.rar

11.65 KB, 下载次数: 11, 下载积分: 金条 -1

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏
沙发
发表于 2009-6-11 12:42:46 | 只看该作者
utf8版也这样改???
板凳
 楼主| 发表于 2009-6-12 09:16:15 | 只看该作者
是的
地板
发表于 2009-6-12 09:23:04 | 只看该作者
好晕哦,完全看不懂
5
发表于 2009-6-19 09:54:15 | 只看该作者
非常感谢!!!!!!!!
6
发表于 2010-6-19 01:05:58 | 只看该作者
我想在 [标签]文章标题列表中调用该文章的评论得分

{get sql="select * from phpcms_comment where itemid={$article[articleid]}]" /}
得分:{str_cut($r[score], 50)}
{/get}

加入这段代码显示不出结果
     
7
发表于 2010-6-19 10:14:42 | 只看该作者
{get sql="select * from phpcms_comment where itemid={$article[articleid]}]" /}
得分:{str_cut($r[score], 50)}
{/get}


注意斜杠用法

{get 后面如果带/
那么就不要{/get}


可修改为:

{get sql="select * from phpcms_comment where itemid={$article[articleid]}]" /}
得分:{str_cut($r[score], 50)}

试试(去掉后面的{/get})
8
发表于 2010-6-19 11:40:01 | 只看该作者
是过了,还是不行
而且我一把 这段代码放进去就更新不了首页
     
9
发表于 2010-6-19 17:36:49 | 只看该作者
应该不存在这个问题的,你调试下
其他人用,包括我自己都是好好的,

现在我没2007环境,不能帮你测试了.
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|无图浏览|小黑屋|联系我们|广告报价|免责声明|新手上路|手机访问|麻城热线 ( 鄂ICP备12016569号-1  

鄂公网安备 42118102000134号

GMT+8, 2024-9-28 00:04 , Processed in 0.108263 second(s), 33 queries .

Powered by 麻城热线 X3.2 © 2001-2014 湖北锐火科技有限公司

快速回复 返回顶部 返回列表