차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판이전 판
다음 판
이전 판
tech:dokuwiki_image_plugin [2013/10/14 11:22] V_Ltech:dokuwiki_image_plugin [2016/07/12 09:26] (현재) – 바깥 편집 127.0.0.1
줄 1: 줄 1:
 +{{tag>dokuwiki image plugin}}
 +======Dokuwiki Image Plugin======
 + 
 +
 +도쿠위키에 그림을 넣으려면 
 +
 +  {{http://img33.imageshack.us/img33/6457/lightboxindokuwiki.jpg}}
 +
 +이렇게 중괄호에 그림의 주소를 넣으면 된다. 
 +
 +그런데 내용이 그림이더라도 확장자가 JPEG, PNG 같은 것이 아니면 (PHP 로 형성되는 실시간 그림이나 티스토리처럼 그냥 해쉬코드만 있는 경우) 그냥 파일로 인식되고 그림으로 표시되지 않는다.
 +
 +도쿠위키에서는 파일이름의 끝에 ''&.jpg?'' 이런 것을 추가하라는데...((https://www.dokuwiki.org/images#dynamic_images))
 +
 +  {{http://cfile7.uf.tistory.com/image/21117A3651126AAA2F2636&.jpg?}}
 +
 +{{http://cfile7.uf.tistory.com/image/21117A3651126AAA2F2636&.jpg?}}
 +{{http://cfile7.uf.tistory.com/image/21117A3651126AAA2F2636&.png?}}
 +
 +<del>안되거든요? Gohr 아저씨?</del>
 +
 +되는 사이트도 있지만 안되는 사이트가 태반이다. ((티스토리가 대표적...))
 +
 +그래서 간단한 플러긴을 만들어 보았다.
 +
 +그냥 
 +
 +  {{image>http://img33.imageshack.us/img33/6457/lightboxindokuwiki.jpg}}
 +  {{image>http://cfile7.uf.tistory.com/image/21117A3651126AAA2F2636}}
 +
 +이런식으로 쓰면 파일이름에 관계없이 그냥 그림으로 표시한다.
 +아직 크기조절 기능은 없다.
 +
 +{{image>http://img33.imageshack.us/img33/6457/lightboxindokuwiki.jpg}}
 +{{image>http://cfile7.uf.tistory.com/image/21117A3651126AAA2F2636}}
 +
 +
 +
 +<file php show.php><?php
 +/**
 + * DokuWiki Plugin image (Syntax Component)
 + *
 + * @license GPL 2 http://www.gnu.org/licenses/gpl-2.0.html
 + * @author  SC YOO <[email protected]>
 + */
 +
 +// must be run within Dokuwiki
 +if (!defined('DOKU_INC')) die();
 +
 +if (!defined('DOKU_LF')) define('DOKU_LF', "\n");
 +if (!defined('DOKU_TAB')) define('DOKU_TAB', "\t");
 +if (!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/');
 +
 +require_once DOKU_PLUGIN.'syntax.php';
 +
 +class syntax_plugin_image_show extends DokuWiki_Syntax_Plugin {
 +    public function getType() {
 +        return 'substition';
 +    }
 +
 +    public function getPType() {
 +        return 'normal';
 +    }
 +
 +    public function getSort() {
 +        return 301;
 +    }
 +
 +
 +    public function connectTo($mode) {
 +        $this->Lexer->addSpecialPattern('\{\{image>[^}]*\}\}',$mode,'plugin_image_show');
 +//        $this->Lexer->addEntryPattern('<FIXME>',$mode,'plugin_image_show');
 +    }
 +
 +//    public function postConnect() {
 +//        $this->Lexer->addExitPattern('</FIXME>','plugin_image_show');
 +//    }
 +
 +    public function handle($match, $state, $pos, &$handler){
 +        $data = array();
 +        $match = substr($match,8,-2); //strip markup from start and end
 +
 +        // alignment
 +        $data['align'] = 0;
 +        if(substr($match,0,1) == ' ') $data['align'] += 1;
 +        if(substr($match,-1,1) == ' ') $data['align'] += 2;
 +
 +        $data['src']=$match;
 +        $data['class']='media ';
 +        return $data;
 +    }
 +
 +    public function render ($mode, &$renderer, $data) {
 +        if($mode != 'xhtml') return false;
 +        switch ($data['align']){
 +            case 1:
 +            $data['class'].="medialeft";break;
 +            case 2:
 +            $data['class'].="mediaright";break;
 +            case 3:
 +            $data['class'].="mediacenter";break;
 +        }
 +       $renderer->doc.= '<a href="'.$data['src'].'" rel="lightbox"><img src="'.$data['src'].'" class="'.$data['class'].'"></a>';
 +
 +        return true;
 +    }
 +}
 +
 +// vim:ts=4:sw=4:et:
 +</file>
 + 
 +
 +^  누구나 수정하실 수 있습니다. [[http://vaslor.net/syntax|위키 사용법]] 참고하세요. ^
 +