-
Notifications
You must be signed in to change notification settings - Fork 55
pluginSpec manual adminMenu
Jeongkyu Shin edited this page Sep 25, 2012
·
1 revision
- 태터 1.3 부터 지원되는 플러그인 기능으로 플러그인에서 블로그 관리자 메뉴를 생성할 수 있게 지원함
- 즉 플러그인 제작자가 따로 태터의 메뉴나 헤더등등의 불필요한 부분을 작성하지 않아도 메뉴를 생성할 수 있음
- http://dev.textcube.org/wiki/pluginSpec 참조
- tt 1.3 , tistory
- /plugin/adminMenu/viewMethos/method 를 설정하면 블로그 관리자메뉴를 생성할 수 있다. 이 때 method 항목은 하나의 관리자 메뉴와 대응된다.
- /plugin/adminMenu/viewMethos/method/title
- 관리자메뉴의 메뉴명
- /plugin/adminMenu/viewMethos/method/position :
- tistory 용 원하는 메뉴 삽입 위치 , position에 해당하는 대메뉴 하위로 들어간다.
- menu-center : 센터
- menu-post : 글 관리
- menu-feedback : 댓글/트랙백
- menu-skin : 스킨
- menu-plugin : 플러그인
- menu-link : 링크
- menu-setting : 환경설정
- menu-invite : 초대하기
- /plugin/adminMenu/viewMethos/method/topMenu
- TC 1.5 이상용 작동 방식은 tistory 와 동일하나 메뉴명과 항목명이 틀림
- center
- entry
- link
- plugin
- setting
- /plugin/adminMenu/viewMethos/method/handler
- 어드민 메뉴의 실제 view를 담당할 handler 를 지정함
- handler에서 echo 등의 표준출력을 통하여 원하는 페이지를 만들 수 있음
- 주의점 : 태터(TC)에서 html headr body등의 html 을 출력해주므로 handler에서는 html header body등의 태그를 출력하면 안된다.
- 핸들러명은 플러그인 핸들러 명명 규칙을 따라야 한다. (pluginName_handerName)
- /plugin/adminMenu/viewMethos/method/params
- 해당 핸들러(페이지)가 받을 수 있는 인수를 설정 할 수 있다.
- 단 인수는 $_REQUEST[ '~' ] 으로 접근 하여야 한다.
- /plugin/adminMenu/viewMethos/method/params/param
- 필수 항목 name , type
- name : 핸들러에서 $_REQUEST[ 'name' ] 으로 접근 할수 있다.
- type : 태터에서 인수를 검증할 때 쓰이는 타입 int , string , email 등등의 형식이 있음 되도록이면 정확하게 인수를 설정하여야 함 ( 자세한 사항은 http://dev.textcube.org/wiki/pluginSpec 에서 <xs:simpleType name="parameterType"> 를 검색하면 나옵니다.
- mandatory , default 는 옵션이며 둘중에 하나 혹은 없어야 함
- mandatory : 1 이면 해당 param 이 꼭 존재해야함( 아니면 404 에러) 0이면 없어도 됨
- default : 이 값이 셋팅되어 있으면 페이지 호출시 해당 값이 없으면 default 값이 들어가게 됨
예 리퍼러로그 플러그인
<?xml version="1.0" encoding="utf-8"?>
<plugin version="1.0">
......
<binding>
<adminMenu>
<viewMethods>
<method>
<title xml:lang="en">Referer Log</title>
<title xml:lang="ko">유입 경로</title>
<title xml:lang="ja">リファラ統計</title>
<position>menu-plugin</position>
<helpurl>http://manual.tistory.com/685</helpurl>
<handler>AD_Referer_Default</handler>
<params>
<param>
<name>page</name>
<type>int</type>
<default>1</default>
</param>
<param>
<name>perPage</name>
<type>int</type>
<mandatory>0</mandatory>
</param>
</params>
</method>
</viewMethods>
</adminMenu>
</binding>
</plugin>
-
/plugin/adminMenu/viewMethos/method/handler 에서 설정한 함수는 index.php 에 존재하여야 함
-
일종의 콜백이므로 특정 형식으로 만들어야 하고 사용자가 해당 메뉴에 접근할때 태터에서 해당 핸들러를 실행시켜줌
-
형식: function handler() AD_Referer_Default 의 예
/plugins/AD_Referer_Default/index.php 에서 .... function AD_Referer_Default() { global $owner, $pluginMenuURL, $pluginSelfParam ; requireComponent( "Tattertools.Model.Statistics"); requireComponent( "Tattertools.Model.Paging"); requireComponent( "Tattertools.Function.misc");
$page = getUserSetting('rowsPerPage', 20); if (empty($_REQUEST['perPage'])) { $perPage = $page; } else if ($page != $_POST['perPage']) { setUserSetting('rowsPerPage', $_REQUEST['perPage']); $perPage = $_REQUEST['perPage']; } else { $perPage = $_REQUEST['perPage']; }
?> <script type="text/javascript"> //<![CDATA[ window.addEventListener("load", execLoadFunction, false);
function execLoadFunction() { removeItselfById('log-pages-submit'); } //]]> </script> <div id="part-statistics-rank" class="part"> <h2 class="caption"><span class="main-text">순위 보기</span></h2> <table class="data-inbox" cellspacing="0" cellpadding="0"> <thead> <tr> <th class="number"><span class="text">순위</span></th> <th class="site"><span class="text">유입경로</span></th> </tr> </thead> <tbody>
.......... 중략
<div class="clear"></div>
- 기본 태터 URL 및 정보들
- $user : 현재 로그인해있는 사용자의 정보를 담고 있다.
- $blog : 현재 블로그의 정보를 담고 있다.
- $blogURL : 현재 블로그의 기본 URL을 담고 있다.
- 플러그인 관련 URL , path 변수들
- 플러그인 이름은 사용자가 변경할수 잇으므로 플러그인 제작당시에 URL을 하드코딩하여 사용하는 것은 금지
- $pluginName : 현재 플러그인의 이름
- 플러그인의 이름은 플러그인이 존재하는 디렉토리 명이며 이는 사용자가 변경할 수 있으므로 꼭 이변수를 이용하여야 함
- $pluginURL : 현재 플러그인의 기본 URL : 예 /plugins/AD_Referer_Default/
- 이변수를 통하여 플러그인자체의 이미지에 접근이 가능함
- $pluginMenuURL : 현재 메뉴 페이지의 접근 URL
- $pluginHandlerURL : 어드민 핸들러에 접근하기 위한 URL
- $pluginHandlerURL . '/' . $adminHandler 명으로 접근이 가능하다.
- $pluginPath : 현재 플러그인이 존재하는 물리적인 위치
- requireComponent('컴포넌트명') 을 이용하여 각 정보에 해당하는 클래스를 로딩할수 있음
TT 1.3 기준 사용가능한 component
Eolin.PHP.Base64Stream.php
Eolin.PHP.HTTPRequest.php
Eolin.PHP.XMLRPC.php
Eolin.PHP.XMLStruct.php
Eolin.PHP.XMLTree.php
Tattertools.Data.Attachment.php
Tattertools.Data.BlogSetting.php
Tattertools.Data.BlogStatistics.php
Tattertools.Data.Category.php
Tattertools.Data.Comment.php
Tattertools.Data.DailyStatistics.php
Tattertools.Data.DataMaintenance.php
Tattertools.Data.Feed.php
Tattertools.Data.Filter.php
Tattertools.Data.GuestComment.php
Tattertools.Data.Keyword.php
Tattertools.Data.Link.php
Tattertools.Data.Notice.php
Tattertools.Data.Personalization.php
Tattertools.Data.php
Tattertools.Data.PluginSetting.php
Tattertools.Data.Post.php
Tattertools.Data.RefererLog.php
Tattertools.Data.RefererStatistics.php
Tattertools.Data.ServiceSetting.php
Tattertools.Data.SkinSetting.php
Tattertools.Data.Tag.php
Tattertools.Data.TrackbackLog.php
Tattertools.Data.Trackback.php
Tattertools.Data.User.php
Tattertools.Data.UserSetting.php
Tattertools.Function.misc.php
Tattertools.Model.BlogAPI.php
Tattertools.Model.Entry.php
Tattertools.Model.Paging.php
Tattertools.Model.PluginCustomConfig.php
Tattertools.Model.Statistics.php
function adminMenuHandler(){
//$blog,$user 정보 알아보기
global $user,$blog;
var_dump($user);
var_dump($blog);
//플러그인 활성화후 해당 메뉴에 가보면 출력이됨
// /plugins/AD_Referer_Default/image/aa.jpg 라는 파일이 있을 때 접근방법
//1. url
global $plguinURL;
?>
<img src="<?php echo $pluginURL?>/image/aa.jpg?>" />
<?php
//2. path
global $pluginPath;
$f = fopen($pluginPath.'/image/aa.jpg','w');
.....
// 특정글에 대한 정보가져오기
requireComponent('Tattertools.Data.Post'); //확장자는 빼야함
$post = new Post();
$post->open(1);//1번글의 내용을 오픈함
$post->title ;
...
$post->close();
}
- 어드민 메뉴와 거의 동일하나 메뉴 view를 지원하지 않고 action의 역할만 지원함
- /plugin/adminMenu/methods/method/ 에 설정이 가능함
- /plugin/adminMenu/methods/method/params/ ~/param/
- /plugin/adminMenu/methods/method/handler 항목으로 어드민 메뉴와 유사하게 설정가능
- 단 이 기능은 따로 링크를 태터에서 제공하지 않으므로 플러그인내에서 주소 접근시
- $pluginHandlerURL . '/' . $handler 로 접근하여야 할수 있다.
- Source | Wiki Front | Main | Notice