ในการพัฒนาระบบเนื้อหานั้นเกี่ยวข้องกับกระบวนการแยกเนื้อหาและรูปแบบนั่นคือกระบวนการปรับแต่งเทมเพลตเพจตามผู้ใช้แล้วแทนที่ด้วยเนื้อหาที่เกี่ยวข้อง สิ่งนี้แตกต่างโดยพื้นฐานจากระบบการจัดการเนื้อหาทั้งไซต์ภายนอกจำนวนมาก มีระบบการจัดการเนื้อหาจำนวนมากที่มีลักษณะเหมือนกันไม่ว่าจะมีคนใช้งานกี่คน เนื่องจากไม่สามารถปรับแต่งเพจได้ และผู้ใช้ที่ไม่ทราบการเขียนโปรแกรมก็ไม่สามารถแก้ไขได้ ฉันไม่คิดว่าเว็บไซต์แบบนั้นซึ่งกรอกพารามิเตอร์เพียงไม่กี่อย่างและออกมาแล้ว จะมีอนาคตอีกมาก เพราะทุกคนหน้าตาเหมือนกันและทุกคนรู้วิธีกรอกพารามิเตอร์เหล่านั้น
ตัวอย่างเช่น หากคุณดูไซต์ต่อไปนี้ คุณจะคิดว่าไซต์เหล่านี้เป็นชุดของโปรแกรมหรือไม่ เพราะเหตุใด
www.blueidea.com
http://pages.blueidea.com
http://digi.blueidea.com
http://dsp.blueidea.com
http://www.dcshooter.com
ถ้าฉันบอกคุณว่าพวกเขาทั้งหมดเป็นโปรแกรมและเว็บมาสเตอร์ที่เกี่ยวข้องออกแบบเทมเพลตที่แตกต่างกันเพื่อแสดงหน้าเว็บเท่านั้น คุณจะพบกับความเป็นเลิศของระบบนี้
แน่นอน เนื่องจากลักษณะระดับสูงของระบบนี้ ปัจจุบันจึงไม่สามารถใช้ได้สำหรับผู้ใช้ทั่วไป ดังนั้นฉันจึงพัฒนาระบบการจัดการเนื้อหาของตัวเอง ระบบจัดการเนื้อหาจูบ
เพื่อให้ผู้ใช้มีระบบเทมเพลต ประการแรกจะต้องมีระบบการมาร์กที่เรียบง่ายและเข้าใจง่าย ลองดูโค้ดต่อไปนี้เพื่อดูว่าเข้าใจง่ายหรือไม่:
<tag:loop channelid=1 pagesize=10 />channelid คือ ID ของคอลัมน์ในฐานข้อมูล
pagesize คือจำนวนเอกสารที่จะแสดงรายการ
title คือความยาวของชื่อเรื่อง
type คือประเภทคอลัมน์รายการ และ NEW ที่นี่ถูกตั้งค่าเป็นเอกสารล่าสุด
column คือจำนวนคอลัมน์ที่จะแสดง
บทนำข้างต้นคือการเผยแพร่ให้กับผู้ที่ไม่รู้การเขียนโปรแกรมหรือไม่เข้าใจระบบเนื้อหา และเพื่อโฆษณาระบบการจัดการเนื้อหาของฉัน และสิ่งที่ฉันอยากจะพูดก็คือ โมดูลเทมเพลตระบบการจัดการเนื้อหาที่ใช้โดย Blue เว็บไซต์ในอุดมคติ แข็งแกร่งกว่าของฉันมาก
ตอนนี้ถึงตาของโปรแกรมเมอร์แล้ว คนอื่นๆ ไม่จำเป็นต้องดูถูก
แล้วจะอ่านค่าของมันได้อย่างไร?
ฟังก์ชันต่อไปนี้เป็นฟังก์ชันสุดท้ายและใช้เพื่อแยกวิเคราะห์เนื้อหาของเทมเพลตทั้งหมด
คัดลอกโค้ดดังนี้:'[ฟังก์ชัน] แท็กเทมเพลตแบบกำหนดเอง
Function ProcessCustomTags(ByVal sContent)
Dim objRegEx, Match, Matches
'สร้างนิพจน์ทั่วไป
ตั้ง objRegEx = RegExp ใหม่
'ค้นหาเนื้อหา
objRegEx.Pattern = <tag:.*/>
' ละเว้น case
objRegEx.IgnoreCase = True
'การค้นหาทั่วโลก
objRegEx.Global = True
'ดำเนินการค้นหากับ สตริงเนื้อหาที่เราถูกส่งไปแล้ว
Set Matches = objRegEx.Execute(sContent)
'วนซ้ำการจับคู่ที่พบ
สำหรับการจับคู่แต่ละรายการในการจับคู่
'แทนที่การจับคู่แต่ละรายการด้วย HTML ที่เหมาะสมจากฟังก์ชัน ParseTag ของเรา
sContent = แทนที่(sContent, Match.Value, ParseTag (Match.Value))
ถัดไป
'ทำลาย
ชุดอ็อบเจ็กต์ Matches = Nothing
set objRegEx = Nothing
' Return value
ProcessCustomTags = sContent
End ฟังก์ชั่น
ใช้นิพจน์ทั่วไปในโค้ดด้านบน หากคุณไม่ทราบข้อมูลมากนัก โปรดดูข้อมูลที่เกี่ยวข้อง ฉันจะไม่ลงรายละเอียดที่นี่
ดังนั้นวิธีรับค่าพารามิเตอร์ มันก็เป็นฟังก์ชันเช่นกัน:
คัดลอกโค้ดในกล่องคัดลอกโค้ดดังนี้:'[ฟังก์ชัน] รับชื่อพารามิเตอร์ของแท็กเทมเพลต
' เช่น: <tag:loop channelid=1 pagesize= 10 />ฟังก์ชั่น GetAttribute(ByVal strAttribute, ByVal strTag)
Dim objRegEx, Matches
'สร้างนิพจน์ทั่วไป
Set objRegEx = RegExp ใหม่
'ค้นหาเนื้อหา (ชื่อแอตทริบิวต์ตามด้วยเครื่องหมายคำพูดคู่ ฯลฯ)
objRegEx.Pattern = lCase(strAttribute) & =[0-9a-zA-Z]*
'ละเว้น case
objRegEx.IgnoreCase = True
'การค้นหาทั่วโลก
objRegEx.Global = True
'ดำเนินการค้นหา
Set Matches = objRegEx.Execute(strTag)
'หากมีรายการที่ตรงกัน จากนั้นส่งคืนค่า ไม่เช่นนั้นจะส่งคืนค่า Null
หาก Matches.Count > 0 แล้ว
GetAttribute = Split(Matches(0).Value,)(1)
else
GetAttribute =
end if
'Destroy the object
set Matches = none
set objRegEx = none
end function
OK แล้วจะแยกวิเคราะห์เนื้อหาเช่น <tagloop:> ด้านบนได้อย่างไร
ต่อไปนี้เป็นฟังก์ชัน:
คัดลอกโค้ดดังนี้:'[ฟังก์ชัน] แยกวิเคราะห์และแทนที่ฟังก์ชันเนื้อหาแท็กเทมเพลตที่เกี่ยวข้อง
ParseTag(ByVal strTag)
dim arrResult, ClassName, arrAttributes, sTemp, i, objClass
'ถ้าแท็กว่างเปล่า ออก ฟังก์ชัน
ถ้า len(strTag) = 0 จากนั้นออกจากฟังก์ชัน
'แยกการจับคู่บนอักขระโคลอน (:)
arrResult = Split(strTag, :)
'แยกวินาที รายการของอาร์เรย์ผลลัพธ์บนอักขระช่องว่าง เพื่อ
'ดึงชื่อของคลาส
ClassName = Split(arrResult(1), )(0)
'ใช้คำสั่ง select case เพื่อพิจารณาว่าคลาสใดที่เรากำลังติดต่อกับ
'และด้วยเหตุนี้ คุณสมบัติที่จะเติม ฯลฯ
เลือก case uCase(ClassName)
'มันเป็นคลาสลูป ดังนั้นให้ยกตัวอย่างหนึ่งและรับคุณสมบัติ
case LOOP
set objClass = new LOOP_Class
LOOP.Channelid= GetAttribute(channelid, strTag)
LOOP.Pagesize= GetAttribute(pagesize, strTag)
LOOP.title = GetAttribute(title, strTag)
LOOP.type = GetAttribute(Type, strTag)
ParseTag = LOOP.column (GetAttribute(คอลัมน์, strTag) จริง )
'ทำลาย
ชุดอ็อบเจ็กต์คลาสของเรา objClass = ไม่มีอะไร
สิ้นสุด เลือก
สิ้นสุด
การวนซ้ำเหนือ
ฟังก์ชันนั้น
เป็นคลาส ดังนั้นฉันจะไม่ลงรายละเอียดที่นี่เพราะไม่ได้คุยกันนานและไม่คุ้นเคย 555
สรุปว่า ด้วยฟังก์ชันข้างต้น คุณสามารถเขียนโปรแกรมเทมเพลตที่เกี่ยวข้องได้อย่างรวดเร็ว หวังว่ามันจะช่วยได้