当前位置: 首页 > 图文教程 > 网页制作 > CMS技巧 > Dvbbs V8.2.0 RC1模板驱动机制

CMS技巧
完善Wordpress博客功能的7个辅助插件
最高效实用的WordPress静态缓存插件
WordPress 2.8的8个特色的新增功能
结合WordPress结构进行适合自己的SEO
用Wordpress制作企业网站的四点好处
WordPress作为CMS的优势所在
WordPress基础,让你全面了解WordPress
迪车部落采用Discuz! 7.0 打造最大比亚迪车友会
DedeCMS整合PHPWind架设网站教程
网上下载的Zblog模板怎么修改?
把wordpress生成缩略图功能去掉
优化WordPress博客总结的12个小技巧
Webjx收集33个有用的Wordpress技巧
ShopEx4.8.4网站内容管理后天核心设置
用Discuz!创建属于自己的网站论坛
快速建设自己的电子商务网站
为电子商务网站添加在线支付功能
选择CMS需要注意的8点
网站开发方法大观
了解WORDPRESS的RSS Cloud

CMS技巧 中的 Dvbbs V8.2.0 RC1模板驱动机制


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2010-01-03   浏览: 66 ::
收藏到网摘: n/a

Dvbbs V8.2.0 RC1号称采用全新的模板驱动机制,在其发布之际,我们来看看它的模板驱动机制,也学习学习。在Dvbbs V8.2.0 RC1中标签大体可分成两类,和模板驱动相关的函数主要有四个,下边我们先来说说标签和函数,最后举一个例子实际应用一下。

一、标签种类

1.单标签,格式如{$name.value}
2.区域标签,格式如{$name.begin} ... {$name.end}

二、模板驱动相关主要函数(4个)

1.TPL_Scan函数
功能:扫描模板,输出非标签的内容,遇到标签就交给TPL_Parse函数处理。

2.TPL_Parse函数
功能:对标签进行分析,当为单标签时交给TPL_ParseNode函数处理,当为区域标签时分析出标签中的内容再交给TPL_ParseArea函数处理,最终返回新的起始位置给TPL_Scan。

3.TPL_ParseNode函数
功能:处理(替换)单标签并输出内容。

4.TPL_ParseArea函数
功能:调用TPL_Scan函数处理区域标签中的内容。

函数位置说明:TPL_Scan和TPL_Parse函数放在inc/dv_template.inc文件中供其他页面调用,其他页面中必须包含自己的TPL_ParseNode和TPL_ParseArea函数来处理标签,因为不同页面不同模板中的标签不尽相同!

三、举例应用
<%
'第一部分:我们定义一个变量Template存放模板内容
Dim Template
Template = "标题:{$aaa.title}(日期:{$aaa.date})<br/><br/>内容:{$bbslist.begin}不错哈,{$bbb.content}{$bbslist.end}"

'第二部分:和模板驱动相关的四个重要函数
Sub TPL_Scan(sTemplate)
    Dim iPosLast, iPosCur
    iPosLast    = 1
    While True
        iPosCur    = InStr(iPosLast, sTemplate, "{$")
        If iPosCur>0 Then
            TPL_Echo    Mid(sTemplate, iPosLast, iPosCur-iPosLast)
            iPosLast    = TPL_Parse(sTemplate, iPosCur+2)
        Else
            TPL_Echo    Mid(sTemplate, iPosLast)
            Exit Sub  
        End If
     Wend
End Sub

Function TPL_Parse(sTemplate, iPosBegin)
    Dim iPosCur, sToken, sValue, sTemp
    iPosCur        = InStr(iPosBegin, sTemplate, "}")
    sTemp        = Mid(sTemplate,iPosBegin,iPosCur-iPosBegin)
    iPosBegin    = iPosCur+1
    iPosCur        = InStr(sTemp, ".")
    sToken        = Left(sTemp, iPosCur-1)
    sValue        = Mid(sTemp, iPosCur+1)
    Select Case sValue
        Case "begin"
            sTemp            = "{$" & ( sToken & ".end}" )
            iPosCur            = InStr(iPosBegin, sTemplate, sTemp)
            TPL_ParseArea      sToken, Mid(sTemplate, iPosBegin, iPosCur-iPosBegin)
            iPosBegin        = iPosCur+Len(sTemp)
        Case Else
            TPL_ParseNode sToken, sValue
    End Select
    TPL_Parse    = iPosBegin
End Function

Sub TPL_ParseNode(sTokenType, sTokenName)
    Select Case sTokenType
        Case "aaa"
            '细化给ParseAaaNode处理
            ParseAaaNode sTokenName
        Case "bbb"
            '细化给ParseBbbNode处理
            ParseBbbNode sTokenName
    End Select
End Sub

Sub TPL_ParseArea(sTokenName, sTemplate)
    Select Case sTokenName
        Case "bbslist"
            For i=0 To 4 '根据实际情况设置循环次数
                TPL_Scan sTemplate
            Next
        Case "other"
             '省略
        Case "other2"
            '省略
    End Select
End Sub

'第三部分:其他相关函数
TPL_Immediate = True
Sub TPL_Echo(sStr)
    If TPL_Immediate Then
        Response.Write    sStr
    Else
        TPL_Memo    = TPL_Memo&sStr
    End If
End Sub

Sub ParseAaaNode(sToken)
    Select Case sToken
        Case "title"
            Response.Write("这是贴子标题")
        Case "date"
            Response.Write("2008-01-31")
        Case "other"
            '省略
    End Select
End Sub

Sub ParseBbbNode(sToken)
    Select Case sToken
        Case "content"
            Response.Write("软晨学习网:http://www.ruanchen.com/'省略
    End Select
End Sub

'第四部分:该调用TPL_Scan输出内容了
TPL_Scan Template
%>