phpsource/템플릿2006. 9. 20. 11:23
written: Jan 28 2002
last modified: Sep 20 2006
여기서 설명되는 웹문서 리디렉션 기능은 공개되는 1.0.0 버전에 포함되어 있기는 하지만 확정된 기능이 아니라 여러분의 의견을 수렴할 목적으로 미리 공개되는 제안서(proposal)입니다. 따라서 향후 업그레이드할 때 아래서 설명한 내용과 다르게 동작할 수 있으니 주의하시기 바랍니다.
링크로 연결된 HTML 문서
나모 웹에디터 등과 같은 HTML 편집기로 작성된 복수개의 HTML 문서의 하이퍼링크 구조를 PHP 문서의 URL로 리디렉션해주는 기능입니다.
HTML 편집기를 이용하여 아래와 같은 서로 연결된 3개의 템플릿 파일을 작성한 경우를 예를 들어 설명하겠습니다.
[code html;gutter:false] <!-- filename : a.html --> <P><H3>{TITLE}</H3></P> <P>a.html</P> <P><A href="b.html">b.html</A></P> <P><A href="c.html">c.html</A></P> [/code]
[code html;gutter:false] <!-- filename : b.html --> <P><H3>{TITLE}</H3></P> <P><A href="a.html">a.html</A></P> <P>b.html</P> <P><A href="c.html">c.html</A></P> [/code]
[code html;gutter:false] <!-- filename : c.html --> <P><H3>{TITLE}</H3></P> <P><A href="a.html">a.html</A></P> <P><A href="b.html">b.html</A></P> <P>c.html</P> [/code]
하이퍼링크로 연결된 세 개의 HTML 문서 a.html, b.html, c.html을 나모와 같은 웹에디터로 편집하고 링크 여부를 확인할 때는 아래와 같이 문제없이 잘 동작합니다.
< a.html >
< b.html >
< c.html >
 그러나 웹에디터를 이용하여 작성된 위의 세 개의 템플릿 파일에 포함된 템플릿 변수(위의 예에서는 {TITLE})를 PHP 스크립트와 후키템플릿으로 처리하기 위해 몇가지 수고를 하여야 합니다.
이 때 템플릿 파일 a.html, b.html, c.html은 아래와 같이 index.php 문서가 있는 곳의 하위디렉토리 "templates"에 있다고 가정합니다.
-+- index.php
+- tempaltes - a.html, b.html, c.html
그러면 템플릿 파일을 처리하기 위한 PHP 소스는 대략 아래와 같을 것입니다.
[code php;gutter:false] <?php /** * filename : index.php * * 현재 처리해야 할 템플릿 파일은 GET 방식으로 아래와 같이 넘어온다고 가정한다. * * a.html 문서를 보여줄 때 : index.php?template=a.html * b.html 문서를 보여줄 때 : index.php?template=b.html * c.html 문서를 보여줄 때 : index.php?template=c.html */ if (empty($template)) { $template = 'a.html'; } include_once('./class/template/class.hTemplate.php'"); $tpl = new hTemplate('./templates'); $tpl->define('main', $template); $tpl->assign(array( 'TITLE' => '*$template*', 'MAIN' => 'main' )); $tpl->output('MAIN'); ?> [/code]
그리고 이와 같은 PHP 소스에서 템플릿 파일 a.html, b.html, c.html을 정상적으로 처리하기 위해서는 각 템플릿 파일이 아래와 같이 수정되어야 합니다.
[code html;gutter:false] <!-- filename : a.html --> <P><H3>{TITLE}</H3></P> <P>a.html</P> <P><A href="{_SERVER.PHP_SELF}?template=b.html">b.html</A></P> <P><A href="{_SERVER.PHP_SELF}?template=c.html">c.html</A></P> [/code]
[code html;gutter:false] <!-- filename : b.html --> <P><H3>{TITLE}</H3></P> <P><A href="{_SERVER.PHP_SELF}?template=a.html">a.html</A></P> <P>b.html</P> <P><A href="{_SERVER.PHP_SELF}?template=c.html">c.html</A></P> [/code]
[code html;gutter:false] <!-- filename : c.html --> <P><H3>{TITLE}</H3></P> <P><A href="{_SERVER.PHP_SELF}?template=a.html">a.html</A></P> <P><A href="{_SERVER.PHP_SELF}?template=b.html">b.html</A></P> <P>c.html</P> [/code]
PHP 소스와 a.html, b.html, c.html을 위와 같이 다 작성한 후 index.php를 실행하게 되면 아래와 같이 링크로 연결된 템플릿 문서를 정상적으로 실행할 수 있습니다.
< a.html >
< b.html >
< c.html >
웹문서 리디렉션
HTML 문서에서 링크로 연결된 부분을 모두 찾아 일일이 수정하지 않으려면 HTML 문서를 작성할 때 상대 경로가 아닌 절대 경로를 사용하는 등의 조치를 취해야 합니다.
그러나 웹문서 리디렉션 기능을 이용하면 상대 경로로 작성하더라도 링크로 연결된 부분에 지정된 웹문서를 현재 실행중이 PHP 소스로 GET 방식의 변수 $_GET['template']에 담아 넘겨줍니다.
즉 위에서 설명한 방법을 자동으로 수행하는 것이 웹문서 리디렉션 기능입니다. 이 기능을 이용하려면 몇가지 주의해야 할 사항들이 있습니다. 확장자가 "html"인 웹문서를 상대경로로 지정하게 되면 무조건 이 기능이 수행됩니다. 따라서 기존에 홈페이지 문서가 이 기능으로 말미암아 정삭적으로 동작하지 않는 경우가 많이 있을 것입니다.
만약 기존에 작성된 웹문서에서 연결된 HTML 문서를 리디렉션하지 않고 이전과 같이 직접 연결하려면 아래와 같이 조치하시기 바랍니다.
1. 연결된 HTML 문서의 확장자를 "html" 대신에 "htm"으로 변경합니다.
2. 아니면 상대 경로가 아닌 절대 경로로 변경합니다.
3. 아니면 class.hHtmlUrlRedirection.php 파일에 정의된 클래스 hHtmlUrlRedirection의 멤버 변수 $forwarding_ext에 등록된 "html" 대신에 다른 확장자를 지정하시기 바랍니다. 여기에 등록된 확장자에 대하여만 웹문서 리디렉션을 수행합니다.
만약 PHP 소스로 GET 방식의 변수명을 $_GET['template']가 아닌 다른 변수로 넘기려면 class.hHtmlUrlRedirection.php 파일에 정의된 클래스 hHtmlUrlRedirection의 멤버 변수 $forwarding_var에 등록된 "template" 대신에 다른 변수명을 지정하시기 바랍니다.
웹문서 리디렉션의 장점
웹문서 리디렉션을 이용하면 디자이너가 위지윅 웹에디터를 이용하여 작성된 일련의 HTML 문서 내에 존재하는 하이퍼링크 체인을 수정없이 PHP에서 그대로 활용할 수 있습니다.
웹문서 리디렉션의 활용
제가 이 기능을 추가하면서 염두에 둔 것은 나모 웹에디터의 사이트 관리자에 의해 작성된 "네비게이션 바"입니다. 나모 웹에디터의 "네비게이션 바"란 홈페이지 내부의 중요한 부분으로 이동할 수 있도록 만들어진 하이퍼링크들의 묶음을 말합니다.
나모 웹에디터는 사이트 관리자가 가지고 있는 홈페이지의 논리적 구조 정보를 이용하여 "네비게이션 바"를 자동으로 생성하고 유지시켜 주는 편리한 기능을 제공합니다. 홈페이지 구조가 바뀌면 "내비게이션 바"의 하이퍼링크 정보들도 자동으로 바뀌므로 아주 편리합니다.
이와같이 나모 웹에디터와 같은 HTML 에디터를 이용하여 홈페이지 구조를 임의로 변경하더라도 PHP 소스를 전혀 손대지 않고도 홈페이지 내의 하이퍼링크 체인 구조를 그대로 유지할 수 있다면 홈페이지 개발 속도를 상당히 개선할 것으로 보입니다.
처음으로 제안되는 기능이라 어설픈 면이 많이 보이지만 업그레이드해 나가면서 점점 지능화되리라 보이며 여러분이 이를 응용하는데 불편한 점이나 개선 방향에 대한 의견을 주시면 적극 검토해 나갈 생각입니다.

Posted by 방글24