콘텐츠 시스템 개발에서는 콘텐츠와 형태를 분리하는 과정, 즉 사용자 기반으로 페이지 템플릿을 커스터마이징한 후 관련 콘텐츠로 대체하는 과정을 포함한다. 이는 외부의 많은 전체 사이트 콘텐츠 관리 시스템과 근본적으로 다릅니다. 페이지를 사용자 정의할 수 없고 프로그래밍을 모르는 사용자가 수정할 수 없기 때문에 아무리 많은 사람이 사용해도 똑같아 보이는 콘텐츠 관리 시스템이 많이 있습니다. 몇 가지 매개변수만 입력하고 나오는 그런 웹사이트에는 미래가 별로 없을 것 같습니다. 모든 사람이 똑같아 보이고 모든 사람이 해당 매개변수를 입력하는 방법을 알고 있기 때문입니다.
예를 들어, 다음 사이트를 보면 프로그램 집합이라고 생각하시나요?
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입니다.
페이지 크기는 나열할 문서 수입니다.
제목은 제목의 길이입니다.
type은 목록 열 유형이고 여기서 NEW는 최신 문서로 설정됩니다.
열은 표시할 열 수입니다.
위의 소개는 프로그래밍을 모르거나 컨텐츠 시스템을 이해하지 못하는 사람들을 위해 대중화시키고 저의 컨텐츠 관리 시스템을 광고하기 위한 것인데 제가 말씀드리고 싶은 것은 블루에서 사용하는 컨텐츠 관리 시스템 템플릿 모듈입니다. 이상적인 사이트, 내 것보다 훨씬 강합니다.
이제 프로그래머의 차례입니다. 다른 사람들은 내려다볼 필요가 없습니다.
그렇다면 그들의 가치를 어떻게 읽을 수 있을까요?
다음 함수는 마지막 함수이며 모든 템플릿의 내용을 구문 분석하는 데 사용됩니다.
다음과 같이 코드를 복사합니다.'[Function] 사용자 정의 템플릿 태그
Function ProcessCustomTags(ByVal sContent)
Dim objRegEx, Match, Matches
'정규 표현식 만들기
Set objRegEx = New RegExp
'Find content
objRegEx.Pattern = <tag:.*/>
' Ignore case
objRegEx.IgnoreCase = True
'전역 검색
objRegEx.Global = True
'다음에 대해 검색을 실행합니다. 우리가 전달한 콘텐츠 문자열
Set Matches = objRegEx.Execute(sContent)
'발견된 일치 항목을 반복합니다.
For Each Match in Matches
'각 일치 항목을 ParseTag 함수의 적절한 HTML로 바꿉니다.
sContent = 바꾸기(sContent, Match.Value, ParseTag) (Match.Value))
Next
'객체
세트를 삭제합니다 Matches = 아무것도 설정하지 않음
objRegEx = 아무것도 설정하지 않음
'반환 값
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이면
GetAttribute =
인 경우 null 값을 반환합니다.Split(Matches(0).Value,)(1)
else
GetAttribute =
end if
'객체
세트 파괴 Matches = 아무것도
설정하지 않음 objRegEx = 아무것도
end function
OK, 그러면 위의 <tagloop:>와 같은 콘텐츠를 어떻게 구문 분석합니까?
다음은 함수입니다.
다음과 같이 코드를 복사합니다.'[Function] 해당 템플릿 태그 내용을 구문 분석하고 교체
function ParseTag(ByVal strTag)
희미 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(column, strTag), true )
'클래스 객체
세트를 삭제합니다. objClass = 아무것도 없음
end select
end 함수
위의 루프는
클래스이므로 여기서는 자세히 설명하지 않겠습니다.오랫동안 말을 안 해서 익숙하지 않아서요, 하하.
결론적으로, 위의 기능을 통해 관련 템플릿 프로그램을 빠르게 작성할 수 있다. 도움이 되길 바랍니다.