May
19
因为近期在研究supesite,所以记录一些有关的知识点,方便以后查阅。
1.语法格式 <!–{…}–> 逻辑元素包围符,该符号用于包含条件和循环元素
2.条件判断
程序代码
<!–{if expr1}–> statement1 <!–{elseif expr2}–> statement2 <!–{else}–> statement3 <!–{/if}–>
这是一个典型的条件模板,当条件 expr1 为真时,显示模板 statement1 内容,否则当 expr2 为真时,显示模板 statement2 内容,否则显示模板 statement3 的内容。如同其他语言中的条件控制一样,其中 <!–{elseif expr}–> 和 <!–{else} –> 是非必须的。
3.不带下标变量的数组循环
程序代码
<!–{loop $array $value}–> statement <!–{/loop}–>
相当于 PHP 的数组循环语句:
程序代码
foreach($array as $value) { statement }
4.带下标变量的数组循环
程序代码
<!–{loop $array $key $value}–> statement <!–{/loop}–>
相当于 PHP 的数组循环语句
程序代码
foreach($array as $key => $value) { statement }
5.时间处理函数
程序代码
#date(’Y-n-d H:i’, $time)#
相当于PHP得gmdate进行时间处理 gmdate($dateformat, $time) 6.自定义广告显示函数
程序代码
#getad(‘user’,’adid’)#
相当于PHP语法中的
程序代码
<?php echo getad(‘user’, ‘$adid’)?>
7.模板文件包含
程序代码
{template blog_header}
相当于PHP语法中的
程序代码
<?php template(‘blog_header’)?>
包含blog_header.htm文件。
8.模板中的eval函数
程序代码
<!–{eval $a = $b}–>
就相当于执行PHP程序
程序代码
<?php $a = $b;?>
9.模板中的block函数
程序代码
<!–{block name=”spaceblog” parameter=”dateline/604800….”}–>
就相当于PHP程序中的
程序代码
<?php block(‘$name’,’$parameter’);?>
Block函数,就是生成模块的主要函数。逻辑元素包围符在 { } 外面包含了 html 的注释符号 <!– –>,除了为了和信息元素相区别外,也方便了使用 Dreamweaver 和 Frontpage 之类工具编辑模板的用户。因逻辑元素会被识别为 html 的注释而不被显示,对于绝大多数用户,逻辑元素中的内容是完全不需要修改的,甚至修改错一个字符就可能引起错误信息和整个系统无法运行。因此通常您在修改模板的时候,不要修改模板的逻辑信息,更不要将逻辑信息内部元素(如 <!–{else}–> 等)的前后位置作以修改,否则可能会导致错误。如果您的模板被不慎修改损坏,请立即用原标准默认模板覆盖,即可恢复。对于高手而言,实际上外部的 <!– –> 是可以省略不写的,可以用于某些元素在模板中的定位,但强烈建议普通用户不要轻易尝试。
1.语法格式 <!–{…}–> 逻辑元素包围符,该符号用于包含条件和循环元素
2.条件判断
程序代码
<!–{if expr1}–> statement1 <!–{elseif expr2}–> statement2 <!–{else}–> statement3 <!–{/if}–>
这是一个典型的条件模板,当条件 expr1 为真时,显示模板 statement1 内容,否则当 expr2 为真时,显示模板 statement2 内容,否则显示模板 statement3 的内容。如同其他语言中的条件控制一样,其中 <!–{elseif expr}–> 和 <!–{else} –> 是非必须的。
3.不带下标变量的数组循环
程序代码
<!–{loop $array $value}–> statement <!–{/loop}–>
相当于 PHP 的数组循环语句:
程序代码
foreach($array as $value) { statement }
4.带下标变量的数组循环
程序代码
<!–{loop $array $key $value}–> statement <!–{/loop}–>
相当于 PHP 的数组循环语句
程序代码
foreach($array as $key => $value) { statement }
5.时间处理函数
程序代码
#date(’Y-n-d H:i’, $time)#
相当于PHP得gmdate进行时间处理 gmdate($dateformat, $time) 6.自定义广告显示函数
程序代码
#getad(‘user’,’adid’)#
相当于PHP语法中的
程序代码
<?php echo getad(‘user’, ‘$adid’)?>
7.模板文件包含
程序代码
{template blog_header}
相当于PHP语法中的
程序代码
<?php template(‘blog_header’)?>
包含blog_header.htm文件。
8.模板中的eval函数
程序代码
<!–{eval $a = $b}–>
就相当于执行PHP程序
程序代码
<?php $a = $b;?>
9.模板中的block函数
程序代码
<!–{block name=”spaceblog” parameter=”dateline/604800….”}–>
就相当于PHP程序中的
程序代码
<?php block(‘$name’,’$parameter’);?>
Block函数,就是生成模块的主要函数。逻辑元素包围符在 { } 外面包含了 html 的注释符号 <!– –>,除了为了和信息元素相区别外,也方便了使用 Dreamweaver 和 Frontpage 之类工具编辑模板的用户。因逻辑元素会被识别为 html 的注释而不被显示,对于绝大多数用户,逻辑元素中的内容是完全不需要修改的,甚至修改错一个字符就可能引起错误信息和整个系统无法运行。因此通常您在修改模板的时候,不要修改模板的逻辑信息,更不要将逻辑信息内部元素(如 <!–{else}–> 等)的前后位置作以修改,否则可能会导致错误。如果您的模板被不慎修改损坏,请立即用原标准默认模板覆盖,即可恢复。对于高手而言,实际上外部的 <!– –> 是可以省略不写的,可以用于某些元素在模板中的定位,但强烈建议普通用户不要轻易尝试。
May
19
我们在SupeSite系统的每个模板里,都可以看到类似的一段代码:
<!--{block name="spacenews" parameter="dateline/2592000/haveattach/1/showattach/1/order/i.viewnum DESC/showdetail/1/messagelen/180/messagedot/1/limit/0,1/cachetime/98800/subjectlen/30/cachename/hotnews/tpl/data"}-->
<div id="topicnews" class="block" style="height: 240px; overflow: hidden;">
<h3>月点击图文头条</h3>
<!--{loop $_SBLOCK[hotnews] $value}-->
<p class="blockintro"><a href="$value[url]"><img src="$value[a_thumbpath]" class="blockintroimg" alt="$value[subject]" /></a>$value[message]...<a href="$value[url]">阅读更多</a></p>
<!--{/loop}-->
</div>
这里给大家解释下这段代码的作用:
一、
<!--{block name="spacenews" parameter="dateline/2592000/haveattach/1/showattach/1/order/i.viewnum DESC/showdetail/1/messagelen/180/messagedot/1/limit/0,1/cachetime/98800/subjectlen/30/cachename/hotnews/tpl/data"}-->
包含两个部分的内容:
1、根据 parameter 后面给出的参数在数据库里查询某个数据表,将查询到的所有资源存放到 $_SBLOCK[变量名] 数组里。通俗的说法是,这段代码相当与一段SQL的 select 语句,查询的数据表是 name 后面的参数,查询的条件是 parameter 后面的参数,最后查询的果存放到 $_SBLOCK[变量名] ,变量名是 cachename 后面的参数。
2、确定这部分数据的缓存时间:cachetime后面的参数,单位是秒;确定这部分数据在页面的显示模板:tpl后面的参数,如:data,那么这段数据显示的模板是:.\styles\data.html.php。大家可以看到 .\styles\data.html.php 这个文件夹里没有定义任何样式,所以必须在 block 代码下方定义样式。
二、
<!--{loop $_SBLOCK[hotnews] $value}-->
...
<!--{/loop}-->
loop 的含义是:将 $_SBLOCK[hotnews] 数组里的资源,逐一存放到 $value 数组里。注意:loop 和 foreach() 函数的作用一样。
三、
<p class="blockintro"><a href="$value[url]"><img src="$value[a_thumbpath]" class="blockintroimg" alt="$value[subject]" /></a>$value[message]...<a href="$value[url]">阅读更多</a></p>
这一段内容,都是 html 标签,
四、
为大家介绍常用的 parameter 参数含义:
order------------------------------以什么方式排序,常见的排序方式如下几种:
displayorder--------------以后台设置的显示顺序排序
views DESC----------------以查看数递减的方式排序
replies DESC--------------以回复数递减的方式排序
posts DESC----------------以帖子数递减的方式排序
m.posts DESC--------------以会员贴子数递减的方式排序
m.oltime DESC-------------以会员在线时间递减的方式排序
u.dateline DESC-----------以会员注册时间递减的方式排序
i.goodrate DESC-----------以信息好评数递减的方式排序
u.spaceallnum DESC--------以会员个人空间的信息总数递减排序
u.spaceblognum DESC-------以会员个人空间的日志总数递减排序
g.usernum DESC------------以圈子会员数递减的方式排序
g.lastpost DESC-----------以圈子最后更新时间递减的方式排序
limit------------------------------显示多少条信息
0,100---------------------显示100条
dateline---------------------------发布时间范围,以秒(s)为单位
2592000-------------------2592000秒,即:3天
showdetail-------------------------是否显示信息摘要
1-------------------------1为显示(0为不显示)
messagelen-------------------------摘要显示的长度,以字节数为单位
160-----------------------显示160个字节信息
subjectlen-------------------------主题的显示长度,以字节数为单位
40------------------------显示40个字节信息
type-------------------------------设置信息的类型
forum---------------------二级版块的信息
goods---------------------商品的信息
news----------------------资讯的信息
video---------------------影音的信息
filetype---------------------------设置附件的类型
image---------------------图片附件
lastpost---------------------------最后回复时间范围,以秒(s)为单位
2592000-------------------2592000秒,即:3天
subjectdot-------------------------显示主题时,如果主题长度大于显示长度,末尾是否加点
1-------------------------末尾加点(0为末尾不加点)
messagedot-------------------------显示摘要时,如果摘要长度大于显示长度,末尾是否加点
1-------------------------末尾加点(0为末尾不加点)
showattach-------------------------是否显示附件信息
1-------------------------显示附件信息
haveattach-------------------------是否必须包含附件
1-------------------------必须包含附件
isstar-----------------------------空间之星
1-------------------------是
perpage----------------------------每页显示的信息条数
15------------------------显示15条
regdate----------------------------注册时间范围,以秒(s)为单位
2592000-------------------2592000秒,即:3天
给大家一个技巧:一般可以通过英文意思来判断参数的含义,例如subjectlen,是subject length,即:主题长度。
<!--{block name="spacenews" parameter="dateline/2592000/haveattach/1/showattach/1/order/i.viewnum DESC/showdetail/1/messagelen/180/messagedot/1/limit/0,1/cachetime/98800/subjectlen/30/cachename/hotnews/tpl/data"}-->
<div id="topicnews" class="block" style="height: 240px; overflow: hidden;">
<h3>月点击图文头条</h3>
<!--{loop $_SBLOCK[hotnews] $value}-->
<p class="blockintro"><a href="$value[url]"><img src="$value[a_thumbpath]" class="blockintroimg" alt="$value[subject]" /></a>$value[message]...<a href="$value[url]">阅读更多</a></p>
<!--{/loop}-->
</div>
这里给大家解释下这段代码的作用:
一、
<!--{block name="spacenews" parameter="dateline/2592000/haveattach/1/showattach/1/order/i.viewnum DESC/showdetail/1/messagelen/180/messagedot/1/limit/0,1/cachetime/98800/subjectlen/30/cachename/hotnews/tpl/data"}-->
包含两个部分的内容:
1、根据 parameter 后面给出的参数在数据库里查询某个数据表,将查询到的所有资源存放到 $_SBLOCK[变量名] 数组里。通俗的说法是,这段代码相当与一段SQL的 select 语句,查询的数据表是 name 后面的参数,查询的条件是 parameter 后面的参数,最后查询的果存放到 $_SBLOCK[变量名] ,变量名是 cachename 后面的参数。
2、确定这部分数据的缓存时间:cachetime后面的参数,单位是秒;确定这部分数据在页面的显示模板:tpl后面的参数,如:data,那么这段数据显示的模板是:.\styles\data.html.php。大家可以看到 .\styles\data.html.php 这个文件夹里没有定义任何样式,所以必须在 block 代码下方定义样式。
二、
<!--{loop $_SBLOCK[hotnews] $value}-->
...
<!--{/loop}-->
loop 的含义是:将 $_SBLOCK[hotnews] 数组里的资源,逐一存放到 $value 数组里。注意:loop 和 foreach() 函数的作用一样。
三、
<p class="blockintro"><a href="$value[url]"><img src="$value[a_thumbpath]" class="blockintroimg" alt="$value[subject]" /></a>$value[message]...<a href="$value[url]">阅读更多</a></p>
这一段内容,都是 html 标签,
<a href="$value[url]">...</a>
,含义是在页面展示一个 a 标签,a标签的指向是 $value[url]。一般情况下,我们都不知道 $value[] 数组里存放的内容是什么,我们可以应用的元素有哪些。这时,我们可以使用这个语句将 $value[] 数组打印到页面上。<!--{eval print_r($value);}-->
四、
为大家介绍常用的 parameter 参数含义:
order------------------------------以什么方式排序,常见的排序方式如下几种:
displayorder--------------以后台设置的显示顺序排序
views DESC----------------以查看数递减的方式排序
replies DESC--------------以回复数递减的方式排序
posts DESC----------------以帖子数递减的方式排序
m.posts DESC--------------以会员贴子数递减的方式排序
m.oltime DESC-------------以会员在线时间递减的方式排序
u.dateline DESC-----------以会员注册时间递减的方式排序
i.goodrate DESC-----------以信息好评数递减的方式排序
u.spaceallnum DESC--------以会员个人空间的信息总数递减排序
u.spaceblognum DESC-------以会员个人空间的日志总数递减排序
g.usernum DESC------------以圈子会员数递减的方式排序
g.lastpost DESC-----------以圈子最后更新时间递减的方式排序
limit------------------------------显示多少条信息
0,100---------------------显示100条
dateline---------------------------发布时间范围,以秒(s)为单位
2592000-------------------2592000秒,即:3天
showdetail-------------------------是否显示信息摘要
1-------------------------1为显示(0为不显示)
messagelen-------------------------摘要显示的长度,以字节数为单位
160-----------------------显示160个字节信息
subjectlen-------------------------主题的显示长度,以字节数为单位
40------------------------显示40个字节信息
type-------------------------------设置信息的类型
forum---------------------二级版块的信息
goods---------------------商品的信息
news----------------------资讯的信息
video---------------------影音的信息
filetype---------------------------设置附件的类型
image---------------------图片附件
lastpost---------------------------最后回复时间范围,以秒(s)为单位
2592000-------------------2592000秒,即:3天
subjectdot-------------------------显示主题时,如果主题长度大于显示长度,末尾是否加点
1-------------------------末尾加点(0为末尾不加点)
messagedot-------------------------显示摘要时,如果摘要长度大于显示长度,末尾是否加点
1-------------------------末尾加点(0为末尾不加点)
showattach-------------------------是否显示附件信息
1-------------------------显示附件信息
haveattach-------------------------是否必须包含附件
1-------------------------必须包含附件
isstar-----------------------------空间之星
1-------------------------是
perpage----------------------------每页显示的信息条数
15------------------------显示15条
regdate----------------------------注册时间范围,以秒(s)为单位
2592000-------------------2592000秒,即:3天
给大家一个技巧:一般可以通过英文意思来判断参数的含义,例如subjectlen,是subject length,即:主题长度。
May
18
在显示flash的代码中添加如下一句话就ok了。
<PARAM NAME=wmode VALUE=opaque>
May
15
0、关于绝对路径和相对路径
1.基本概念的理解绝对路径:绝对路径就是你的主页上的文件或目录在硬盘上真正的路径,(URL和物理路径)例如:C:xyz est.txt 代表了test.txt文件的绝对路径。http://www.sun.com/index.htm也代表了一个URL绝对路径。相对路径:相对与某个基准目录的路径。包含Web的相对路径(HTML中的相对目录),例如:在Servlet中,"/"代表Web应用的跟目录。和物理路径的相对表示。例如:"./" 代表当前目录,"../"代表上级目录。这种类似的表示,也是属于相对路径。另外关于URI,URL,URN等内容,请参考RFC相关文档标准。RFC 2396: Uniform Resource Identifiers (URI): Generic Syntax,(http://www.ietf.org/rfc/rfc2396.txt)2.关于JSP/Servlet中的相对路径和绝对路径。2.1服务器端的地址服务器端的相对地址指的是相对于你的web应用的地址,这个地址是在服务器端解析的(不同于html和javascript中的相对地址,他们是由客户端浏览器解析的)
1、request.getRealPath
方法:request.getRealPath("/")
得到的路径:C:\Program Files\Apache Software Foundation\Tomcat 5.5\webapps\strutsTest\
方法:request.getRealPath(".")
得到的路径:C:\Program Files\Apache Software Foundation\Tomcat 5.5\webapps\strutsTest\.
方法:request.getRealPath("")
得到的路径:C:\Program Files\Apache Software Foundation\Tomcat 5.5\webapps\strutsTest
request.getRealPath("web.xml")
C:\Program Files\Apache Software Foundation\Tomcat 5.5\webapps\strutsTest\web.xml
2、request.getParameter("");
ActionForm.getMyFile();
方法:String filepath = request.getParameter("myFile");
得到的路径:D:\VSS安装目录\users.txt
方法:String filepath = ActionForm.getMyFile();
得到的路径:D:\VSS安装目录\users.txt
--------------------------------------------------
strutsTest 为工程名
myFile 在ActionForm中,为private String myFile;
在jsp页面中:为
--------------------------------------------------
1.基本概念的理解绝对路径:绝对路径就是你的主页上的文件或目录在硬盘上真正的路径,(URL和物理路径)例如:C:xyz est.txt 代表了test.txt文件的绝对路径。http://www.sun.com/index.htm也代表了一个URL绝对路径。相对路径:相对与某个基准目录的路径。包含Web的相对路径(HTML中的相对目录),例如:在Servlet中,"/"代表Web应用的跟目录。和物理路径的相对表示。例如:"./" 代表当前目录,"../"代表上级目录。这种类似的表示,也是属于相对路径。另外关于URI,URL,URN等内容,请参考RFC相关文档标准。RFC 2396: Uniform Resource Identifiers (URI): Generic Syntax,(http://www.ietf.org/rfc/rfc2396.txt)2.关于JSP/Servlet中的相对路径和绝对路径。2.1服务器端的地址服务器端的相对地址指的是相对于你的web应用的地址,这个地址是在服务器端解析的(不同于html和javascript中的相对地址,他们是由客户端浏览器解析的)
1、request.getRealPath
方法:request.getRealPath("/")
得到的路径:C:\Program Files\Apache Software Foundation\Tomcat 5.5\webapps\strutsTest\
方法:request.getRealPath(".")
得到的路径:C:\Program Files\Apache Software Foundation\Tomcat 5.5\webapps\strutsTest\.
方法:request.getRealPath("")
得到的路径:C:\Program Files\Apache Software Foundation\Tomcat 5.5\webapps\strutsTest
request.getRealPath("web.xml")
C:\Program Files\Apache Software Foundation\Tomcat 5.5\webapps\strutsTest\web.xml
2、request.getParameter("");
ActionForm.getMyFile();
方法:String filepath = request.getParameter("myFile");
得到的路径:D:\VSS安装目录\users.txt
方法:String filepath = ActionForm.getMyFile();
得到的路径:D:\VSS安装目录\users.txt
--------------------------------------------------
strutsTest 为工程名
myFile 在ActionForm中,为private String myFile;
在jsp页面中:为
--------------------------------------------------
May
13
今天需要一个验证日期和时间格式的js脚本,到网上搜集并修改调整后,使用正常,记录如下,如有问题日后再更新补充,如有朋友需要尽管使用,如有问题请在此跟帖。
function isDate(oDateTime)
{
//对日期格式进行验证,要求为2000-2099年 格式为yyyy-mm-dd[ hh:mm:ss] 并且可以正常转换成正确的日期
var pat_hd=/^(20\d{2}-((0[1-9]{1})|(1[0-2]{1}))-((0[1-9]{1})|([1-2]{1}[0-9]{1})|(3[0-1]{1}))){1}((\s\d{2}:\d{2})|(\s\d{2}:\d{2}:\d{2}))?$/;
try{
if(!pat_hd.test(oDateTime)) throw "日期非法!";
var arr_dt=oDateTime.split(" ");
if(arr_dt[0]== "") throw "日期非法!";
var oDate=arr_dt[0];
var arr_hd=oDate.split("-");
var dateTmp;
dateTmp= new Date(arr_hd[0],parseFloat(arr_hd[1])-1,parseFloat(arr_hd[2]));
if(dateTmp.getFullYear()!=parseFloat(arr_hd[0]) || dateTmp.getMonth()!=parseFloat(arr_hd[1]) -1 || dateTmp.getDate()!=parseFloat(arr_hd[2])) throw "日期非法! ";
if(arr_dt[1]!=null && arr_dt[1]!= "")
{
var oTime=arr_dt[1];
var arr_ht=oTime.split(":");
if (arr_ht[2]!=null)
dateTmp.setHours(arr_ht[0],arr_ht[1],arr_ht[2]);
else dateTmp.setHours(arr_ht[0],arr_ht[1]);
if(dateTmp.getHours()!=parseFloat(arr_ht[0]) || dateTmp.getMinutes()!=parseFloat(arr_ht[1])) throw "日期非法!";
if (arr_ht[2]!=null&&dateTmp.getSeconds()!=parseFloat(arr_ht[2])) throw "日期非法!";
}
}
catch(ex)
{
return false;
}
return true;
}
function isDate(oDateTime)
{
//对日期格式进行验证,要求为2000-2099年 格式为yyyy-mm-dd[ hh:mm:ss] 并且可以正常转换成正确的日期
var pat_hd=/^(20\d{2}-((0[1-9]{1})|(1[0-2]{1}))-((0[1-9]{1})|([1-2]{1}[0-9]{1})|(3[0-1]{1}))){1}((\s\d{2}:\d{2})|(\s\d{2}:\d{2}:\d{2}))?$/;
try{
if(!pat_hd.test(oDateTime)) throw "日期非法!";
var arr_dt=oDateTime.split(" ");
if(arr_dt[0]== "") throw "日期非法!";
var oDate=arr_dt[0];
var arr_hd=oDate.split("-");
var dateTmp;
dateTmp= new Date(arr_hd[0],parseFloat(arr_hd[1])-1,parseFloat(arr_hd[2]));
if(dateTmp.getFullYear()!=parseFloat(arr_hd[0]) || dateTmp.getMonth()!=parseFloat(arr_hd[1]) -1 || dateTmp.getDate()!=parseFloat(arr_hd[2])) throw "日期非法! ";
if(arr_dt[1]!=null && arr_dt[1]!= "")
{
var oTime=arr_dt[1];
var arr_ht=oTime.split(":");
if (arr_ht[2]!=null)
dateTmp.setHours(arr_ht[0],arr_ht[1],arr_ht[2]);
else dateTmp.setHours(arr_ht[0],arr_ht[1]);
if(dateTmp.getHours()!=parseFloat(arr_ht[0]) || dateTmp.getMinutes()!=parseFloat(arr_ht[1])) throw "日期非法!";
if (arr_ht[2]!=null&&dateTmp.getSeconds()!=parseFloat(arr_ht[2])) throw "日期非法!";
}
}
catch(ex)
{
return false;
}
return true;
}







