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

텍스트큐브의 관리자 화면에 로그인하면 센터 플러그인 및 기본 패널이 출력됩니다. 사용자들은 관리자 화면의 센터에서 활성화된 센터 플러그인이 만들어낸 위젯을 표시하고 위치를 변경할 수 있습니다.

기본 개념

텍스트큐브의 센터 플러그인 위젯은 사이드바 플러그인 위젯, 표지 플러그인 위젯과 굉장히 유사합니다. 센터 플러그인 위젯의 경우 관리자 화면에 표시된다는 점만이 다릅니다.

센터 플러그인이 생성한 위젯들은 사이드바 플러그인 위젯과 같이 드래그앤드랍(끌어놓기)를 지원합니다. 센터 플러그인의 경우 사이드바 플러그인 위젯이나 표지 플러그인 위젯과는 다르게 최대 3줄로 배열이 가능합니다. 센터 플러그인 역시 사이드바 플러그인과 마찬가지로 플러그인 환경 설정 이외의 위젯 설정 값을 소유할 수 있습니다.

예제: 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>
           <center title="Hello World Cover" handler="Helloworld_Show" />
        </binding>
    </plugin>
    사이드바 위젯과 비교하여 실제로 다른 점은 sidebar가 center로 대치된 부분 뿐임을 주목하시기 바랍니다. 실제로 사이드바 위젯, 표지 위젯을 정의함에 있어서 차이점은 플러그인 바인더 이름이 center, sidebar, cover로의 차이 뿐입니다.
    <binding><center>가 들어간 것을 볼 수 있습니다. <center>는 센터에 위젯을 생성합니다. <center>에는 반드시 다음과 같은 title과 handler가 지정되어 있어야 합니다.
    • title: 센터 플러그인이 생성하는 위젯의 이름입니다. 호환성을 위하여 반드시 영대소문자 및 숫자만을 사용하시기 바랍니다. (CDATA등으로 감싼 경우에는 큰 상관은 없습니다.)
    • handler: 센터 위젯을 실제로 출력해주는 함수를 센터 위젯의 핸들러로 지정합니다.
  • index.php의 경우 가장 초기의 예제를 그대로 사용하시면 됩니다.

환경 설정 패널 추가하기

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

파라미터 사용

사이드바 위젯, 표지 위젯과 센터 위젯은 환경 설정 패널에서 지정할 수 있는 환경 변수와는 별도로 파라미터를 가질 수 있습니다.
위에 기술한 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>
         <center title="HelloWorld" handler="Helloworld_Show">
            <params>
               <param>
                   <title xml:lang="ko">출력 메세지</title>
                   <name>message</name>
                   <type>string</type>
               </param>
            </params>
         </center>
      </binding>
    </plugin>

    위의 예를 보면 <center>부분이 한 줄로 완결되지 않고 영역으로 정의된 것을 볼 수 있습니다. <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!'를 표지 위젯에 출력해 줍니다.

  • (당연한 이야기이지만) 플러그인 하나가 서로 다른 역할을 하는 복수개의 다른 종류의 위젯들을 만들 수 있습니다. 또한, 하나의 플러그인이 사이드바,센터,표지 위젯뿐만 아니라 listener 이벤트 동작, tag 이벤트 동작에 대한 기술을 모두 담고 있을 수도 있습니다.
  • 파라미터의 경우 플러그인 환경 설정까지 가지 않더라도 센터 위젯의 편집 모드의 끌어넣기 인터페이스에서 바로 버튼을 눌러 쉽게 값을 입력할 수 있는 장점이 있습니다. 간단한 환경 설정 값의 경우, 파라미터 기능을 이용하는 것이 훨씬 직관적입니다.