hTemplate 문서를 템포2 문서로 변환하기

hTemplate 1.1.1 버전(또는 그 이하)으로 작성된 문서를 템포2 0.0.1-beta2 버전으로 변환하는 방법에 대하여 설명드리고자 합니다.

※ 1.2.0 버전의 경우에도 지원이 중단된 필터기능 등만 사용하지 않았다면 변환에 별 문제가 없습니다.

hTemplate으로 작성된 문서를 템포2 버전으로 동작시키려면 우선 템플릿 문서를 템포2 템플릿 문서로 변환시켜야 하며, 그 다음에 PHP 스크립트 문서에서 hTemplate 함수를 템포2 함수로 변경시켜주어야 합니다.

문서 크기가 작다면 모를까 이것은 아마 템포2 문서를 새로 작성하는 것이 더 나을 수도 있는 쉽지 않은 작업입니다. 일일히 수작업으로 하기에는 너무 부담스러운 작업이라 쉽게 템포2 버전으로 변환할 수 있는 방법을 제시하겠습니다.

1. 템플릿 문서(파일) 변환하기

디렉토리를 기반으로 일괄적으로 변환시켜 주는 유틸리티 ”TPLconvert.exe”를 제공합니다. hTemplate으로 작성된 템플릿 파일을 템포2 템플릿 파일로 변환해주는 프로그램으로 도스 프로그램이라 불편한감이 있지만 사용하는데는 별 어려움이 없을 것입니다. 사용법은 아래와 같습니다.

  • TPLconvert 원본디렉토리 [대상디렉토리] [/EXT:확장자1[,확장자2][,확장자3]…]
  • 원본디렉토리  변환할 후키 템플릿 파일이 저장된 디렉토리를 지정합니다. 서브디렉토리도 자동으로 포함됩니다.
  • 대상디렉토리  새 템포2 템플릿 파일이 저장될 디렉토리를 지정합니다. 생략하면 원본디렉토리에 저장합니다.
  • /EXT:확장자1[,확장자2][,확장자3]…
    생략하면 확장자 html 및 htm이 지정됩니다.
    지정된 확장자를 갖는 파일명만 변환시킵니다.

TPLconvert_for_Tempo2-0.0.1-beta2

예를 들면 다음과 같이 사용할 수 있습니다.

  • TPLconvert c:\\www\\home\\templates d:\\www\\new_templates /EXT:html,htm,tpl
  • TPLconvert ./home/templates /EXT:htm

(주의) 혹시 문제가 생겨서 원본파일에 손상이 생길 수 있으므로 실행 전에 원본파일을 반드시 백업받으시기 바랍니다.

새 템포2 템플릿 파일명은 원본 후키 템플릿 파일명 앞에 “tempo.”가 붙습니다. 그렇다고 해서 여러분의 PHP 스크립트 문서의 define() 멤버에 지정된 템플릿 파일명을 변경하면 안되며, 아래에서 설명할 템포2용 hTemplate 클래스 내에서 자동으로 처리합니다.

변환된 템플릿 파일 내에 포함된 파일변수의 템플릿 파일명에도 “tempo.”가 자동으로 붙습니다.

2. PHP 스크립트 문서를 템포2에서 사용하기

hTemplate으로 작성된 PHP 스크립트 문서를 전혀 변경하지 않고 사용할 수 있도록 템포2용 hTemplate 클래스 파일(class.hTemplate.php)을 제공합니다. 기존의 hTemplate 클래스와 동일한 이름의 파일명과 클래스명을 가지고 있으며, 내용만 기존의 것과 달리 템포2 클래스를 불러다 쓰고 있습니다.

class.hTemplate.php_for_Tempo2

템포2용 hTemplate 클래스를 사용하기 위해서는 원래의 hTemplate 클래스 파일이 저장되었던 디렉토리에 템포2용 hTemplate 클래스와 템포2 클래스 파일을 복사해 넣으시면 됩니다.

※ 원래의 hTemplate 클래스 파일들을 다른 곳으로 옮겨주세요. 아울러 hTemplate과 관련된 모든 파일들(캐시, HTML파서 등등)은 더 이상 필요없습니다.

(주의) TPLconvert.exe 프로그램이 템포2 0.0.1 베타2 버전을 적용하여 제작되었기 때문에 앞서 공개된 템포2 0.0.1 베타 버전은 정상적으로 동작하지 않습니다. 0.0.1 베타2 버전을 “템포2 다운로드” 메뉴에 업로드하였으니 이것을 다운로드 받아 사용하기 바랍니다.

hTemplate 구조와 템포2 구조가 너무나 다르기 때문에 템포2용 hTemplate 클래스만으로는 해결할 수 없는 몇가지 문제점이 있습니다. 현재까지 발견된 문제점은 아래와 같은 두 가지이며, 이러한 문제점은 PHP 스크립트 문서를 직접 손보셔야 해결될 것 같습니다.

(1) 템플릿 변수 구조의 변경에 따른 문제점

hTemplate에서는 템블릿 변수가 객체의 멤버변수인 배열 공간내에 저장되지만 템포2는 PHP 전역변수를 템플릿 변수로 이용합니다. 따라서 hTemplate을 사용한 PHP 스크립트 문서에서 템플릿 변수 이름과 동일한 이름의 전역변수를 다른 용도로 사용하고 있다면 충돌이 발생합니다.

블로그밈 1.0b1에서 ”$article_id”가 이러한 경우입니다. 블로그밈에서 제공하는 PHP 스크립트 문서 내용 중에 isset($article_id)과 empty($article_id)을 isset($_REQUEST[“article_id”])과  empty($_REQUEST[“article_id”])으로 수정하여 해결하였으나 여러분들의 프로그램에서는 템플릿 변수명을 바꿔주던가 전역변수명을 바꿔주든가 등등 가장 좋은 방법을 찾아 수정해 주시면 될 것 같습니다.

(2) 인용부호로 인하여 발생하는 문제점

hTemplate에서는 인용부호가 중복되어 있는 태그를 분석하여 처리하는 반면에 템포2는 그러한 기능이 없습니다. 이러한 차이점으로 인하여 중복된 인용부호를 사용한 태그에서 문제가 발생할 수 있습니다.

블로그밈에서의 이러한 문제가 발생하는 경우를 살펴보면 아래와 같이 TreeMenu.js의 230번 라인입니다.

< TreeMenu.js(수정전) >

문제가 발생한 230번 라인을 아래와 같이 수정하여 문제점을 해결하였습니다.

< TreeMenu.js(수정후) >

답글 남기기