Skip to content
achimnol edited this page Oct 9, 2012 · 2 revisions

텍스트큐브의 플러그인들은 텍스트큐브가 제공하는 기존의 페이지에 기능을 추가하는 것 말고도 독자적인 웹페이지를 제공할 수 있습니다. 플러그인이 정의한 고유의 URL을 통해 플러그인의 특정 함수가 실행되도록 지정하고, 그 함수에서 출력한 내용이 그 URL에 대한 웹페이지가 됩니다.

이것을 이용하면 플러그인이 따로 제공하는 팝업창 같은 것을 손쉽게 구현할 수 있습니다. 그 예로는 공식 플러그인 중 하나인 구글맵 플러그인의 지도 삽입 인터페이스를 들 수 있습니다.

고유 URL 지정하기

다음은 구글맵 플러그인의 예입니다.

...
  <binding>
    <listener event="/plugin/GMapCustomInsert/" handler="GoogleMapUI_InsertMap" scope="owner" />
    <listener event="/plugin/GMapGetLocation/" handler="GoogleMapUI_GetLocation" scope="owner" />
    <listener event="/plugin/GMapCache/" handler="GoogleMap_Cache" />
  </binding>
...

다른 플러그인 이벤트에 대한 핸들러 함수를 지정하는 것과 동일한 <listener> 태그를 사용하는데, event 속성에 이벤트 이름 대신 URL이 들어간다는 점이 다릅니다. 구분을 위해 /plugin/이 반드시 붙어있어야 하며, 이를 벗어나는 범위의 URL은 정의할 수 없습니다. 실제 접근은 "http://블로그주소/plugin/GMapCustomInsert/"와 같은 주소로 가능합니다.

  • event: 이벤트 이름 대신 /plugin/으로 시작하는 고유 URL을 지정합니다.
  • handler: 해당 URL로 접근하였을 때 수행될 index.php 내의 함수 이름을 지정합니다. 함수에서 표준출력으로 내보낸 문자열이 그대로 웹브라우저에게 HTML로 전송됩니다. 1.8보다 낮은 버전에서는 handler 속성 대신 <listener> 태그의 하위 텍스트로 함수 이름을 적어야 합니다.
  • scope: "owner" 또는 "blog"를 지정합니다. "owner"라고 지정하면 해당 URL은 관리자 권한으로만 접근할 수 있으며, 언어 설정 또한 관리자 모드의 기본 언어를 따르게 됩니다. "blog"는 접근 제한이 없고 블로그의 기본 언어를 따릅니다. 1.8.2 버전 이후부터 지원하며, 지정하지 않은 경우 호환성을 위해 기본값은 "blog"입니다.

플러그인만의 static resource 제공하기

위와 같이 플러그인만의 웹페이지를 제공하게 되면 별도의 자바스크립트, CSS, 이미지 파일들도 함께 필요할 수 있습니다. 그런 경우 간단히 해당 파일을 플러그인 디렉토리에 넣고, $pluginURL 전역 변수를 참조하여 다음과 같이 사용할 수 있습니다.

function printSomeHeader($target) {
    global $pluginURL;
    $target .= <<<EOS
<link rel="stylesheet" type="text/css" href="$pluginURL/common.css" />
<script type="text/javascript" src="$pluginURL/scripts/editor.js"></script>
EOS;
    return $target;
}
Clone this wiki locally