في تطوير نظام المحتوى، يتضمن عملية فصل المحتوى والشكل، أي عملية تخصيص قوالب الصفحات بناءً على المستخدمين ثم استبدالها بالمحتوى ذي الصلة. وهذا يختلف جوهريًا عن العديد من أنظمة إدارة محتوى الموقع بالكامل بالخارج. هناك العديد من أنظمة إدارة المحتوى التي تبدو متشابهة مهما كان عدد الأشخاص الذين يستخدمونها، لأن الصفحات لا يمكن تخصيصها ولا يمكن للمستخدمين الذين لا يعرفون البرمجة تعديلها. لا أعتقد أن موقعًا كهذا، والذي يملأ فقط بعض المعلمات ويخرج، له مستقبل كبير. لأن الجميع يبدون متشابهين ويعرف الجميع كيفية ملء هذه المعلمات.
على سبيل المثال، إذا نظرت إلى المواقع التالية، هل تعتقد أنها مجموعة من البرامج؟
www.blueidea.com
http://pages.blueidea.com
http://digi.blueidea.com
http://dsp.blueidea.com
http://www.dcshooter.com
إذا أخبرتك أنها جميعها عبارة عن برنامج، وأن مشرفي المواقع المعنيين يقومون فقط بتصميم قوالب مختلفة لعرض الصفحة، فستجد التميز في هذا النظام.
بالطبع، نظرًا للطبيعة المتطورة لهذا النظام، فهو غير متاح حاليًا للمستخدمين العاديين، لذلك قمت بتطوير نظام إدارة المحتوى الخاص بي، نظام إدارة محتوى Kiss.
لتزويد المستخدمين بنظام القوالب، أولاً وقبل كل شيء، يجب أن يكون هناك نظام وضع علامات بسيط وسهل الفهم. ألق نظرة على الكود التالي لمعرفة ما إذا كان من السهل فهمه:
<tag:loopchannelid=1 pagesize=10 />channelid هو معرف عمود في قاعدة البيانات
حجم الصفحة هو عدد المستندات المطلوب إدراجها
العنوان هو طول العنوان
type هو نوع عمود قائمة، ويتم تعيين NEW هنا على أحدث مستند
العمود هو عدد الأعمدة التي سيتم عرضها
المقدمة أعلاه هي لنشرها للأشخاص الذين لا يعرفون البرمجة أو لا يفهمون نظام المحتوى، وللإعلان عن نظام إدارة المحتوى الخاص بي، وما أريد قوله هو، وحدة قالب نظام إدارة المحتوى التي يستخدمها Blue موقع مثالي، أقوى بكثير من موقعي.
الآن حان دور المبرمج، ولا يحتاج الآخرون إلى النظر إلى الأسفل.
فكيف نقرأ قيمهم؟
الوظيفة التالية هي الأخيرة ويتم استخدامها لتحليل محتويات جميع القوالب
انسخ الكود كما يلي:'[وظيفة] علامة قالب مخصص
وظيفة ProcessCustomTags(ByVal sContent)
Dim objRegEx, Match, Matches
'إنشاء تعبير عادي
Set objRegEx = New RegExp
'Find content
objRegEx.Pattern = <tag:.*/>
' Ignore حالة
objRegEx.IgnoreCase = True
'البحث الشامل
objRegEx.Global = True
'قم بتشغيل البحث مقابل سلسلة المحتوى التي تم تمريرها إلينا
Set Matches = objRegEx.Execute(sContent)
'حلقة من خلال التطابقات التي تم العثور عليها
لكل تطابق في التطابقات
' استبدل كل تطابق بـ HTML المناسب من وظيفة ParseTag
sContent = Replace(sContent, Match.Value, ParseTag (Match.Value))
التالي
'تدمير مجموعة الكائنات
Matches = لا شيء
محدد objRegEx = لا شيء
'قيمة الإرجاع
ProcessCustomTags = sContent
End
تستخدمالوظيفة
التعبيرات العادية في الكود أعلاه. إذا كنت لا تعرف الكثير عنها، فيرجى الرجوع إلى المعلومات ذات الصلة، ولن أخوض في التفاصيل هنا.
إذن، كيفية الحصول على قيمة المعلمة، فهي أيضًا وظيفة:
انسخ الكود في مربع نسخ الكود كما يلي:"[وظيفة] احصل على اسم المعلمة لعلامة القالب
" مثل: <tag:loopchannelid=1 pagesize= 10 />function GetAttribute(ByVal strAttribute, ByVal strTag)
Dim objRegEx, Matches
'إنشاء تعبير عادي
Set objRegEx = New RegExp
'ابحث عن المحتوى (اسم السمة متبوعًا بعلامات اقتباس مزدوجة وما إلى ذلك)
objRegEx.Pattern = lCase(strAttribute) & =[0-9a-zA-Z]*
'تجاهل الحالة
objRegEx.IgnoreCase = True
'البحث الشامل
objRegEx.Global = True
'تنفيذ
مجموعة التطابقات للبحث = objRegEx.Execute(strTag)
'إذا كان هناك تطابق ثم قم بإرجاع قيمة، وإلا قم بإرجاع قيمة فارغة
إذا كان Matches.Count > 0 ثم
GetAttribute = Split(Matches(0).Value,)(1)
else
GetAttribute =
end if
'Destroy the object
set Matches = Nothing
set objRegEx = لا شيء
نهاية الوظيفة
حسنًا، فكيف يمكن تحليل المحتوى مثل <tagloop:> أعلاه؟
ما يلي هو وظيفة:
انسخ الكود كما يلي:'[وظيفة] تحليل واستبدال
وظيفة محتوى علامة القالب المقابلة ParseTag(ByVal strTag)
dim arrResult, ClassName, arrAttributes, sTemp, i, objClass
'إذا كانت العلامة فارغة، فاخرج الدالة
إذا كانت len(strTag) = 0 ثم قم بالخروج من الدالة
'قم بتقسيم التطابق على حرف النقطتين (:)
arrResult = Split(strTag, :)
'قم بتقسيم الثانية عنصر المصفوفة الناتجة على حرف المسافة، من أجل
"استرداد اسم الفئة
ClassName = Split(arrResult(1), )(0)
" استخدم عبارة حالة تحديد لتحديد الفئة التي نتعامل معها
"وبالتالي الخصائص التي سيتم ملؤها وما إلى ذلك
حدد الحالة 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(column, strTag)، صحيح )
'قم بتدمير
مجموعة كائنات الفصل الخاصة بنا objClass = لا شيء
نهاية حدد
نهاية
الحلقة الموجودة فوق
الدالة
هي فئة، لذلك لن أخوض في التفاصيل هنا.لأنني لم أتحدث منذ فترة طويلة ولم أعتد على ذلك، هههه.
الخلاصة، من خلال الوظيفة المذكورة أعلاه، يمكنك كتابة برامج القوالب ذات الصلة بسرعة. نأمل أن يساعد.