发信人: bb_rain(小雨)
整理人: jackyz(2001-03-08 09:48:46), 站内信件
|
HTML 模版标签设置说明 ( 2000.11.30 )
-------------------------------------------------------------------------------------------
标记中的空格可为0个或多个,标记之间可以嵌套。
变量内部亦可嵌套各种标记(包括块标记和特殊标记),注意灵活运用。
一、普通标记:
1. 变量标记
说明: 简单输出变量 ( 必须是全局变量 )
标记: { 输出变量名 }
示例: { name }
2. 字段标记
说明: 简单输出字段值 ( 相关类必须已经实例化 )
标记: { 类名称.输出字段名 }
示例: { BBS.title }
3. 函数标记
其中可以内嵌字段标记
说明: 经过函数处理,输出变量或字段值 ( 函数必须已定义 )
标记: { 函数名(参数1,参数2,...) }
{ 函数名(变量参数1,变量参数2,...) }
{ 函数名(字段参数1,字段参数2,...) }
示例: { date('Y-m-d','987654321') }
{ date('Y-m-d','{ createtime }') }
{ date('Y-m-d','{ USER.createtime }') }
4. 数组标记
其中可以内嵌字段标记
说明: 输出指定数组中的某一元素
( 数组必须已定义,可以是多维数组,但必须是全局数组 )
标记: { 数组名[参数1,...] }
{ 数组名[变量参数1,...] }
{ 数组名[字段参数1,...] }
示例: { LEVEL[6] }
{ LEVEL[{ level }] }
{ LEVEL[{ USER.level }] }
二、组标记:
其中可以内嵌普通标记
1. 文本组标记
说明: 输出文本组 Group Text
标记: { GT 输出数组名|缺省值(变量/字段名) }
示例: { GT MUSIC|1 }
{ GT MUSIC|{ music } }
{ GT MUSIC|{ USER.music } }
2. 检查框组标记
说明: 输出检查框组 Group Check
标记: { GC 输出数组名,返回变量名|缺省值(变量/字段名) }
示例: { GC MUSIC,music|'1,3' }
{ GC MUSIC,music|{ music } }
{ GC MUSIC,music|{ USER.music } }
3. 单选钮组标记
说明: 输出单选钮组 Group Radio
标记: { GR 输出数组名,返回变量名|缺省值(变量/字段名) }
示例: { GR MUSIC,music|1 }
{ GR MUSIC,music|{ music } }
{ GR MUSIC,music|{ USER.music } }
4. 文本选择框组标记
说明: 输出文本型选择框组 Select Text
标记: { ST 输出数组名,返回变量名|缺省值(变量/字段名) }
示例: { ST EDU,edu|0 }
{ ST EDU,edu|{ edu } }
{ ST EDU,edu|{ USER.edu } }
5. 数字选择框组标记
说明: 输出数值型选择框组 Select Num
标记: { SN 输出数组名,返回变量名|缺省值(变量/字段名) }
示例: { SN HEIGHT,height|5 }
{ SN HEIGHT,height|{ height } }
{ SN HEIGHT,height|{ USER.height } }
三、块标记:
其中可以内嵌任意标记
1. 普通块标记
说明: 输出块的内容
开始标记: <!-- BEGIN handle -->
结束标记: <!-- END handle -->
只用一个块时 handle 可以省略
2. 管理块标记
说明: 按不同的管理权限输出块的内容
开始标记: <!-- MBEGIN handle -->
结束标记: <!-- MEND handle -->
只用一个块时 handle 可以省略
三、特殊标记:
其中可以内嵌任意标记
1. 文档路径标记
说明: 文档路径
标记: { DOC_PATH }
2. JS 标记
说明: JS 函数
标记: { JS handle }
3. 广告标记
说明: 输出广告的内容
标记: { AD handle }
4. 版权标记
说明: 版权信息
标记: { COPYRIGHT handle }
( 使用时另需html扩展库 ... 更多内容请关注 heyin.com, HEYIN 新社区完全采用扩展库2.00, UML分析, 面向对象方法设计 。。。 )
HTML 模版扩展库源码 ( 2000.11.30 )
-------------------------------------------------------------------------------------------
<?
/******************************************************************************
Template Module for PHP3 & PHP4 ( v 2.00 )
Copyright (C) 2000 heyin.com, All Rights Reserved.
http://www.heyin.com
Rain ( Email: [email protected] Oicq: 1235686 )
lib_template.php, 2000/11/30
*******************************************************************************/
// Template Class
class Template {
var $bpatterns = array( array( "/<!--\s*BEGIN\s*(\w*)\|*([^>]*)\s*-->(.*)<!--\s*END\s*\\1\s*-->/sm", "/<!--\s*BEGIN\s*\$h\|*\$k\s*-->(.*)<!--\s*END\s*\$h\s*-->/sm"),
array( "/<!--\s*MBEGIN\s*(\w*)\|*([^>]*)\s*-->(.*)<!--\s*MEND\s*\\1\s*-->/sm", "/<!--\s*MBEGIN\s*\$h\|*\$k\s*-->(.*)<!--\s*MEND\s*\$h\s*-->/sm") );
// Block Patterns
var $spatterns = array( array( "/\{\s*(\w+)\s*\}/", "/\{\s*\$k\s*\}/"),
array( "/\{\s*(\w+)\.(\w+)\s*\}/", "/\{\s*\$k\.\$v\s*\}/"),
array( "/\{\s*(\w+)\(([^\)]*)\)\s*\}/", "/\{\s*\$k\(\$v\)\s*\}/"),
array( "/\{\s*(\w+)\[([^\]]*)\]\s*\}/", "/\{\s*\$k\[\$v\]\s*\}/"),
array( "/\{\s*GT\s+(\w+)\|([^\}]+)\s*\}/", "/\{\s*GT\s+\$k\|\$v\s*\}/"),
array( "/\{\s*GC\s+(\w+\,\w*)\|*([^\}]*)\s*\}/", "/\{\s*GC\s+\$k\|*\$v\s*\}/"),
array( "/\{\s*GR\s+(\w+\,\w*)\|*([^\}]*)\s*\}/", "/\{\s*GR\s+\$k\|*\$v\s*\}/"),
array( "/\{\s*ST\s+(\w+\,\w*)\|*([^\}]*)\s*\}/", "/\{\s*ST\s+\$k\|*\$v\s*\}/"),
array( "/\{\s*SN\s+(\w+\,\w*)\|*([^\}]*)\s*\}/", "/\{\s*SN\s+\$k\|*\$v\s*\}/") );
// Sub Pattrens
var $ubpatterns;
// UBB Block Partterns
var $uspatterns;
// UBB Sub Partterns
var $path = ""; // Template Path
var $filename = ""; // Template File Name
var $S = ""; // Out Text
var $umode; // UBB Mode
var $hmode; // Html Mode
var $pmode; // Picture Mode
// Create
function Template($Path, $FileName, $UMode=0, $HMode=1, $PMode=1) {
$this->path = $Path;
$this->filename = $FileName;
$filename = $Path.$FileName;
$this->S = implode('', file($filename));
$this->umode = $UMode;
$this->hmode = $HMode;
$this->pmode = $PMode;
}
// Parse
function Parse() {
$this->S = $this->ParseAllBlock($this->S);
$this->S = $this->ParseAllFlag($this->S, 0);
}
// Parse All Flag
function ParseAllBlock($S) {
$count = sizeof($this->bpatterns);
for ($i=0; $i<$count; $i++) {
$S = $this->ParseBlock($S, $i);
}
return $S;
}
// Parse All Flag
function ParseAllFlag($S, $No) {
$count = sizeof($this->spatterns);
for ($i=0; $i<$count; $i++) {
$S = $this->ParseFlag($S, $No, $i);
}
return $S;
}
// Print Html
function PrintHtml() {
$this->Parse();
print $this->S;
}
// Parse Flag
function ParseFlag($S, $No, $Op) {
$count = preg_match_all($this->spatterns[$Op][0], $S, $Out);
for ($i=0; $i<$count; $i++) {
$k = $Out[1][$i];
$v = $Out[2][$i];
if (!empty($k)) {
eval("\$reg =\"".$this->spatterns[$Op][1]."\";");
switch ($Op) {
case 0:
// Var
if ($k=="DOC_PATH") $OutText = $this->path;
else $OutText = $GLOBALS[$k];
break;
case 1:
// Field
eval("\$OutText = \$GLOBALS[".$k."]->LINES[".$No."]['".$v."'];");
break;
case 2:
// Function
eval("\$OutText = ".$k."(".$v.");");
break;
case 3:
// Array
$v = empty($v) ? 0 : str_replace(',', '][', $v);
eval("\$OutText = \$GLOBALS[".$k."][".$v."];");
break;
case 4:
// Text Group
$p = explode(',', trim($v));
$NEW = new GroupText($GLOBALS[$k], $p);
$OutText = $NEW->OutText();
break;
case 5:
// Check Group
$r = explode(',', $k);
$NEW = new GroupCheck($GLOBALS[$r[0]], $v, "_".trim($r[1]));
$OutText = $NEW->OutText();
break;
case 6:
// Radio Group
$r = explode(',', $k);
$NEW = new GroupRadio($GLOBALS[$r[0]], $v, "_".trim($r[1]));
$OutText = $NEW->OutText();
break;
case 7:
// Select Text
$r = explode(',', $k);
$NEW = new SelectText($GLOBALS[$r[0]], $v, "_".trim($r[1]));
$OutText = $NEW->OutText();
break;
case 8:
// Select Num
$r = explode(',', $k);
$NEW = new SelectNum($GLOBALS[$r[0]], $v, "_".trim($r[1]));
$OutText = $NEW->OutText();
break;
}
$S=preg_replace($reg, $OutText, $S);
}
}
return $S;
}
// Parse Block
function ParseBlock($S, $Op) {
$count = preg_match_all($this->bpatterns[$Op][0], $S, $Out);
for ($i=0; $i<$count; $i++) {
$h = $Out[1][$i];
$k = $Out[2][$i];
$v = $Out[3][$i];
if (!empty($v)) {
eval("\$reg =\"".$this->bpatterns[$Op][1]."\";");
switch ($Op) {
case 0:
// Repeat Block
$size = $GLOBALS['COUNT'];
$OutText = "";
for ($j=0; $j<$size; $j++) {
$OutText .= $this->ParseAllFlag($v, $j);
}
break;
case 1:
// Manage Block
$k = $this->ParseAllFlag($k, 0);
eval("\$RESULT =".$k.";");
$OutText = ($RESULT) ? $this->ParseAllFlag($v, 0) : "";
break;
}
$S=preg_replace($reg, $OutText, $S);
}
}
return $S;
}
}
?>
HTML 模版文件应用实例 ( 2000.11.30 )
-------------------------------------------------------------------------------------------
<html>
<head>
<title>HEYIN 社区</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<LINK rel=stylesheet href="{ DOC_PATH }css/main.css">
<SCRIPT SRC="{ DOC_PATH }javascript/switch.js"></SCRIPT>
</head>
<body bgcolor="#FFFFFF" leftmargin=0 topmargin=0>
<table width="95%" border="0" cellspacing="0" cellpadding="0" align="center" class="wdBlack">
<tr>
<td width="30%">
</td>
<td width="70%">
<div align="right"><!-- MBEGIN |{ account }=='' --><A href="apply.php" target="_top">申请 ┊ <A href="login.php" target="_top">登录 ┊ <!-- MEND --><A href="bbs_search.php" target="_top">查找文章 ┊ <A href="call.php" target="_top">寻呼 ┊ <A href="gbook.php" target="_top">留言 ┊ <A href="bbs_priv.php" target="_top">悄悄话 ┊ 帮助</div>
</td>
</tr>
<tr>
<td colspan="2" height="1" bgcolor="#CCCCCC"></td>
</tr>
</table>
<table width="95%" border="0" cellspacing="0" cellpadding="0" align="center" class="wdBlack">
<tr>
<td height="24" colspan="2">
<div align="center">{ BLOCK.welcome }</div>
</td>
<td width="24%">
<div align="right">版主: { BLOCK.sysop }</div>
</td>
</tr>
<tr>
<td width="26%"><A href="bbs_add.php">发表文章·精华区·排行榜</td>
<td width="50%">
<div align="center">文章总数: <font
style="COLOR: #ff2ba1; FONT-SIZE: 9pt">{ TOTAL } [ color=#007025>{ show }/{ TPAGE } 页 ]</div>
</td>
<td width="24%">
<div align="right">首页 末页 前页 后页</div>
</td>
</tr>
</table>
<table width="95%" border="0" cellspacing="1" cellpadding="2" align="center" class="wdBlack">
<tr>
<td bgcolor="#3577FF" width="8%">
<div align="center">星级</div>
</td>
<td bgcolor="#3577FF" width="6%">
<div align="center">回应</div>
</td>
<td bgcolor="#3577FF" width="38%">
<div align="center">主 题</div>
</td>
<td bgcolor="#3577FF" width="18%">
<div align="center">作 者</div>
</td>
<td bgcolor="#3577FF" width="12%">
<div align="center">时间</div>
</td>
<td bgcolor="#3577FF" width="6%">
<div align="center">人气</div>
</td>
<td bgcolor="#3577FF" width="6%">
<div align="center">鲜花</div>
</td>
<td bgcolor="#3577FF" width="6%">
<div align="center">臭蛋</div>
</td>
</tr>
<!-- BEGIN -->
<tr>
<td bgcolor="#FFFFFF" width="8%" height="22" align="center">{ PrintStar({ BBS.star }) }
</td>
<td bgcolor="#FFFFFF" width="6%" height="22" align="center"><img src="{ DOC_PATH }images/folder1.gif" alt="回帖数:{ BBS.subcount }" width="13" height="16" align="absmiddle">
</td>
<td bgcolor="#FFFFFF" width="38%" height="22"><img src="{ DOC_PATH }images/mood{ BBS.mood }.gif" width="15" height="15" align="absmiddle"> <A href="bbs_read.php?_bbsid={ BBS.bbsid }">{ BBS.title }
</td>
<td bgcolor="#FFFFFF" width="18%" height="22" align="center">{ BBS.nickname }
</td>
<td bgcolor="#FFFFFF" width="12%" height="22">{ date('m.d H:i','{ BBS.writetime }') }
</td>
<td bgcolor="#FFFFFF" width="6%" height="22" align="center">{ BBS.readcount }
</td>
<td bgcolor="#FFFFFF" width="6%" height="22" align="center">{ PrintCount({ BBS.flower }) }
</td>
<td bgcolor="#FFFFFF" width="6%" height="22" align="center">{ PrintCount({ BBS.egg }) }
</td>
</tr>
<!-- END -->
<tr>
<td bgcolor="#3577FF" width="8%">
<div align="center"> </div>
</td>
<td bgcolor="#3577FF" width="6%">
<div align="center"></div>
</td>
<td bgcolor="#3577FF" width="38%">
<div align="center"></div>
</td>
<td bgcolor="#3577FF" width="18%">
<div align="center"></div>
</td>
<td bgcolor="#3577FF" width="12%">
<div align="center"></div>
</td>
<td bgcolor="#3577FF" width="6%">
<div align="center"></div>
</td>
<td bgcolor="#3577FF" width="6%">
<div align="center"></div>
</td>
<td bgcolor="#3577FF" width="6%">
<div align="center"></div>
</td>
</tr>
</table>
<table width="95%" border="0" cellspacing="0" cellpadding="0" align="center" class="wdBlack">
<tr>
<td width="46%">浏览设置·刷新·折叠/展开·排序·论坛管理</td>
<td width="54%" align="right">
<FORM method="post"> 跳到第{ SN PAGE,show|{ show } }页
</FORM>
</td>
</tr>
</table>
<table width="100%" border="0" cellspacing="0" cellpadding="0" align="center" height="100" class="wdBlack">
<tr align="center">
<td>Copyright © 2000 heyin.com, All Rights Reserved HEYIN.COM 版权所有!
<hr width="600" size="1" noshade align="center">
OICQ: 1235686 EMAIL: [email protected]</td>
</tr>
</table>
</body>
</html>
|
|