同心聲氣默猶通
WP2 글쓰기 페이지의 DBX를 메뉴에 적용시켰습니다. 원 저작자 사이트(brothercake)에 가면 최신 버전인 2.0.4가 있으며, 저는 wp-include/안에 있는 2.0.1을 사용하였습니다. 저작자의 sample code나 처음부터 DBX가 적용된 CrimsonMilk 테마만큼은 아니라도 몇개의 에러를 제외하면 무난합니다. (테스트좀 해 주시고 의견 부탁해요 ^_^)
DBX는 플러그인이 아닙니다. 직접 스크립트를 링크하시고 스킨을 꾸미셔야 합니다. ^-^ (플러그인으로 만들어 볼까 했지만 능력이 부족해서 -_-)
1 2 3 4 5 6 | <!-- Docking boxes (dbx) by brothercake - http://www.brothercake.com/ -->
<script type="text/javascript" src="<?php bloginfo('wpurl'); ?>/wp-includes/js/dbx.js"></script>
<!-- dbx configuration script -->
<script type="text/javascript" src="<?php bloginfo('template_directory'); ?>/js/dbx-key.js"></script>
<!-- dbx stylesheet -->
<link rel="stylesheet" type="text/css" href="<?php bloginfo('template_directory'); ?>/styles/dbx.css" media="screen, projection" /></link> |
말씀드린대로 dbx.js는 WP2에 기본으로 포함되어 있는 ‘wp-includes/js/’내의 파일을 사용합니다. 또 dbx-key.js와 dbx.css파일을 받으셔서 적당한 곳에 업로드 하시고 해당 주소로 링크 하셔야 합니다.(저는 테마파일의 js 폴더에 넣었습니다.) 만약 WP2이전 버전을 사용하시거나 dbx.js가 없는 환경에서 DBX를 구현하셔야 하면 dbx.js 파일을 같이 업로드 하시기 바랍니다.
DBX 관련 파일 다운받기: [brothercake] [this blog]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | //initialise the docking boxes manager var manager = new dbxManager('main'); //session ID [/-_a-zA-Z0-9/] //create new docking boxes group var purple = new dbxGroup( 'purple', // container ID [/-_a-zA-Z0-9/] 'vertical', // orientation ['vertical'|'horizontal'] '7', // drag threshold ['n' pixels] 'no', // restrict drag movement to container axis ['yes'|'no'] '10', // animate re-ordering [frames per transition, or '0' for no effect] 'yes', // include open/close toggle buttons ['yes'|'no'] 'open', // default state ['open'|'closed'] 'open', // word for "open", as in "open this box" 'close', // word for "close", as in "close this box" 'click-down and drag to move this box', // sentence for "move this box" by mouse 'click to %toggle% this box', // pattern-match sentence for "(open|close) this box" by mouse 'use the arrow keys to move this box', // sentence for "move this box" by keyboard ', or press the enter key to %toggle% it', // pattern-match sentence-fragment for "(open|close) this box" by keyboard '%mytitle% [%dbxtitle%]' // pattern-match syntax for title-attribute conflicts ); |
sessionID와 containerID는 그대로 사용하셔도 상관은 없지만, 적절히 바꾸어 주시는게 좋습니다. (특히 한 페이지에 여러개의 DBX를 적용하시려면 적용할 DBX 파트의 갯수만큼 container를 따로 만드셔야 하며 containerID는 dbx-group을 구분하는 id가 됩니다. 나중에 다시 말씀 드리겠습니다.) 그것 외에는 파라미터 부분이니 주석을 보시면 쉽게 아실 것입니다.
dbx-key.js는 session과 container를 정의 하는 것 정도로 제 할일이 끝나고 직접적인 동작은 dbx.js에서 처리하죠. (다행이 dbx.js는 손대지 않으셔도 좋습니다. ^-^) 잊지 마셔야 할 것은 원하시는 환경에 따라 session과 container를 바꾸셔야 한다는 겁니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | /**************************************************************** docking boxes core CSS: YOU MUST NOT CHANGE OR OVERRIDE THESE *****************************************************************/ .dbx-clone { position:absolute; visibility:hidden; } .dbx-clone, .dbx-clone .dbx-handle-cursor { cursor:move !important; } .dbx-dummy { display:block; width:0; height:0; overflow:hidden; } .dbx-group, .dbx-box, .dbx-handle { position:relative; display:block; } /**************************************************************** avoid padding, margins or borders on dbx-box, to reduce visual discrepancies between it and the clone. overall, dbx-box is best left as visually unstyled as possible *****************************************************************/ .dbx-box { margin:0; padding:0; border:none; } /**************************************************************** otherwise, do what you like :) *****************************************************************/ /* handle cursors */ .dbx-handle-cursor { cursor:move; } |
제가 사용하고 있는 CSS파일입니다. dbx.zip에 포함 되어 있는 녀석은 sample용 dbx.php에 맞춰진 녀석이라 애트리뷰트가 많으므로 다시 작성하시길 권합니다.
‘otherwise, do what you like’로 주석처리 된 곳까지는 Core CSS라며 brothercake에서 권장하는 필수 사항입니다. (영어로 매뉴얼이 잘 되어 있으니 자세히 얼렁뚱땅 읽어보시길.)
그리고 저는 예전 스킨의 디자인을 그대로 유지하기 위해 ‘dbx-handle-cursor’ 하나만 추가 시켰습니다. Core CSS만으로도 충분히 DBX는 동작합니다.
위의 dbx-key.js에 적당한 sessionID와 containerID를 부여하셨고, dbx.css를 작성하셨다면 다음은 실제로 HTML에 적용하는 과정만 남았습니다. (그리 힘들지 않아요 ^-^)
중요한 애트리뷰트는 4가지입니다. (brothercake의 문서는 여기)
1 2 3 4 5 6 | <div class="dbx-group" id="containerID of dbx-key.js"> <div class="dbx-box"> <div class="dbx-handle">...</div> <div class="dbx-content">...</div> </div> </div> |
대략 위와 같이 사용합니다. div 태그는 element로 span이나 다른 어떤 태그도 상관없지만 일반적으로 div가 좋습니다. 잊지 마셔야 할 것은 ‘dbx-group’가 있는 div태그에 반드시 id로 dbx-key.js의 해당 containerID를 지정하셔야 합니다. (누누히 말씀드린 바로 필요 group만큼 dbx-key.js에서 설정해 두셔야 합니다.)
이제부터 실제 스킨의 디자인을 가능한 변경하지 않으면서 DBX를 쉽게 적용하는 방법을 알려드리겠습니다. (역시 본 블로그 이외에는 테스트를 해 본적이 없으므로 의견 부탁드립니다.)
먼저 원하시는 부분을 감싸는 최초의 div태그에 ‘dbx-group’를 적용시킵니다. 기존 ‘div class=어쩌고저쩌고’를 ‘div class=어쩌고저쩌고 dbx-group’처럼 기존 class 애트리뷰트 뒤에 빈칸 하나 넣으시고 ‘dbx-group’를 적으시면 됩니다. 다음으로 나머지 애트리뷰트를 적용시키는데, 위와 똑같이 기존 class에 빈칸 하나 추가 하시고 뒤에 해당 애트리뷰트를 넣으시면 됩니다. (뒤에 하셔야 합니다. 앞에 하시면 적용이 달라질 수 있습니다.)
제 스킨의 소스를 예를 들어보겠습니다.
DBX 적용전
1 2 3 4 5 6 7 8 9 | <div class="secondary"> ... <div class="sb_categories"><h2>갈래</h2> <ul> <?php list_cats(0, '', 'name', 'asc', '', 1, 0, 1, 1, 1, 1, 0,'','','','','') ?> </ul> </div> ... </div> |
DBX 적용후
1 2 3 4 5 6 7 8 9 | <div id="sidebar" class="secondary dbx-group"> ... <div class="sb_categories dbx-box"><h2 class="dbx-handle">갈래</h2> <ul class="dbx-content"> <?php list_cats(0, '', 'name', 'asc', '', 1, 0, 1, 1, 1, 1, 0,'','','','','') ?> </ul> </div> ... </div> |
예전에 DBX를 Kubrick 테마의 사이드 바에 잠깐 테스트 적용만 해보고 잊어버리고 있었는데 이렇게 상세하게 설명해 주신걸 보니 다시 시도해 보고 싶어집니다.
워드프레스의 편집창에서 처럼 펼침 기능까지 있으면 더 좋을것 같은데요.
unfusion// 절망클럽의 unfusion님이시군요. 영어 읽기가 귀찮아서 한글 설명을 찾느라 구글을 뒤지다가 포스트를 봤었습니다. ^-^
펼침 기능은 dbx-key.js에서 그룹 파라미터만 조정하면 바로 됩니다. 직접 html소스에서 고칠 필요도 없죠…
전 082님의 AJAX 스포일러를 한번 적용시켜 볼까 해서 일부로 꺼둔거라서요. 근데 귀차니즘에 손 놓고 있습죠