コンテンツ システム開発では、コンテンツとフォームを分離するプロセス、つまり、ユーザーに基づいてページ テンプレートをカスタマイズし、関連するコンテンツに置き換えるプロセスが含まれます。これは、外部の多くのサイト全体のコンテンツ管理システムとは根本的に異なります。ページをカスタマイズできず、プログラミングを知らないユーザーはページを変更できないため、何人が使用しても同じように見えるコンテンツ管理システムがたくさんあります。このような、いくつかのパラメータを入力しただけで出てくるウェブサイトにはあまり将来性があるとは思えません。なぜなら、誰もが同じように見え、誰もがこれらのパラメータの入力方法を知っているからです。
たとえば、次のサイトを見た場合、これらは一連のプログラムだと思いますか?
www.blueidea.com
http://pages.blueidea.com
http://digi.blueidea.com
http://dsp.blueidea.com
http://www.dcshooter.com
これらはすべてプログラムであり、関連するウェブマスターはページを表示するためにさまざまなテンプレートを設計するだけであると言えば、このシステムの優秀さがわかるでしょう。
もちろん、このシステムはハイエンドであるため、現在は一般ユーザーが利用できないため、独自のコンテンツ管理システム、kiss コンテンツ管理システムを開発しました。
テンプレートシステムをユーザーに提供するには、まずシンプルでわかりやすいマーキングシステムが必要です。次のコードを見て、理解しやすいかどうかを確認してください。
<tag:loop channelid=1 pagesize=10 />channelid はデータベース内の列の ID です。
ページサイズはリストするドキュメントの数です
title はタイトルの長さです
type はリスト列タイプで、ここでの NEW は最新のドキュメントに設定されます
列は表示する列の数です
上記の紹介は、プログラミングを知らない人やコンテンツ システムを理解していない人にそれを広めることと、私のコンテンツ管理システムを宣伝することです。そして、私が言いたいのは、Blue が使用するコンテンツ管理システム テンプレート モジュールについてです。理想的なサイト、私よりもはるかに強力です。
次はプログラマーの番です。他の人は下を見る必要はありません。
では、それらの値をどうやって読み取るのでしょうか?
次の関数は最後の関数であり、すべてのテンプレートの内容を解析するために使用されます。
次のようにコードをコピーします。'[関数] カスタム テンプレート タグ
Function ProcessCustomTags(ByVal sContent)
Dim objRegEx, Match, Matches
'正規表現を作成
Set objRegEx = New RegExp
'コンテンツの検索
objRegEx.Pattern = <tag:.*/>
' Ignore case
objRegEx.IgnoreCase = True
'グローバル検索
objRegEx.Global = True
'渡されたコンテンツ文字列
Set Matches = objRegEx.Execute(sContent)
'見つかった一致をループします
Matches の各一致について
'各一致を ParseTag 関数の適切な HTML に置き換えます
sContent = Replace(sContent, Match.Value, ParseTag (Match.Value))
Next
'オブジェクトを破棄
set Matches = nothing
set objRegEx = nothing
'戻り値
ProcessCustomTags = sContent
End
上記のコードでは関数で
正規表現が使用されています。詳しくは説明しませんので、関連情報を参照してください。
パラメータ値を取得する方法も関数です。
次のようにコード コピー ボックスにコードをコピーします:'[関数] テンプレート タグのパラメータ名を取得します
。' 例: <tag:loop channelid=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
'検索を実行
Set Matches = objRegEx.Execute(strTag)
'一致する場合次に、値を返します。それ以外の場合は、
Matches.Count > 0 の場合は
null 値を返し、GetAttribute = Split(Matches(0).Value,)(1)
else
GetAttribute =
end if
'オブジェクトを破棄
set Matches = nothing
set objRegEx = nothing
end function
OK、では、上記の <tagloop:> のようなコンテンツを解析するにはどうすればよいでしょうか?
以下は関数です:
次のようにコードをコピーします:'[関数] 対応するテンプレート タグの内容を解析して置換します
function ParseTag(ByVal strTag)
dim arrResult, ClassName, arrAttributes, sTemp, i, objClass
' タグが空の場合は終了します関数
if len(strTag) = 0 then exit function
'コロン文字 (:) で一致を分割
arrResult = Split(strTag, :)
'2 番目の文字を分割結果の配列の空白文字の項目を使用して、「
クラスの名前を取得します。
ClassName = Split(arrResult(1), )(0)
」「select case ステートメントを使用して、どのクラスを扱っているかを調べます
。」したがって、どのプロパティを設定するかなど
select 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(column, strTag), true )
'クラスオブジェクトを破棄します
set objClass = nothing
end select
end関数
の上のループ
はクラスなので、ここでは詳しく説明しません。久しぶりに話すので慣れていないので(笑)。
結論として、上記の機能を使用すると、関連するテンプレート プログラムをすばやく作成できます。お役に立てば幸いです。