เอ็นจิ้นเทมเพลตนี้สะดวกกว่า รวมกับ HTML รหัสการคัดลอกมีดังนี้:
แม่แบบชั้นเรียน
c_Char ส่วนตัว, c_Path, c_FileName, c_Content, c_PageUrl, c_CurrentPage, c_PageStr, แทนที่PageStr
ชื่อแท็กส่วนตัว
-
'ตั้งค่าการเข้ารหัส
-
ทรัพย์สินสาธารณะ Let Char(ByVal Str)
c_Char = Str
สิ้นสุดคุณสมบัติ
ทรัพย์สินสาธารณะรับ Char
ชาร์ = c_Char
สิ้นสุดคุณสมบัติ
-
'กำหนดเส้นทางโฟลเดอร์เทมเพลต
-
เส้นทางทรัพย์สินสาธารณะ (ByVal Str)
c_Path = Str
สิ้นสุดคุณสมบัติ
เส้นทางรับทรัพย์สินสาธารณะ
เส้นทาง = c_Path
สิ้นสุดคุณสมบัติ
-
'ตั้งชื่อไฟล์เทมเพลต'
-
ทรัพย์สินสาธารณะให้ชื่อไฟล์ (ByVal Str)
c_FileName = Str
สิ้นสุดคุณสมบัติ
ทรัพย์สินสาธารณะรับชื่อไฟล์
ชื่อไฟล์ = c_FileName
สิ้นสุดคุณสมบัติ
-
' รับเส้นทางเฉพาะของไฟล์เทมเพลต
-
ทรัพย์สินสาธารณะรับ FilePath
ถ้า Len(Path) > 0 ดังนั้น Path = แทนที่(Path, /, /)
ถ้าถูกต้อง(เส้นทาง 1) <> / จากนั้น เส้นทาง = เส้นทาง & /
FilePath = เส้นทางและชื่อไฟล์
สิ้นสุดคุณสมบัติ
-
'ตั้งค่า URL เพจ
-
ทรัพย์สินสาธารณะให้ PageUrl(ByVal Str)
c_PageUrl = Str
สิ้นสุดคุณสมบัติ
ทรัพย์สินสาธารณะรับ PageUrl
URL เพจ = c_PageUrl
สิ้นสุดคุณสมบัติ
-
'ตั้งค่าเพจปัจจุบัน
-
ทรัพย์สินสาธารณะ Let CurrentPage(ByVal Str)
c_CurrentPage = Str
สิ้นสุดคุณสมบัติ
ทรัพย์สินสาธารณะรับ CurrentPage
หน้าปัจจุบัน = c_CurrentPage
สิ้นสุดคุณสมบัติ
-
'เนื้อหาที่ส่งออก
-
ทรัพย์สินสาธารณะได้รับการฟลัช
ตอบกลับเขียน (c_Content)
สิ้นสุดคุณสมบัติ
-
'การเริ่มต้นคลาส
-
คลาสย่อยส่วนตัว_เริ่มต้น
ชื่อแท็ก = pjblog
c_Char = UTF-8
แทนที่PageStr = อาร์เรย์(, )
จบหมวดย่อย
-
' กรองอักขระที่ขัดแย้งกัน
-
ฟังก์ชั่นส่วนตัว doQuote (ByVal Str)
doQuote = แทนที่ (Str, Chr (34), )
ฟังก์ชันสิ้นสุด
-
'เลิกเรียน
-
Class_Terminate ย่อยส่วนตัว
จบหมวดย่อย
-
'วิธีโหลดไฟล์
-
ฟังก์ชั่นส่วนตัว LoadFromFile (ByVal cPath)
วัตถุสลัว
ตั้ง obj = Server.CreateObject (ADODB.Stream)
ด้วยวัตถุ
.ประเภท = 2
.โหมด = 3
.เปิด
.ชุดอักขระ = อักขระ
.ตำแหน่ง = .ขนาด
.LoadFromFile Server.MapPath(cPath)
LoadFromFile = .ReadText
.ปิด
จบด้วย
ตั้ง obj = ไม่มีเลย
ฟังก์ชันสิ้นสุด
-
' รับวัตถุที่ตรงกันปกติ
-
ฟังก์ชั่นสาธารณะ GetMatch (ByVal Str, ByVal Rex)
ดิม เร็ก, แม็ก
ตั้งค่า Reg = RegExp ใหม่
ด้วยเร็ก
.IgnoreCase = จริง
.สากล=จริง
.รูปแบบ = เร็กซ์
ตั้งค่า Mag = .Execute (Str)
ถ้า Mag.Count > 0 แล้ว
ตั้งค่า GetMatch = Mag
อื่น
ตั้งค่า GetMatch = Server.CreateObject (Scripting.Dictionary)
สิ้นสุดถ้า
จบด้วย
ตั้งค่า Reg = ไม่มีเลย
ฟังก์ชันสิ้นสุด
-
'เปิดเอกสาร
-
เปิดย่อยสาธารณะ
c_Content = LoadFromFile (เส้นทางไฟล์)
จบหมวดย่อย
-
'การดำเนินการบัฟเฟอร์
-
บัฟเฟอร์ย่อยสาธารณะ
c_Content = GridView (c_Content)
เรียก ExecuteFunction
จบหมวดย่อย
-
'กริดวิว
-
ฟังก์ชั่นส่วนตัว GridView (ByVal o_Content)
Dim Matches, SubMatches, SubText
แอตทริบิวต์ Dim เนื้อหา
ตั้งค่าการจับคู่ = GetMatch(o_Content, /< & TagName & /:(/d+?)(.+?)/>([/s/S]+?)<// & TagName & /:/1/>)
ถ้า Matches.Count > 0 แล้ว
สำหรับการแข่งขันย่อยแต่ละรายการในแมตช์
คุณสมบัติ = SubMatches.SubMatches(1) ' kocms
เนื้อหา = SubMatches.SubMatches(2) ' <คอลัมน์>...</คอลัมน์>
SubText = Process(Attribute, Content) 'ส่งคืนผลลัพธ์ของการประมวลผลกระบวนการทั้งหมด
o_Content = แทนที่(o_Content, SubMatches.value, < & SubText(2) & SubText(0) & > & SubText(1) & </ & SubText(2) & >, 1, -1, 1) ' แทนที่ตัวแปรป้ายกำกับ
ต่อไป
สิ้นสุดถ้า
ตั้งค่าการแข่งขัน = ไม่มีเลย
ถ้า Len(ReplacePageStr(0)) > 0 จากนั้น ' พิจารณาว่าตัวแปรเลเบลมีค่าหรือไม่ และแทนที่หากเป็นเช่นนั้น
o_Content = แทนที่ (o_Content, แทนที่PageStr (0), แทนที่PageStr (1), 1, -1, 1)
RefplacePageStr = Array(, ) 'ล้างตัวแปรอาเรย์หลังจากการแทนที่'
สิ้นสุดถ้า
GridView = o_เนื้อหา
ฟังก์ชันสิ้นสุด
-
' กำหนดคุณสมบัติ
-
กระบวนการฟังก์ชันส่วนตัว (แอตทริบิวต์ ByVal, เนื้อหา ByVal)
Dim Matches, SubMatches, ข้อความ
Dim MatchTag, MatchContent
แหล่งข้อมูล Dim ชื่อ องค์ประกอบ หน้า รหัส
แหล่งข้อมูล = : ชื่อ = : องค์ประกอบ = : หน้า = 0 : id =
ตั้งค่าการจับคู่ = GetMatch(Attribute, /s(.+?)/=/(.+?)/)
ถ้า Matches.Count > 0 แล้ว
สำหรับการแข่งขันย่อยแต่ละรายการในแมตช์
MatchTag = SubMatches.SubMatches(0) ' รับชื่อแอตทริบิวต์
MatchContent = SubMatches.SubMatches(1) ' รับค่าแอตทริบิวต์
ถ้า Lcase(MatchTag) = name ดังนั้น Name = MatchContent ' รับค่าแอตทริบิวต์ name
ถ้า Lcase(MatchTag) = แหล่งข้อมูล ดังนั้น แหล่งข้อมูล = MatchContent' รับค่าแอตทริบิวต์แหล่งข้อมูล
ถ้า Lcase(MatchTag) = element ดังนั้น Element = MatchContent ' รับค่าแอตทริบิวต์ขององค์ประกอบ
ถ้า Lcase(MatchTag) = page จากนั้น page = MatchContent ' รับค่าแอตทริบิวต์ของหน้า
ถ้า Lcase(MatchTag) = id ดังนั้น id = MatchContent ' รับค่าแอตทริบิวต์ id
ต่อไป
ถ้า Len(ชื่อ) > 0 และ Len(MatchContent) > 0 แล้ว
ข้อความ = การวิเคราะห์ (แหล่งข้อมูล, ชื่อ, เนื้อหา, หน้า, id) 'ดำเนินการแยกวิเคราะห์คุณสมบัติ
ถ้า Len(แหล่งข้อมูล) > 0 ดังนั้น Attribute = แทนที่(Attribute, datasource= & datasource & , )
ถ้าหน้า > 0 ดังนั้น Attribute = แทนที่(Attribute, page= & page &, )
คุณลักษณะ = แทนที่ (คุณลักษณะ ชื่อ= & ชื่อ & , , 1, -1, 1)
คุณสมบัติ = แทนที่ (คุณสมบัติองค์ประกอบ= & องค์ประกอบ & , , 1, -1, 1)
กระบวนการ = อาร์เรย์ (แอตทริบิวต์ ข้อความ องค์ประกอบ)
อื่น
กระบวนการ = อาร์เรย์ (แอตทริบิวต์, div)
สิ้นสุดถ้า
อื่น
กระบวนการ = อาร์เรย์ (แอตทริบิวต์, div)
สิ้นสุดถ้า
ตั้งค่าการแข่งขัน = ไม่มีเลย
ฟังก์ชันสิ้นสุด
-
' พาร์ส
-
การวิเคราะห์ฟังก์ชันส่วนตัว (ByVal id, ByVal Name, ByVal Content, ByVal page, ByVal PageID)
ข้อมูลสลัว
เลือก Case Lcase(Name) 'เลือกแหล่งข้อมูล
Case loop Data = DataBind(id, เนื้อหา, หน้า, PageID)
กรณีข้อมูล = DataFor(id, เนื้อหา, หน้า, PageID)
สิ้นสุดการเลือก
การวิเคราะห์=ข้อมูล
ฟังก์ชันสิ้นสุด
-
'ผูกแหล่งข้อมูล
-
ฟังก์ชั่นส่วนตัว DataBind (ByVal id, เนื้อหา ByVal, หน้า ByVal, ByVal PageID)
Dim Text, Matches, SubMatches, SubText
ดำเนินการข้อความ = & id & (1) 'โหลดแหล่งข้อมูล
ตั้งค่าการจับคู่ = GetMatch(เนื้อหา, /<คอลัมน์/>([/s/S]+)/<//Columns/>)
ถ้า Matches.Count > 0 แล้ว
สำหรับการแข่งขันย่อยแต่ละรายการในแมตช์
SubText = ItemTemplate(SubMatches.SubMatches(0), ข้อความ, หน้า, PageID) ' ดำเนินการเปลี่ยนโมดูล
เนื้อหา = แทนที่ (เนื้อหา, SubMatches.value, ข้อความย่อย, 1, -1, 1)
ต่อไป
DataBind = เนื้อหา
อื่น
DataBind=
สิ้นสุดถ้า
ตั้งค่าการแข่งขัน = ไม่มีเลย
ฟังก์ชันสิ้นสุด
-
' จับคู่อินสแตนซ์เทมเพลต
-
เทมเพลตรายการฟังก์ชันส่วนตัว (ByVal TextTag, ByVal Text, ByVal page, ByVal PageID)
Dim Matches, SubMatches, SubMatchText
Dim SecMatch, SecSubMatch
ติ่มซำ TempText
Dim TextLen, TextLeft, TextRight
ตั้งค่าการจับคู่ = GetMatch(TextTag, /<ItemTemplate/>([/s/S]+)/<//ItemTemplate/>)
ถ้า Matches.Count > 0 แล้ว
สำหรับการแข่งขันย่อยแต่ละรายการในแมตช์
SubMatchText = SubMatches.SubMatches(0)
-
' เริ่มการวนซ้ำ
-
SubMatchText = GridView (SubMatchText)
-
' สิ้นสุดการซ้อนลูป
-
ถ้า UBound(ข้อความ, 1) = 0 แล้ว
ข้อความชั่วคราว=
อื่น
ข้อความชั่วคราว=
-
'เริ่มเพจ
-
ถ้า Len(หน้า) > 0 และหน้า > 0 แล้ว
ถ้า Len(CurrentPage) = 0 หรือ CurrentPage = 0 ดังนั้น CurrentPage = 1
TextLen = UBound(ข้อความ, 2)
TextLeft = (หน้าปัจจุบัน - 1) * หน้า
TextRight = หน้าปัจจุบัน * หน้า - 1
ถ้า TextLeft < 0 แล้ว TextLeft = 0
ถ้า TextRight > TextLen ดังนั้น TextRight = TextLen
c_PageStr = MultiPage (TextLen + 1, หน้า, CurrentPage, PageUrl, float:right, , False)
ถ้า Int(Len(c_PageStr)) > 0 แล้ว
แทนที่PageStr = Array(<page: & Trim(PageID) & />, c_PageStr)
อื่น
แทนที่PageStr = Array(<page: & Trim(PageID) & />, )
สิ้นสุดถ้า
อื่น
ข้อความซ้าย = 0
TextRight = UBound(ข้อความ, 2)
สิ้นสุดถ้า
สำหรับ i = TextLeft ถึง TextRight
TempText = TempText & ItemReSec(i, SubMatchText, Text) 'โหลดเนื้อหาเทมเพลต
ต่อไป
สิ้นสุดถ้า
ต่อไป
ItemTemplate = ข้อความชั่วคราว
อื่น
เทมเพลตรายการ =
สิ้นสุดถ้า
ตั้งค่าการแข่งขัน = ไม่มีเลย
ฟังก์ชันสิ้นสุด
-
'แทนที่สตริงเทมเพลต
-
ฟังก์ชั่นส่วนตัว ItemReSec (ByVal i, ByVal Text, ByVal Arrays)
การจับคู่แบบติ่มซำ, การจับคู่ย่อย
ตั้งค่าการจับคู่ = GetMatch(ข้อความ, /$(/d+?))
ถ้า Matches.Count > 0 แล้ว
สำหรับการแข่งขันย่อยแต่ละรายการในแมตช์
ข้อความ = แทนที่ (ข้อความ, SubMatches.value, doQuote (อาร์เรย์ (SubMatches.SubMatches (0), i)), 1, -1, 1) ' ดำเนินการแทนที่
ต่อไป
ItemReSec = ข้อความ
อื่น
ItemReSec=
สิ้นสุดถ้า
ตั้งค่าการแข่งขัน = ไม่มีเลย
ฟังก์ชันสิ้นสุด
-
'ฟังก์ชันตัวแปรโกลบอล'
-
ฟังก์ชั่นการดำเนินการย่อยส่วนตัว
Dim Matches, SubMatches, ข้อความ, ExeText
ตั้งค่าการจับคู่ = GetMatch(c_Content, /<function/:([0-9a-zA-Z_/.]*?)/((.*?)/(.+?)/(.*?)/)// />)
ถ้า Matches.Count > 0 แล้ว
สำหรับการแข่งขันย่อยแต่ละรายการในแมตช์
ข้อความ = SubMatches.SubMatches(0) & ( & SubMatches.SubMatches(1) & & SubMatches.SubMatches(2) & & SubMatches.SubMatches(3) & )
ดำเนินการ ExeText= & ข้อความ
c_Content = แทนที่ (c_Content, SubMatches.value, ExeText, 1, -1, 1)
ต่อไป
สิ้นสุดถ้า
ตั้งค่าการแข่งขัน = ไม่มีเลย
จบหมวดย่อย
-
' การทดแทนฉลากระดับโลกแบบธรรมดา
-
ให้เช่าทรัพย์สินสาธารณะ(ByVal t, ByVal s)
Dim SetMatch, Bstr, SetSubMatch
ตั้งค่า SetMatch = GetMatch(c_Content, (/<Set/:([0-9a-zA-Z_/.]*?)/(((.*?) & t & (.*?))?/)// />))
ถ้า SetMatch.Count > 0 ดังนั้น
สำหรับแต่ละ SetSubMatch ใน SetMatch
ดำเนินการ Bstr = & SetSubMatch.SubMatches(1) & ( & SetSubMatch.SubMatches(3) & & s & & SetSubMatch.SubMatches(4) & )
c_Content = แทนที่ (c_Content, SetSubMatch.Value, Bstr, 1, -1, 1)
ต่อไป
สิ้นสุดถ้า
ตั้งค่า SetMatch = ไม่มีเลย
ตั้งค่า SetMatch = GetMatch(c_Content, (/<Set/: & t & ///>))
ถ้า SetMatch.Count > 0 ดังนั้น
สำหรับแต่ละ SetSubMatch ใน SetMatch
c_Content = แทนที่ (c_Content, SetSubMatch.Value, s, 1, -1, 1)
ต่อไป
สิ้นสุดถ้า
ตั้งค่า SetMatch = ไม่มีเลย
สิ้นสุดคุณสมบัติ
จบคลาส