يعد محرك القالب هذا أكثر ملاءمة حيث يتم دمجه مع رمز النسخ كما يلي:
قالب الصف
خاص c_Char، c_Path، c_FileName، c_Content، c_PageUrl، c_CurrentPage، c_PageStr، ReplacePageStr
اسم العلامة الخاصة
'************************************************************************************************************************************
"ضبط الترميز."
'************************************************************************************************************************************
الملكية العامة دع شار (شارع ByVal)
c_Char = Str
نهاية الملكية
الملكية العامة احصل على شار
شار = c_Char
نهاية الملكية
'************************************************************************************************************************************
"تعيين مسار مجلد القالب."
'************************************************************************************************************************************
مسار الملكية العامة (شارع ByVal)
c_Path = شارع
نهاية الملكية
الملكية العامة احصل على المسار
المسار = c_Path
نهاية الملكية
'************************************************************************************************************************************
'تعيين اسم ملف القالب
'************************************************************************************************************************************
اسم الملف للملكية العامة (ByVal Str)
c_FileName = Str
نهاية الملكية
الملكية العامة احصل على اسم الملف
اسم الملف = c_FileName
نهاية الملكية
'************************************************************************************************************************************
'احصل على المسار المحدد لملف القالب
'************************************************************************************************************************************
الملكية العامة احصل على FilePath
إذا كان Len(Path)> 0 فإن المسار = استبدال (Path, /, /)
إذا كان اليمين (المسار، 1) <> / ثم المسار = المسار & /
FilePath = المسار واسم الملف
نهاية الملكية
'************************************************************************************************************************************
"تعيين عنوان URL للترحيل."
'************************************************************************************************************************************
الملكية العامة تسمح لـ PageUrl(ByVal Str)
c_PageUrl = Str
نهاية الملكية
الملكية العامة احصل على PageUrl
PageUrl = c_PageUrl
نهاية الملكية
'************************************************************************************************************************************
"تعيين ترحيل الصفحة الحالية."
'************************************************************************************************************************************
الملكية العامة تسمح للصفحة الحالية (ByVal Str)
c_CurrentPage = Str
نهاية الملكية
الملكية العامة احصل على الصفحة الحالية
الصفحة الحالية = c_CurrentPage
نهاية الملكية
'************************************************************************************************************************************
"محتوى الإخراج."
'************************************************************************************************************************************
الملكية العامة تحصل على فلوش
الاستجابة.الكتابة(c_Content)
نهاية الملكية
'************************************************************************************************************************************
""تهيئة الفصل""
'************************************************************************************************************************************
فئة فرعية خاصة_تهيئة
TagName = pjblog
c_Char = UTF-8
ReplacePageStr = الصفيف (،)
نهاية الفرعية
'************************************************************************************************************************************
'تصفية الأحرف المتضاربة
'************************************************************************************************************************************
وظيفة خاصة doQuote (ByVal Str)
doQuote = استبدال (Str، Chr(34)، )
وظيفة النهاية
'************************************************************************************************************************************
'إنهاء الفصل
'************************************************************************************************************************************
فئة فرعية خاصة_إنهاء
نهاية الفرعية
'************************************************************************************************************************************
"طريقة تحميل الملف."
'************************************************************************************************************************************
وظيفة خاصة LoadFromFile (ByVal cPath)
كائن خافت
تعيين obj = Server.CreateObject(ADODB.Stream)
مع كائن
.النوع = 2
الوضع = 3
.يفتح
.تشارسيت = شار
.الموضع = .الحجم
.LoadFromFile Server.MapPath(cPath)
LoadFromFile = .ReadText
.يغلق
نهاية مع
تعيين obj = لا شيء
وظيفة النهاية
'******************************************************************************************************************************************************************
'احصل على الكائن المطابق العادي
'******************************************************************************************************************************************************************
الوظيفة العامة GetMatch (ByVal Str، ByVal Rex)
ديم ريج، ماج
تعيين Reg = RegExp جديد
مع ريج
.تجاهل الحالة = صحيح
.العالمي = صحيح
.النمط = ريكس
تعيين ماج = .Execute(Str)
إذا Mag.Count > 0 ثم
قم بتعيين GetMatch = Mag
آخر
تعيين GetMatch = Server.CreateObject(Scripting.Dictionary)
نهاية إذا
نهاية مع
تعيين ريج = لا شيء
وظيفة النهاية
'************************************************************************************************************************************
"افتح المستند."
'************************************************************************************************************************************
فرعي عام مفتوح
c_Content = LoadFromFile(FilePath)
نهاية الفرعية
'************************************************************************************************************************************
'التنفيذ المخزن
'************************************************************************************************************************************
المخزن المؤقت الفرعي العام
c_Content = GridView(c_Content)
استدعاء الدالة التنفيذية
نهاية الفرعية
'************************************************************************************************************************************
"عرض الشبكة."
'************************************************************************************************************************************
وظيفة خاصة GridView (ByVal o_Content)
مباريات خافتة، SubMatches، نص فرعي
سمة خافتة، المحتوى
تعيين التطابقات = GetMatch(o_Content, /< & TagName & /:(/d+?)(.+?)/>([/s/S]+?)<// & TagName & /:/1/>)
إذا Matches.Count > 0 ثم
لكل SubMatches في المباريات
السمة = SubMatches.SubMatches(1) ' kocms
المحتوى = SubMatches.SubMatches(2) ' <Columns>...</Columns>
SubText = Process(Attribute, Content) 'إرجاع نتائج كافة عمليات تنفيذ العملية
o_Content = Replace(o_Content, SubMatches.value, < & SubText(2) & SubText(0) & > & SubText(1) & </ & SubText(2) & >, 1, -1, 1) 'استبدال متغير التسمية
التالي
نهاية إذا
تعيين التطابقات = لا شيء
إذا كان Len(ReplacePageStr(0)) > 0، فحدد ما إذا كان متغير التسمية له قيمة، واستبدله إذا كان الأمر كذلك.
o_Content = Replace(o_Content, ReplacePageStr(0), ReplacePageStr(1), 1, -1, 1)
ReplacePageStr = Array(, ) 'امسح متغير المصفوفة بعد الاستبدال
نهاية إذا
GridView = o_Content
وظيفة النهاية
'************************************************************************************************************************************
" تحديد الصفات
'************************************************************************************************************************************
عملية الوظيفة الخاصة (سمة ByVal، محتوى ByVal)
مباريات خافتة، SubMatches، النص
خافت MatchTag، MatchContent
مصدر بيانات خافت، الاسم، العنصر، الصفحة، المعرف
مصدر البيانات =: الاسم =: العنصر =: الصفحة = 0: المعرف =
تعيين التطابقات = GetMatch(Attribute, /s(.+?)/=/(.+?)/)
إذا Matches.Count > 0 ثم
لكل SubMatches في المباريات
MatchTag = SubMatches.SubMatches(0) ' احصل على اسم السمة
MatchContent = SubMatches.SubMatches(1) 'احصل على قيمة السمة
إذا كان Lcase(MatchTag) = name ثم Name = MatchContent 'احصل على قيمة سمة الاسم
إذا كان Lcase(MatchTag) = مصدر البيانات، فإن مصدر البيانات = MatchContent' احصل على قيمة سمة مصدر البيانات
إذا كان Lcase(MatchTag) = عنصر، فإن العنصر = MatchContent 'احصل على قيمة سمة العنصر
إذا كان Lcase(MatchTag) = page ثم page = MatchContent 'احصل على قيمة سمة الصفحة
إذا كان Lcase(MatchTag) = id، فإن id = MatchContent 'احصل على قيمة سمة المعرف
التالي
إذا كان Len(Name)> 0 وLen(MatchContent)> 0 إذن
Text = Analysis(datasource, Name, Content, page, id) 'إجراء تحليل الخصائص
إذا كان Len(مصدر البيانات) > 0، فإن السمة = استبدال (السمة، مصدر البيانات= & مصدر البيانات &،)
إذا كانت الصفحة > 0، فإن السمة = استبدال (السمة، الصفحة= & الصفحة &،)
السمة = استبدال (السمة، الاسم = & الاسم &،، 1، -1، 1)
السمة = استبدال (السمة، العنصر = & العنصر &،، 1، -1، 1)
العملية = الصفيف (السمة، النص، العنصر)
آخر
العملية = الصفيف (السمة،، div)
نهاية إذا
آخر
العملية = الصفيف (السمة،، div)
نهاية إذا
تعيين التطابقات = لا شيء
وظيفة النهاية
'************************************************************************************************************************************
"تحليل
'************************************************************************************************************************************
تحليل الوظيفة الخاصة (معرف ByVal، اسم ByVal، محتوى ByVal، صفحة ByVal، معرف صفحة ByVal)
بيانات خافتة
حدد الحالة Lcase(Name) "حدد مصدر البيانات".
بيانات حلقة الحالة = DataBind(id، Content، page، PageID)
حالة البيانات = DataFor(id، Content، page، PageID)
إنهاء التحديد
التحليل=البيانات
وظيفة النهاية
'************************************************************************************************************************************
'ربط مصدر البيانات
'************************************************************************************************************************************
DataBind للوظيفة الخاصة (معرف ByVal، محتوى ByVal، صفحة ByVal، معرف صفحة ByVal)
نص خافت، مباريات، SubMatches، نص فرعي
تنفيذ النص = & المعرف & (1) "تحميل مصدر البيانات".
تعيين التطابقات = GetMatch(Content, /<Columns/>([/s/S]+)/<//Columns/>)
إذا Matches.Count > 0 ثم
لكل SubMatches في المباريات
SubText = ItemTemplate(SubMatches.SubMatches(0), Text, page, PageID)' إجراء استبدال الوحدة النمطية
المحتوى = استبدال (المحتوى، SubMatches.value، النص الفرعي، 1، -1، 1)
التالي
DataBind = Content
آخر
DataBind=
نهاية إذا
تعيين التطابقات = لا شيء
وظيفة النهاية
'************************************************************************************************************************************
'مطابقة مثيل القالب
'************************************************************************************************************************************
قالب عنصر الوظيفة الخاصة (ByVal TextTag، نص ByVal، صفحة ByVal، ByVal PageID)
المباريات الخافتة، SubMatch، SubMatchText
ديم SecMatch، SecSubMatch
خافت أنا، TempText
خافت TextLen، TextLeft، TextRight
تعيين التطابقات = GetMatch(TextTag, /<ItemTemplate/>([/s/S]+)/<//ItemTemplate/>)
إذا Matches.Count > 0 ثم
لكل SubMatches في المباريات
SubMatchText = SubMatches.SubMatches(0)
'--------------------------------------------
'بدء تداخل الحلقة
'--------------------------------------------
SubMatchText = GridView(SubMatchText)
'--------------------------------------------
'نهاية تداخل الحلقة
'--------------------------------------------
إذا كان UBound(Text, 1) = 0 إذن
TempText=
آخر
TempText=
'-----------------------------------------------------------------
'ابدأ الترحيل
'-----------------------------------------------------------------
إذا كانت Len(page) > 0 والصفحة > 0 إذن
إذا كانت Len(CurrentPage) = 0 أو CurrentPage = 0، فإن CurrentPage = 1
TextLen = UBound(نص، 2)
TextLeft = (CurrentPage - 1) * page
TextRight = الصفحة الحالية * الصفحة - 1
إذا كان TextLeft <0، فإن TextLeft = 0
إذا كان TextRight> TextLen ثم TextRight = TextLen
c_PageStr = MultiPage(TextLen + 1, page, CurrentPage, PageUrl, float:right, , False)
إذا Int(Len(c_PageStr))> 0 ثم
ReplacePageStr = Array(<page: & Trim(PageID) & />, c_PageStr)
آخر
ReplacePageStr = Array(<page: & Trim(PageID) & />, )
نهاية إذا
آخر
النص الأيسر = 0
TextRight = UBound(نص، 2)
نهاية إذا
لأني = TextLeft إلى TextRight
TempText = TempText & ItemReSec(i, SubMatchText, Text) 'تحميل محتوى القالب
التالي
نهاية إذا
التالي
ItemTemplate = TempText
آخر
قالب العنصر =
نهاية إذا
تعيين التطابقات = لا شيء
وظيفة النهاية
'************************************************************************************************************************************
"استبدال سلسلة القالب."
'************************************************************************************************************************************
وظيفة خاصة ItemReSec (ByVal i، ByVal Text، ByVal Arrays)
مباريات خافتة، مباريات فرعية
تعيين التطابقات = GetMatch(Text, /$(/d+?))
إذا Matches.Count > 0 ثم
لكل SubMatches في المباريات
Text = Replace(Text, SubMatches.value, doQuote(Arrays(SubMatches.SubMatches(0), i))), 1, -1, 1) 'إجراء الاستبدال
التالي
ItemReSec = نص
آخر
ItemReSec=
نهاية إذا
تعيين التطابقات = لا شيء
وظيفة النهاية
'************************************************************************************************************************************
"دالة متغيرة عالمية."
'************************************************************************************************************************************
وظيفة التنفيذ الفرعية الخاصة
مباريات خافتة، SubMatches، نص، ExeText
تعيين التطابقات = GetMatch(c_Content, /<function/:([0-9a-zA-Z_/.]*?)/((.*?)/(.+?)/(.*?)/)// />)
إذا Matches.Count > 0 ثم
لكل SubMatches في المباريات
النص = SubMatches.SubMatches(0) & ( & SubMatches.SubMatches(1) & & SubMatches.SubMatches(2) & & SubMatches.SubMatches(3) & )
تنفيذ ExeText= & Text
c_Content = Replace(c_Content, SubMatches.value, ExeText, 1, -1, 1)
التالي
نهاية إذا
تعيين التطابقات = لا شيء
نهاية الفرعية
'************************************************************************************************************************************
' الاستبدال العادي للتسميات العالمية
'************************************************************************************************************************************
مجموعات السماح للملكية العامة (ByVal t، ByVal s)
خافت SetMatch، Bstr، SetSubMatch
Set 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 = Replace(c_Content, SetSubMatch.Value, Bstr, 1, -1, 1)
التالي
نهاية إذا
تعيين SetMatch = لا شيء
Set SetMatch = GetMatch(c_Content, (/<Set/: & t & ///>))
إذا SetMatch.Count > 0 ثم
لكل SetSubMatch في SetMatch
c_Content = استبدال(c_Content, SetSubMatch.Value, s, 1, -1, 1)
التالي
نهاية إذا
تعيين SetMatch = لا شيء
نهاية الملكية
نهاية الفصل