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

텍스트큐브는 하나의 표지를 표시할 수 있습니다. 표지는 블로그 주소를 입력했을 때 처음 나타나는 페이지로 쓰거나, 블로그 주소에 cover를 붙인 주소( http://www.example.com/cover )로 접근했을 때 출력됩니다.
사용자들은 관리자 화면의 센터-표지에서 표지 플러그인이 생성한 위젯들을 원하는 위치에 드래그 앤 드랍으로 끌어서 재배치 할 수 있습니다.

기본 개념

텍스트큐브의 표지 플러그인 위젯은 사이드바 플러그인 위젯과 굉장히 유사합니다. 몇 안되는 차이점을 들자면, 표지는 단수개만 지원한다는 점과 함께 스킨의 마크업을 통하여 기본으로 내장된 위젯을 만들 수 없다는 점이 다릅니다.
표지 플러그인 위젯도 사이드바 위젯과 마찬가지로 일반적인 플러그인의 출력과 크게 다른 점들이 있습니다. 플러그인이 생성한 위젯들은 드래그앤 드랍 (끌어놓기)를 지원합니다. 또한 플러그인 위젯의 경우 표지에서 고유한 영역을 차지하고 출력됩니다. 따라서 레이아웃을 맞추기 위하여 SKIN_head_end tag 이벤트를 통하여 고유한 css를 함께 출력하는 경우가 많습니다. 사이드바 플러그인과 마찬가지로 플러그인 환경 설정 이외의 위젯 설정 값을 소유할 수 있다는 차이점이 있습니다.

예제: Hello World

그럼 Hello World를 출력하는 표지 위젯의 예제를 보겠습니다. 사이드바 플러그인 위젯과의 미세한 차이점에 주목하세요.

  • index.xml
    <?xml version="1.0" encoding="utf-8"?>
    <plugin version="1.0">
      <title xml:lang="ko">안녕 세상아! (표지 예제)</title>
      <link>http://www.example.com/</link>
      <version>1.0</version>
      <description xml:lang="ko">여기저기에 Hello world!를 출력해보는 예제 플러그인입니다.</description>
      <license>GPL</license>
      <author xml:lang="ko" link="http://www.example.com">신정규</author>
      <safety changeData="no" exposeData="no" accessLocal="no" accessRemote="no" accessRaw="no" />
      <requirements>
        <textcube>1.5</textcube>
      </requirements>
      <binding>
         <coverpage title="Hello World Cover" handler="Helloworld_Show" />
      </binding>
    </plugin>
    사이드바 위젯과 비교하여 실제로 다른 점은 sidebar가 coverpage로 대치된 부분 뿐임을 주목하시기 바랍니다.
    <binding><coverpage>가 들어간 것을 볼 수 있습니다. <coverpage>는 표지 위젯을 생성합니다. <coverpage>에는 반드시 title과 handler가 지정되어 있어야 합니다.
    • title: 표지 위젯의 이름입니다. 호환성을 위하여 반드시 영대소문자 및 숫자만을 사용하시기 바랍니다. (CDATA등으로 감싼 경우에는 큰 상관은 없습니다.)
    • handler: 표지 위젯을 실제로 출력해주는 함수를 사이드바 위젯의 핸들러로 지정합니다.
  • index.php의 경우 [wiki:PluginCode가장 초기의 예제]를 그대로 사용하시면 됩니다.

환경 설정 패널 추가하기

표지 위젯도 다른 플러그인과 마찬가지로 환경설정 패널을 사용할 수 있습니다. 환경설정 패널의 설명은 이 문서를 참고하세요.

파라미터 사용

사이드바 위젯, 표지 위젯과 센터 위젯은 환경 설정 패널에서 지정할 수 있는 환경 변수와는 별도로 파라미터를 가질 수 있습니다.
위에 기술한 Hello world! 플러그인의 'Hello World!' 메세제를 위젯의 파라미터를 사용하여 변경할 수 있도록 해 보겠습니다.

  • index.xml

    <?xml version="1.0" encoding="utf-8"?>
    <plugin version="1.0">
      <title xml:lang="ko">안녕 세상아! (사이드바 파라미터 예제)</title>
      <link>http://www.example.com/</link>
      <version>1.0</version>
      <description xml:lang="ko">여기저기에 Hello world!를 출력해보는 예제 플러그인입니다.</description>
      <license>GPL</license>
      <author xml:lang="ko" link="http://www.example.com">슈퍼맨</author>
      <safety changeData="no" exposeData="no" accessLocal="no" accessRemote="no" accessRaw="no" />
      <requirements>
        <textcube>1.5</textcube>
      </requirements>
      <binding>
         <coverpage title="HelloWorld" handler="Helloworld_Show">
            <params>
               <param>
                   <title xml:lang="ko">출력 메세지</title>
                   <name>message</name>
                   <type>string</type>
               </param>
            </params>
         </coverpage>
      </binding>
    </plugin>

    위의 예를 보면 <coverpage> 부분이 한 줄로 완결되지 않고 영역으로 정의된 것을 볼 수 있습니다. <params> 안에 <param>이 정의되어 있는 것을 볼 수 있습니다. <params> 안에 <param>들을 여러개 집어 넣어 복수개의 파라미터가 지정이 가능합니다.
    <param>의 경우

    • title: 파라미터의 설명입니다. 위젯 파라미터 창에서 보여집니다.
    • name: 파라미터의 변수명입니다.
    • type : 파라미터의 종류입니다. 가능한 값으로는
    • textarea
    • string
    • int
      등이 가능합니다.

    그럼 이제 이 값을 받아 실행할 index.php 를 살펴봅시다. 사이드바 위젯의 핸들러는 실행되는 시점에 위에서 정의한 파라미터를 모두 인자로 받아옵니다.

  • index.php

    <?php
    function Helloworld_Show($parameters)
    {
        if(isset($parameters['message']))
            return $parameters['message'];
        else
            return 'Hello World!';
    }
    ?>

    파라미터에 값이 있는지 체크해서 있는 경우 그 값을 표지에 출력해 주고, 없는 경우에는 'Hello World!'를 표지 위젯에 출력해 줍니다.

메타 블로그

표지 플러그인이 다중 블로그에서 동작할 경우, 대표 블로그를 통하여 전체 블로그들의 포탈과 같은 블로그를 구성할 수 있습니다. 이럴 경우 플러그인이 현재 동작중인 블로그가 일반 사용자의 블로그인지, 전체 서비스의 대표 블로그인지 구분해야 하는 경우가 생깁니다.
이런 경우

requireComponent('Textcube.Function.misc');
misc::isMetaBlog();

의 값을 사용하여 현재 블로그가 대표 블로그인지 판별할 수 있습니다. misc::isMetaBlog() 의 값이 true이면 현재 블로그는 대표 블로그이며, 이 경우에만 동작하는 플러그인을 만들 수 있습니다.

  • (당연한 이야기이지만) 플러그인 하나가 서로 다른 역할을 하는 복수개의 다른 종류의 위젯들을 만들 수 있습니다. 또한, 하나의 플러그인이 사이드바,센터,표지 위젯뿐만 아니라 listener 이벤트 동작, tag 이벤트 동작에 대한 기술을 모두 담고 있을 수도 있습니다.
  • 파라미터의 경우 플러그인 환경 설정까지 가지 않더라도 표지의 끌어넣기 인터페이스에서 바로 버튼을 눌러 쉽게 값을 입력할 수 있는 장점이 있습니다. 간단한 환경 설정 값의 경우, 파라미터 기능을 이용하는 것이 훨씬 직관적입니다.
  • 표지 플러그인의 경우, 대표 블로그에서 포탈의 역할을 하는 메타 블로그를 구성하기 위하여 굉장히 유용하게 사용할 수 있습니다. 이 경우 로딩 속도에 문제가 생길 수가 있으므로 텍스트큐브의 pageCache를 사용하여 부하를 줄일 수 있습니다.