글
※제가 한번 아래 소스로 시도해보았는데, 오류가 나더라구요..ㅇ_ㅇ
xe_board_for_extra_vars 확장변수 전용 게시판 스킨[3차수정] 보완용 팁입니다.
1.modules/editor/editor.admin.controller.php line161 부분에 소스를 삽입한다.
$editor_config->enable_autosave = Context::get('enable_autosave');
$editor_config->enable_only_upload_editor = Context::get('enable_only_upload_editor'); if($editor_config->enable_height_resizable != 'Y') $editor_config->enable_height_resizable = 'N';
if($editor_config->enable_comment_height_resizable != 'Y') $editor_config->enable_comment_height_resizable = 'N';
if($editor_config->enable_autosave != 'Y') $editor_config->enable_autosave = 'N';
if($editor_config->enable_only_upload_editor != 'Y') $editor_config->enable_only_upload_editor = 'N'; 2. modules/editor/editor.model.php line45 부분에 소스를 삽입한다.
if(!$editor_config->editor_height) $editor_config->editor_height = 500;
if(!$editor_config->comment_editor_height) $editor_config->comment_editor_height = 120;
if($editor_config->enable_height_resizable!='N') $editor_config->enable_height_resizable= "Y";
if($editor_config->enable_comment_height_resizable!='Y') $editor_config->enable_comment_height_resizable= "N";
if($editor_config->enable_autosave!='N') $editor_config->enable_autosave = "Y";
if($editor_config->enable_only_upload_editor != 'Y') $editor_config->enable_only_upload_editor = 'N'; return $editor_config;
} /**
* @brief 에디터 template을 return
* upload_target_srl은 글의 수정시 호출하면 됨.
* 이 upload_target_srl은 첨부파일의 유무를 체크하기 위한 루틴을 구현하는데 사용됨.
**/
function getEditor($upload_target_srl = 0, $option = null) {
/**
* 기본적인 에디터의 옵션을 정리
**/ // 에디터 업로드만 사용 옵션 설정
if(!$option->enable_only_upload_editor) $enable_only_upload_editor = false;
else $enable_only_upload_editor = true; line 166
/**
* 에디터 컴포넌트 체크
**/
if($enable_component) {
if(!Context::get('component_list')) {
$component_list = $this->getComponentList();
Context::set('component_list', $component_list);
}
}
Context::set('enable_component', $enable_component);
Context::set('enable_default_component', $enable_default_component); /**
* 에디터 업로드 기능만 가능한지 변수 설정
**/
Context::set('enable_only_upload_editor', $enable_only_upload_editor); line 220
function getModuleEditor($type = 'document', $module_srl, $upload_target_srl, $primary_key_name, $content_key_name) {
// 지정된 모듈의 에디터 설정을 구해옴
$editor_config = $this->getEditorConfig($module_srl); // type에 따른 설정 정리
if($type == 'document') {
$config->editor_skin = $editor_config->editor_skin;
$config->upload_file_grant = $editor_config->upload_file_grant;
$config->enable_default_component_grant = $editor_config->enable_default_component_grant;
$config->enable_component_grant = $editor_config->enable_component_grant;
$config->enable_html_grant = $editor_config->enable_html_grant;
$config->editor_height = $editor_config->editor_height;
$config->enable_height_resizable = $editor_config->enable_height_resizable;
$config->enable_autosave = $editor_config->enable_autosave;
$config->enable_only_upload_editor = 'N';
} elseif($type == 'extra_vars'){
$config->enable_only_upload_editor = 'Y';
} elseif($type == 'comment') {
$config->editor_skin = $editor_config->comment_editor_skin;
$config->upload_file_grant = $editor_config->comment_upload_file_grant;
$config->enable_default_component_grant = $editor_config->enable_comment_default_component_grant;
$config->enable_component_grant = $editor_config->enable_comment_component_grant;
$config->enable_html_grant = $editor_config->enable_comment_html_grant;
$config->editor_height = $editor_config->comment_editor_height;
$config->enable_height_resizable = $editor_config->enable_comment_height_resizable;
$config->enable_autosave = 'N';
$config->enable_only_upload_editor = 'N';
} line 293
// HTML 편집 권한
$enable_html = false;
if(count($config->enable_html_grant)) {
foreach($group_list as $group_srl => $group_info) {
if(in_array($group_srl, $config->enable_html_grant)) {
$enable_html = true;
break;
}
}
} else $enable_html = true; if($enable_html) $option->disable_html = false;
else $option->disable_html = true; // 에디터 업로드만 설정
$option->enable_only_upload_editor = $config->enable_only_upload_editor=='Y'?true:false; 3. moudles/editor/tpl/js/uploader.js line 247 부분 소스를 삽입한다.
// 이미지 파일의 경우
} else if(/\.(jpg|jpeg|png|gif)$/i.test(uploaded_filename)) {
html = "<img src=\""+uploaded_filename+"\" border=\"0\" width=\"110\" height=\"110\" onclick=\"copyContent(this.href);return false\" />"; line 끝부분에 아래의 소스를 삽입한다.
function copyContent(trb)
{
var IE=(document.all)?true:false;
if (IE) {
if(confirm("이 글의 주소를 클립보드에 복사하시겠습니까?"))
window.clipboardData.setData("Text", trb);
}
}; <<보충설명>>
1> 이 소스는 글쓰기 폼에서 이미지 파일이 업로드 되면 미리보기가 지원되는데, 미리보기 이미지를 클릭하면 업로드된 파일의 위치를 클립보드에 복사 합니다. 2> 위의 방법으로 복사된 이미지 파일의 주소를 확장변수의 이미지 주소창에 사용자가 붙여넣기하여 사용하기 위함입니다. 4. module/editor/skins/default/editor.html line 9 부분에 소스를 삽입한다.
<!-- 자동저장용 폼 -->
<!--@if($enable_autosave && !$enable_only_upload_editor)-->
<input type="hidden" name="_saved_doc_title" value="{htmlspecialchars($saved_doc->title)}" />
<input type="hidden" name="_saved_doc_content" value="{htmlspecialchars($saved_doc->content)}" />
<input type="hidden" name="_saved_doc_message" value="{$lang->msg_load_saved_doc}" />
<!--@end--> <!-- 에디터 -->
<div class="xeEditor">
<!--@if(!$enable_only_upload_editor)--> line 142 부분에 소스를 삽입한다.
<!-- 에디터 크기 조절 bar -->
<!--@if($enable_resizable)-->
<div class="textAreaDragIndicator"><div class="textAreaDragIndicatorBar" id="editor_drag_bar_{$editor_sequence}"></div></div>
<!--@end-->
<!--@else-->
<!-- 에디터 출력 -->
<div><iframe id="editor_iframe_{$editor_sequence}" frameborder="0" height="0" style="background-color:transparent;" allowTransparency="true"></iframe></div>
<textarea id="editor_textarea_{$editor_sequence}" class="editor_iframe_textarea" style="display:none; height:0" rows="10" cols="10"></textarea>
<!--@end--> line 169 부분에 소스를 삽입한다.
<!-- 파일 업로드 영역 -->
<div class="fileListArea">
<select id="uploaded_file_list_{$editor_sequence}" multiple="multiple" size="5" class="fileList" onclick="editor_preview(this, '{$editor_sequence}');"></select>
</div>
<div class="fileUploadControl">
<a href="#" onclick="editor_upload_file('{$editor_sequence}');return false;" class="button"><span>{$lang->edit->upload_file}</span></a>
<a href="#" onclick="editor_remove_file('{$editor_sequence}');return false;" class="button"><span>{$lang->edit->delete_selected}</span></a>
<!--@if(!$enable_only_upload_editor)-->
<a href="#" onclick="editor_insert_file('{$editor_sequence}');return false;" class="button"><span>{$lang->edit->link_file}</span></a><!--@end-->
</div> 5. modules/document/document.item.php line 589 부분에 소스를 삽입한다.
/**
* @brief 에디터 html을 구해서 return
**/
function getEditor() {
$module_srl = $this->get('module_srl');
if(!$module_srl) $module_srl = Context::get('module_srl'); $oEditorModel = &getModel('editor');
return $oEditorModel->getModuleEditor('document', $module_srl, $this->document_srl, 'document_srl', 'content');
} function getExtra_vars_Editor() {
$module_srl = $this->get('module_srl');
if(!$module_srl) $module_srl = Context::get('module_srl'); $oEditorModel = &getModel('editor');
return $oEditorModel->getModuleEditor('extra_vars', $module_srl, $this->document_srl, 'document_srl', 'content');
} 6. modules/board/skins/xe_board_for_extra_vars/write_form.html line 103 부분에 소스를 삽입한다.
<!--@if($module_info->enable_editor =='N' && $val->type=='image' || $module_info->enable_editor =='N' && $val->type=='media')-->
<div class="editor">{$oDocument->getExtra_vars_Editor()}</div>
<!--@end-->
<!--@if($module_info->enable_editor !='N')-->
<div class="editor">{$oDocument->getEditor()}</div>
<!--@end-->
by Anna 안나
2008. 6. 21. 23:26
글
안녕하세요, 비밋입니다. ^_^
갠비를 멋진 로그들로 채우시면 베스트갠비로 오릅니다.
맨처음 비밋에 들어오실 때 주신 프로필사진을 띄워드리며, 프로필사진은 언제든지 변경가능합니다.(원하시면 요청게시판에서..)
베갠(이하 베스트갠비)에 오르시면, 보다 더많은 방문자가 생기게 됩니다.^_^
사람들 구경해주는 재미에, 로그올리는 재미에, 그림그리는 재미에..
그냥 편하게 그림을(로그를) 쌓아놓으시면 어느샌가 자신도모르게 베갠에 오르실수도 있습니다.
(운영자가 돌아다니며 베갠을 뽑는답니다.)
배갠은 오래오래 기록에 남으며(삭제되지 않아요^^), 최근에 배갠에 오르신 분들 순으로 배갠이 나옵니다.
여러분도 홧팅!^^!
by Anna 안나
2008. 6. 21. 22:13
글
현재 작업하고있는 사이트의 자체 요구사항(Needs For Me)중 한가지가 크로스 브라우징이다. 모든 브라우저에서 이상없게 구현하기 위해선 CSS가 걸레가 될듯 싶고, 최소한 Firefox, IE6, IE7, Opera까지는 동일한 Layout을 보장받고 싶다. 작업하면서 특정 브라우저에 맞춰서 작업하다보면 다른 브라우저에선 여지없이 깨지는 상황을 겪게되었다. 가장 적은 삽질로 동일한 Layout을 보장 받을 수 있는 나름의 Tip은 Firefox를 base로 작업하고 IE7 Hack적용, IE6Hack적용 즉, 첫번째 작업의 기본브라우저를 Firefox로 한다. 두번째 IE7에서 Layout을 확인하고, 깨지는 부분에 대해서 IE7용 Hack을 적용한다. 세번째 IE6에서 Layout을 확인하고, 깨지는 부분에 대해서 IE6용 Hack을 적용한다. 이런경우 오페라는 거의 보너스로 Layout이 잘 맞는다. 더불어 IE7, IE6 적용 Hack은 다음과 같다. Only IE7 : *:first-child+html #dividname {
} Only IE6: *html #divname {
} --------------------------------------------- 이상 간단한 팁이었습니다. 꼭 위처럼 하지 않으셔도 됩니다. 하지만, 제딴엔 가장 효율적이라 생각되는 방법을 적어놓은것 뿐입니다.^^
by Anna 안나
2008. 6. 21. 19:59
글
패딩과 마진의 문제라면 DTD 설정을 하시면 파폭과 익스 모두에서 동일한 "박스모델"을 가지게 됩니다.
이부분을 검색 해보시면 보다 많은 정보를 접하실수 있습니다.
익스 : width = 박스의 width (패딩 마진등의 영향을 받지 않습니다 )
그외 브라우져 : width = width + padding + margin + border
여기서 DTD (검색신공)를 선언 해주시면
익스 + 그외 브라우져에서 동일한 박스 모델을 가져요.
by Anna 안나
2008. 6. 21. 19:23
글
※ 블로그 타이틀용
((-------IMAGE-------))
※ 바탕화면 1280*1024
((-------IMAGE-------))
※바탕화면 1680*1050
((-------IMAGE-------))
by Anna 안나
2008. 6. 21. 17:59
글
웹 페이지를 새로고침 하지 않고 내용을 갱신하려면 Ajax를 사용하면 됩니다.
아래 소스로 DB쿼리 및 네이버의 OpenAPI을 사용하여 실시간 출력을 할 수 있습니다. index.php ajax.js new Ajax.PeriodicalUpdater("엘레멘트 ID명","데이터 파일") 옵션을 생략하면 기본값으로 2초마다 갱신해 줍니다. 설정 시간(초)마다 데이터 파일을 읽어와서 ID로 지정한 엘레멘트에 출력해줍니다.
by Anna 안나
2008. 6. 21. 16:26
글
에디터에서 선택 영역을 컴포넌트로 불러올 때, 굵은 표시 참고 function getText() {
// 부모 위지윅 에디터에서 선택된 영역이 있으면 처리
var fo_obj = xGetElementById("text_form");
var text = opener.editorGetSelectedHtml(opener.editorPrevSrl);
if(text==undefined) text = "";
text = text.replace(/<([^>]*)>/ig,'').replace(/</ig,'<').replace(/>/ig,'>').replace(/&/ig,'&');
fo_obj.contents.value = text;
return;
}
xAddEventListener(window, "load", getText);
컴포넌트의 HTML 내용을 에디터에 적용할 때 /* 부모창의 위지윅 에디터의 선택된 영역의 글자색을 변경 */
function completeCreateLink() {
var sHTML = preview.innerHTML;
opener.editorFocus(opener.editorPrevSrl);
var iframe_obj = opener.editorGetIFrame(opener.editorPrevSrl)
opener.editorReplaceHTML(iframe_obj, sHTML);
opener.editorFocus(opener.editorPrevSrl);
self.close();
}
by Anna 안나
2008. 6. 21. 16:20
글
폴더명 부분은 위젯 폴더 이름입니다.
폴더명.class.php
conf/info.xml 에서 선언한 extra_vars를 args로 받은 후 처리 합니다.
결과는 Context::set 으로 돌려주어 skin/스킨이름/폴더명.html 파일에서 사용됩니다.
예제
위젯 편집 페이지에서 입력받은 제목 값($args->title)을 obj변수($obj->title)로 받은 후,
Context::set에서 obj로 값을 돌려줍니다.
<?php
class 폴더명 extends WidgetHandler {
function proc($args) {
// 템플릿 파일에서 사용할 변수들을 세팅
$obj->title = $args->title;
$obj->list = $args->list;
// 템플릿의 스킨 경로를 지정 (skin, colorset에 따른 값을 설정)
$tpl_path = sprintf('%sskins/%s', $this->widget_path, $args->skin);
Context::set('colorset', $args->colorset);
$tpl_file = '폴더명';
Context::set('obj', $obj);
// 템플릿 컴파일
$oTemplate = &TemplateHandler::getInstance();
return $oTemplate->compile($tpl_path, $tpl_file);
}
}
?>
conf/info.xml
var에서 지정된 변수 값은 폴더명.class.php 파일에서 args 변수로 넘어갑니다.
type이 text이면 INPUT 폼을, select이면 SELECT폼을 출력합니다.
<?xml version="1.0" encoding="utf-8"?>
<widget version="0.1">
<title xml:lang="ko">제목</title>
<author email_address="이메일" link="홈페이지" date="만든 날짜">
<name xml:lang="ko">제작자</name>
<description xml:lang="ko">설명</description>
</author>
<extra_vars>
<var id="title">
<name xml:lang="ko">좌측 설명</name>
<type>text</type>
<description xml:lang="ko">폼 하단 설명</description>
</var>
<var id="list">
<name xml:lang="ko">좌측 설명</name>
<type>select</type>
<description xml:lang="ko">하단 설명</description>
<options>
<name xml:lang="ko">목록</name>
<value>값</value>
</options>
</var>
</extra_vars>
</widget>
skin/스킨이름/폴더명.html
Context::set 로 지정한 변수 값을 받아서 출력합니다.
예제
<div>제목: {$obj->title}</div>
<div>목록: {$obj->list}</div>
by Anna 안나
2008. 6. 21. 16:20
글
원하는 파일을 Ajax를 사용하여 출력하게 해줍니다.
by Anna 안나
2008. 6. 21. 15:59
글
marquee 명령어 이해하기
ⓐ.behavior=slide ☜━marquee 영역의 끝 부분에서 멈춥니다.
ⓑ.behavior=scroll ☜━marquee 영역을 벗어나서 사라집니다.
ⓒ.behavior=alternate ☜━양쪽으로 움직이것을 설정합니다.
ⓓ.direction=up ☜━글자가 위쪽으로 움직이게 해줌니다.
ⓔ.direction=down ☜━글자가 아래로 움직이게 해줌니다.
ⓕ.direction=left ☜━글자가 왼쪽으로 움직이게 해줌니다.
ⓖ.direction=right ☜━글자가 오른쪽으로 움직이게 해줌니다.
ⓗ.bgcolor=yellow ☜━배경설정합니다.(색상은 맘대로 바꾸시면 되겠죠.*^^*)
ⓘ.scrollamount=10 ☜━글짜 움직이는 속도을 설정합니다.(숫자가 적을수록 느려짐니다.)
ⓙ.scrolldelay=100 ☜━스크롤의 지연효과를 얻기 위해서 사용합니다.(1초간 멈추었다가 이동함.!)
ⓚ.bgcolor=yellow ☜━배경색을 설정합니다.(노란색으로 설정)
ⓛ.width=100 ☜━가로 폭을 설정합니다.(100으로 가로 길이설정)
ⓜ.height=100 ☜━세로 폭을 설정합니다.(100으로 높이 길이 설정)
ⓝ.hspace=100 ☜━marquee의 좌우에 지정한 만큼의 여백이 설정합니다.
ⓞ.vspace=100 ☜━marquee의 위와 아래에 지정한 만큼의 여백이 설정합니다.
ⓟ.loop=1 ☜━1번 반복입니다.(원하는 숫자을 넣으면 되겠죠.*^^*)
(※.loop=infinite ☜━무한 반복을 시켜줌니다.)
ⓠ.align ☜━정렬 방식을 설정한다.(ex. align=top )
(absbottom | absmiddle | baseline | bottom | left | middle | right | texttop | top)
by Anna 안나
2008. 6. 21. 15:31
글
게시판 목록에서 셀렉트 폼이 아닌 텍스트나 대체 이미지로 분류를 표시하고 싶다면
list.html 파일의 적당한 곳에 아래 소스를 알맞게 편집하여 삽입해보세요.
<!--@if($module_info->use_category == "Y")-->
<!-- 카테고리 사용시 카테고리 선택 표시 -->
<a href="{getUrl('','mid',$mid,'page',$page,'category','','document_srl','')}">분류</a>
<!--@foreach($category_list as $val)-->
<a href="{getUrl('','mid',$mid,'page',$page,'category',$val->category_srl,'document_srl','')}"><!--@if($category==$val->category_srl)--><b><!--@end-->{$val->title} <!--@if($val->document_count)-->({$val->document_count})<!--@end--><!--@if($category==$val->category_srl)--></b><!--@end--></a>
<!--@end-->
<!--@end-->
분류명을 이미지로 나열할 때
<!--@if($module_info->use_category == "Y")-->
<!-- 카테고리 사용시 카테고리 선택 표시 -->
<a href="{getUrl('','mid',$mid,'page',$page,'category','','document_srl','')}"><IMG 전체 분류 이미지/></a>
<!--@foreach($category_list as $val)-->
{@$on = ($category==$val->category_srl)?"_on":""}
<a href="{getUrl('','mid',$mid,'page',$page,'category',$val->category_srl,'document_srl','')}"><IMG src="{$val->category_srl}{$on}.jpg">!--@if($val->document_count)-->({$val->document_count})<!--@end--></a>
<!--@end-->
<!--@end-->
이미지 경로는 알맞게 편집하세요.
파일명 예
123 카테고리일 경우
123.jpg 분류 이미지
123_on.jpg 선택된 분류 이미지
by Anna 안나
2008. 6. 21. 15:23
글
※ 이 팁은 배경그림이 바뀌는 약간 조잡한 결과를 보여줍니다.
배경 패턴 이미지를 랜덤으로 보여주는 방법
미리보기(293가지 배경 랜덤 출력)
http://simulz.nayana.kr/zbxe/
이미지가 많을 때는 mt_rand()을 사용하는 것이 좋습니다.
이미지 폴더를 원하는 곳에 생성하여 이미지들을 넣고
이미지 파일명은 marble_95.jpg, mottled_198.jpg 등으로 숫자가 포함된 파일명으로 변경합니다.
가능한 1부터 순서대로 지정합니다.
레이아웃/layout.html 상단에 아래 소스를 알맞게 편집하여 삽입합니다.
{@ $img_rand = array(mt_rand(1, 100))} <style type="text/css"> body { background-image:url("/images/wallpaper/pattern/{$img_rand}.jpg"); } </style>
제가 사용중인 소스
{@ $img_array = array("marble_", "mottled_")} {@ $img_rand = array(mt_rand(1, 95),mt_rand(1, 198))} {@ $img_tag = mt_rand(0, 1)} <style type="text/css"> body { background-image:url("/images/wallpaper/pattern/{$img_array[$img_tag]}{$img_rand[$img_tag]}.jpg"); } </style>
by Anna 안나
2008. 6. 21. 15:22
글
학습 목표
1. 회원 정보에서 글, 댓글 작성 갯수를 보여주기
2. 회원 목록 관리자 페이지에서 글, 댓글 작성 갯수를 보여주기
작동 원리
document, comment 테이블을 user_id로 쿼리를 한다.
이때 쿼리 XML 파일을 만들어 줘야 함
작업준비
※ XML 파일은 어디에 넣어도 상관이 없습니다만 다른 용도로 사용을 하기 위해 각 모듈의 쿼리 폴더에 복사합니다.
아래 파일을 modules\comment\queries 폴더에 복사합니다.
getMemberCommentCount.xml
아래 파일을 modules\document\queries 폴더에 복사합니다.
getMemberDocumentCount.xml
getMemberUploadedCount.xml
1. 회원 정보 페이지 작업하기
modules\member\skins\스킨 폴더의 member_info.html 파일을 편집합니다.
70번대 줄에 아래 소스를 추가합니다.
{@
$obj->member_srl = $member_info->member_srl;
$output_document_count = executeQuery("document.getMemberDocumentCount",$obj);
$output_comment_count = executeQuery("comment.getMemberCommentCount",$obj);
$output_attach_count = executeQuery("document.getMemberUploadedCount",$obj);
}
<tr>
<th scope="row">{$lang->count_document}</th>
<td>{$output_document_count->data->count}</td>
</tr>
<tr>
<th scope="row">{$lang->count_comment}</th>
<td>{$output_comment_count->data->count}</td>
</tr>
<tr>
<th scope="row">{$lang->count_attach}</th>
<td>{$output_attach_count->data->count}</td>
</tr>
변수 대신 직접 한글을 사용해도 되지만 언어별로 나타내려면 lang 파일을 편집합니다.
modules\member\lang 폴더의 ko.lang.php 파일을 편집합니다.
아래 소스를 적당한 곳에 추가합니다.
$lang->count_document = '글 수';
$lang->count_comment = '댓글 수';
$lang->count_attach = '첨부 수';
2. 회원 목록 관리 페이지 작업하기
member 모듈의 member.admin.view.php 파일을 편집합니다.
dispMemberAdminList 함수의 중간에 아래 소스 중 굵은 부분을 삽입합니다.
function dispMemberAdminList() {
// member model 객체 생성후 목록을 구해옴
$oMemberModel = &getAdminModel('member');
$output = $oMemberModel->getMemberList();
foreach($output->data as $key => $value) {
$output_document_count = executeQuery("document.getMemberDocumentCount", $value);
$output_comment_count = executeQuery("comment.getMemberCommentCount", $value);
$output->data[$key]->document_count = $output_document_count->data->count;
$output->data[$key]->comment_count = $output_comment_count->data->count;
}
// 템플릿에 쓰기 위해서 context::set
Context::set('total_count', $output->total_count);
Context::set('total_page', $output->total_page);
Context::set('page', $output->page);
Context::set('member_list', $output->data);
Context::set('page_navigation', $output->page_navigation);
// 템플릿 파일 지정
$this->setTemplateFile('member_list');
}
modules\member\tpl 폴더에서 member_list.html 파일을 편집합니다.
<thead></thead> 사이에 아래 소스를 삽입하고,
<th scope="col">Document</th>
<th scope="col">Comment</th>
<tbody></tbody> 사이에 아래 소스를 삽입합니다.
<td class="tahoma">{$val->document_count}</td>
<td class="tahoma">{$val->comment_count}</td>
※ 소스를 참고하여 포인트 모듈의 회원 목록에서도 적용할 수 있습니다.
by Anna 안나
2008. 6. 21. 15:19
글
포인트 모듈 관리자에서 회원 목록을 포인트 순으로 정렬
SELECT m.*, p.point FROM xe_member m left outer join xe_point p on m.member_srl = p.member_srl order by point desc
by Anna 안나
2008. 6. 21. 15:18
글
기본 값으로 회원 서명은 본문 아래에 출력이 됩니다.
학습목표
원하는 곳에 회원 서명을 출력하기
작업 하기
addons\member_extra_info 폴더의 member_extra_info.addon.php 파일을 편집합니다. 36번 줄
// 2. 출력문서~ 아래 줄을 주석 처리합니다.
//$output = ~
아래 소스를 보드모듈 스킨의 header.html 또는 view_document.html 파일 상단에 삽입하고
{@
$oMemberModel = &getModel('member');
$signature = $oMemberModel->getSignature($oDocument->get('member_srl'));
}
아래 소스를 출력하기 원하는 곳에 삽입합니다.
{$signature}
끝;;;
by Anna 안나
2008. 6. 21. 15:17
글
파일을 새로 첨부하였을 때, 쉽게 구별하여 내려 받을 수 있도록 시간과 아이콘을 표시해 줍니다.
조건문 설명
· 파일 등록 시각은 현재 시각 빼기 설정시간보다 커야 한다.
(설정 시간동안 아이콘 표시)
· 파일 등록 시각은 글 등록 시각보다 커야 한다.
(처음 글 작성시는 아이콘 표시 안함)
· 파일 등록 시각은 글 수정 시각보다 작아야 한다.
(파일만 등록 후 글을 수정 안했을 때 아이콘 표시 안함)
소스
<ul>
{@ $uploaded_list = $oDocument->getUploadedFiles() }
<!--@foreach($uploaded_list as $key => $file)-->
{@ $new_icon = ($file->regdate > date("YmdHis", time() - $module_info->duration_new*3600) && $file->regdate > $oDocument->get('regdate') && $file->regdate < $oDocument->get('last_update')) ? "<img src='".getUrl()."modules/document/tpl/icons/new.gif' alt='new.gif' title='new.gif' align='absmiddle'/>" : "";
}
<li><a href="{getUrl('')}{$file->download_url}">{$file->source_filename} ({FileHandler::filesize($file->file_size)})({number_format($file->download_count)}) [{zdate($file->regdate, "Y-m-d H:i:s")}] {$new_icon}</a></li>
<!--@end-->
</ul>
사용하기
modules/board/skins/스킨/view_document.html 파일에서 120번대 줄을 위 소스로 대체.
by Anna 안나
2008. 6. 21. 15:16
글
질문 답변 게시판에서 유용한 기능
댓글이 달리지 않은 글을 검색합니다.
modules\document\queries 폴더에 아래 첨부 파일을 복사합니다.
getDocumentListNoComment.xml
document.model.php 파일의 getDocumentList 함수에서 아래 굵은 소스를 추가합니다.
$query_id = 'document.getDocumentList';
if(Context::get('nocomment') == true) {
$args->s_comment_count = "'0'";
$query_id = 'document.getDocumentListNoComment';
}
게시판 스킨의 list.html 파일에서 하단의 검색 소스 아래에 아래 소스를 추가합니다.
<a href="{getUrl('','mid',$mid,'listStyle',$listStyle,'nocomment',true)}" class="button"><span>무플</span></a>
아래는 내 글을 검색하는 소스로 위 소스의 바로 옆에 추가하면 됩니다.
<!--@if($logged_info)--><a href="{getUrl('','mid',$mid,'listStyle',$listStyle,'search_target','user_id','search_keyword',$logged_info->user_id)}" class="button"><span>내글</span></a><!--@end-->
by Anna 안나
2008. 6. 21. 15:15
글
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0" width="0" height="0"><param name=menu value=false><param name=wmode value=transparent><param name=movie value="./addons/member_extra_info/swf/memo_on.swf"><param name=quality value=low><param name="LOOP" value="false"><embed src="./addons/member_extra_info/swf/memo_on.swf" quality=low pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" width="0" height="0" loop="false" wmode=transparent menu="false"></embed></object>
위 소스를 member_extra_info.addon.php 49번줄에 추가하세요. <script> 앞에^^
첨부 파일은 다음 폴더에 추가하세요. addons/member_extra_info/swf/
by Anna 안나
2008. 6. 21. 15:12
글
블러(Blur)와 모션블러(Filter>Blur>Motion Blur)에 밀려, 있는둥 마는둥한 Smudge툴을 위해 이 강좌를 바칩니다. ^^ Smudge툴은 툴박스에서 Blur와 Sharpen툴과 같이 자리잡고 있습니다.
손가락 모양으로 생겼구요. Blur나 Sharpen으로 되어 있다면, 꾹 누르고 계시면 나올껍니다.
결과물부터 보여드리겠습니다. 제 홈페이지용 결과물 인데요.
저 모션블러인듯 보이는 저 효과는 어떻게 하는것일까요?
텍스트에 모션블러를 주고, Distort(Edit>Transform>Distort)로 조절하고...
물론 가능합니다. 이쯤에서 Motion Blur와 Smudge의 차이를 살펴볼 필요가 있겠네요.
1.Motion Blur는 필터이고, Smudge는 툴(Tool)입니다.
2.따라서 Motion Blur는 레이어 전체에 효과가 적용되고,
Smudge는 브러쉬 크기에 따라 원하는 곳에 효과를 줄 수 있죠.
(물론 선택영역을 이용하면 Motion Blur도 특정부분에 효과적용가능)
3.무엇보다 중요한! Smudge는 자유로운 연출이 가능합니다. Tool이기때문이죠. 브러쉬의 종류에 따라 Smudge의 연출은 더욱 다양해 집니다.
4.또 Smudge는 모션블러에 비해 부드러운 효과를 연출할수 있습니다.
모션블러는 좀 날카롭다고 할까요? 물론 Blur를 이용해서 좀 보완 할 수 있겠지만요..
위의 이미지를 만드는 법을 알아보겠습니다.
-그냥 이렇게 하면 끝입니다. ^^ 물론 '혼자서는...' 이 텍스트는 Rasterize되어 일반 레이어인 상태구요. Rasterize는 레이어에서 오른쪽 버튼 누르면 나오는거 아시죠? ^^
-브러쉬는 Hardness가 0%인 브러쉬, 즉 주변으로 퍼지는(?)브러쉬를 사용해 주시면 좋습니다.
-Smudge툴고 그어주시다가 선택영역밖으로 나가게 되면, 그 부분이 딱 잘린것 같아 어색해 지는데 그럴땐 Blur로 살짝 손봐주시면 되구요.
-한번에 끝까지 안 그어 주셔도 됩니다. 다시 번진 부분 끝부터 그어주면 되니까요. 이것도 Smudge툴의 좋은 점이죠. ^^
-꼭 그어주지 않으셔도 Shift키를 누르신채로 시작부분과 끝 부분을 '톡톡' 클릭해주시면 그 두 부분의 직선거리로 smudge툴이 적용됩니다.
이건 윗 그림의 배경 사진을 Smudge툴만 이용해서 만들어준 이미지입니다. smudge툴로 둥글게 둥글게 그어주었죠.
배경으로 쓰고 싶은 사진을 만드시는데도 Smudge툴은 자신만의 배경이미지를 만들어 줄껍니다..ㅋ(광고멘트?^^;)
별로 멋 없죠? ㅠㅠ
다음으로 넘어가겠습니다. ^^;
요 제법 무시무시한 텍스트는 영화 '포가튼'의 포스터의 영어 텍스트 부분입니다.
스릴러 영화 포스터에서는 모션블러나 Smudge가 많이 사용되죠. 텍스트 뿐만이 아니라 인물에도 사용되구요. 매트릭스에도 쓰이고..;;(오래전 강좌!-_-;;)
모션블러 같긴 하지만 모션블러로는 흉내낼수 없는 부분이 참 많다는걸 아실 수 있으실 껍니다.
위에 것들을 보셨다면 간단히 만드실수 있겠죠?
글씨가 떨어져 나간듯한 효과는 내지 못해도 퍼지는 효과는 어렵지 않겠네요.
일단 초기 기본 텍스트. 윤디자인구름체를 사용하였습니다. 제가 가진것중 가장 비슷하더군요. 블러도 주고 해서 저렇게 만들어 졌습니다.
smudge툴만을 이용해서 만든 결과입니다.
※여기서 중요한 TIP!!!!
smudge툴에도 Shift키가 적용된다는 사실 아시나요? 위에서 말한 '톡톡'말구요.
smudge툴로 원하는 곳을 클릭하신뒤, shift키를 누르고 원하는곳으로 드래그 하면, 마우스의 움직임과 관계없이 가로세로 직선형태로 smudge툴이 적용됩니다. (브러쉬도 마찬가지입니다.^^)
이 '포가튼'텍스트 처럼 smudge툴이 가로세로 방향으로만 적용된 그림에서는 아주 유용하겠죠? ^^
아참! 그리고 여기서는 사각형 모양의 브러쉬를 이용하여 smudge툴을 작업했습니다.
역시 smudge툴만으로는 부족해서 좀더 수정해보았습니다.
흐리게 하기위해 지우기보단 새 레이어를 만들어 준뒤 흰색브러쉬를 사용했습니다.
지우면 나중에 복구할수 없지만, 새 레이어에 배경색과 같은 브러쉬로 그려주면 나중에 복구하기 쉽겠죠? ^^
기타 터치로 마무리...
더 하고 싶었는데 TV좀 보다가 다시 하려니 귀찮아져버렸어요.ㅠㅠ
지금까지 smudge툴에 대해서 알아보았습니다.
별 내용없어서 강좌가 너무 짧아질까 걱정했는데 제법되는군요..;ㅋ
오래전부터 말씀드리는것이지만, Blending Option과 Filter에만 의존하지 마세요~ 툴박스에 있는 친구들도 상당히 유용하답니다. ^^
by Anna 안나
2008. 6. 13. 19:15
글
①배경이미지입니다. 회색이미지가 제가 디카로 외국어시험지를 찍은건데요... 원본은 제 홈페이지에 있답니다. ^^;;;
적당히 수정하여 블루톤의 이미지를 만들었습니다.
※수정방법은 Image > Adjustment > Level과 Image > Adjustment > Hue/Saturation을 이용하였습니다.
이 두가지는 이미지 수정의 기본인거 아시죠? Level은 어두운색은 더 어둡게, 밝은색은 더 밝게해주어
이미지를 극단적으로 보이게 하고, Hue/Saturation은 이미지의 채도,명도등을 바꿀수 있게 해주죠~^^ ②1.그리고 원하는 글씨를 쓰신뒤, Rasterize Layer를 이용, 텍스트 레이어를 일반 그림레이어로 만들어줍니다.
(제 강좌에는 Rasterize Layer가 참 많이 나오는것 같은데요. 이유는 텍스트레이어를 자유롭게 수정할수 있기때문이랍니다. ^^)
2.이제 일반레이어로 만들어 졌기때문에 Edit > Transform > Distort를 사용할수 있습니다. 이걸 이용하셔서 이미지를 빛의 각도나, 이미지의 구도에 맞게 수정해보세요~
③1.이제 그림자 만들기에 들어갈껀데요... 그림자를 만들어야 하니 Edit > Transform > Filp Vertical을 선택해주세요. 새로운레이어가 생기면서 상하가 뒤바뀐 이미지가 생길껍니다.
2.다음 아까도 사용했던 Distort를 이용하여 역시 빛의 각도나 이미지의 구도에 맞게, 그림자의 위치를 잘 설정해줍니다.
3.그리고 그림자이니 역시 위에서 언급했던 Hue/Saturation을 이용하여 회색으로 만들어줍니다. 방법은 Saturation을 0으로 해주시면됩니다. 아참! 그림자라 바닥이 살짝 비쳐보여야하니 Opacity(불투명도)를 적당히 낮추는것도 잊지 마시구요!
여기까지 되었군요! ④사실 여기서 끝내도 무관합니다만... 글씨의 약간의 두께를 주도록 하겠습니다. 어떻게 하냐구요? 정말정말 간단합니다.
1.지금 서 있는 글씨레이어를 하나 복사하신다음, 기존 글씨 아래로 위치시킵니다.
(물론 원본 레이어를 사용하셔도 되구요.)
2.그리고 Opacity를 살짝 낮춰주신후,
3.기존레이어와 다르게 살짝 움직여(Move시켜)줍니다. 키보드를 이용하셔도 되구요...
어려운가요? ^^;;;;
⑤이제 끝이구요... 아래는 홈페이지용 최종 완성작입니다.
by Anna 안나
2008. 6. 13. 19:10
글
① 우선 이런 그레디언트(gradient)를 만들어봅시다. ^^ 어렵지 않게 하실수 있으실껍니다.
색깔은 16진수 값으로 D8D0C3을 사용하였습니다.
② 텍스트를 넣어봅시다! 제 홈페이지에 쓸 내용으로 넣어봤습니다.
((TIP! - 텍스트(기타 다른..)레이어를 일반 그림레이어로 바꾸어 주는 'Rasterize Layer'를 이용,
글자 하나하나를 이동시켜 글자의 맨 아래 선을 똑같이 맞추어 주시면 더 보기 좋아 집니다. ^^
아참! Rasterize Layer는 레이어 창에서 원하는 레이어 선택후 오른쪽 버튼을 누르시면 보실수 있으실껍니다.))
③ 자, 그럼 비치는 부분을 만들어 보겠습니다.
1.비치는 부분을 만들기 위해 똑같은 레이어를 복사해 주신후, 2.Edit - Transform - Flip Vertical 을 이용하셔서 복사한 레이어를 뒤집은 다음!!
3.Filter - Gaussian Blur 효과를 주시고, 이어서 Filter - Motion Blur (90도요!) 효과를 준뒤,
원래 글자와 선을 맞추시고, Opacity를 20%로 주어 마무리 합니다.
((TIP! - 실제 싱글즈광고에서는 글자와 비치는 부분 사이가 약간 떠있어, 저도 그렇게 했답니다. ^^
그게 더 보기도 좋아요! 나중에 뒤쪽 그림자와 너무 딱! 붙어보일수가 있거든요... Blur효과는 원하시는 대로 적당히~)) ④ 이제 뒤쪽 그림자를 만들어 볼까요~
1.그림자를 만들기 위해 똑같은 레이어를 복사해 주신후, Edit - Transform - Distort효과로,
그림처럼 아주아주 납작하게 만들어줍니다. 오른쪽으로 기울어지면서요!!!
(실제 싱글즈광고에서는 텍스트로 그림자를 만들기보단 브러쉬를 이용한것 같더군요. 쉬운방법으로~^^) 2.그리고나서 그림자처럼 보이기위해서 Filter - Gaussian Blur 효과를 역시 원하시는 대로 적당히 줍니다.
그후 Opacity를 50%정도 주시면~~!!! 완성이랍니다!!!!!!!! @@ 약간만 꾸며보았습니다.;;;
by Anna 안나
2008. 6. 13. 19:08
글
Type [T] (타입) Tool ((-------IMAGE-------))
문자를 입력할 때 사용한다.
일러스트 프로그램 안에서 사용되는 폰트는 c:\windows\fonts\ 폴더 안의
폰트 데이터를 사용합니다.
'type tool'을 자유롭게 사용하기 위해서는 'Character, Paragraph' 등의 팔레트를
함께 활용하면 좋습니다.
*** 실전, 알면 도움됩니다. 예를 들어 내컴퓨터에 이쁜 폰트가 있어 일러스트에서 사용하고, 친구 컴퓨터에서
불러드렸더니 그폰트가 없어서 기본 폰트가 적용되는 것을 볼수 있습니다. 폰트란
그림이 아니라 'c:\windows\fonts\ '의 글꼴을 Document에 보여주는 역활을
하기 때문에 특이한 폰트를 사용할땐 그 파일과 폰트(파일)까지 함께있어야 한다는
겁니다. 다른 그래픽 프로그램도 마찬가지 입니다. 출력소를 몇번 다니신 분들은
아시죠? ^.~
<아차, 폰트파일이 많으면 컴 부팅 속도부터 저하된다는 거 아셔야합니다. ^.~ )
*** 미리 알고 보기
'Type Tool'의 type아이콘의 종류는 여러가지가 있습니다.
((-------IMAGE-------)) ((-------IMAGE-------)) ((-------IMAGE-------)) ((-------IMAGE-------)) Type Tool Area Type Tool Path Type Document에 글쓸때
((-------IMAGE-------)) 커서1 -- 포인터의 위치를 잡아주는 선입니다.
(즉, 원하는 지점에 이 선을 맞추워 클릭하면 문자를 입력할 수 있습니다. ) **** 'Area Type과Path Type'에 적용이됩니다.
by Anna 안나
2008. 6. 8. 22:00
글
Convert Anchor Point (포인트 방향전환) Tool ((-------IMAGE-------))
핸들을 이용하여 부드러운 곡선처리를 합니다.
이번엔 앵커포인트를 클릭드레그 해봅시다. 핸들이 엥커포인터를 중심으로
양쪽으로생성되는게 보이죠? 핸들을 선택 할때 패스의 각도및 방향을
부드럽게 바꿀수 있다.
핸들을 자유롭게 조절하는 방법은 3가지가 있답니다.
첫번째는 'Convert Anchor Point Tool'을 사용하는 방법과
두번째는 'Pen Tool'사용시에도 패스선의 앵커포인트를 클릭 드레그 하여 핸들이 생성하는 방법.
세번째는 'Pen Tool'사용시 'Alt key'를 누르면 'Convert Anchor Point Tool'아이콘으로 변하는 것을 볼수 있답니다. 앵커포인트에 마우스를 갖다대고, 'Alt key'를 누르면 되겠습니다.
즉, 굳이 'Convert Anchor Point Tool'을 선택할 필요가 없다는 것이죠.
예제를 봅시다.
위의 두번째 방법을 보여드리겠습니다.
'Pen Tool'사용시 아이콘의 종류도 좀 보실 수 있을 꺼예요. ^^
((-------IMAGE-------)) 'Pen Tool'을 선택하고 Document에 클릭을 합니다.앵커포인트가 하나 생기겠죠. ((-------IMAGE-------)) 다른 위치(오른쪽)에 마우스를 놓습니다.즉, 패스를 만들려고 하는 거겠죠. ((-------IMAGE-------)) 이젠 클릭을 합니다. 이때, 클릭을 하면서 마우스 버튼에서 손을 때지 않습니다. 마우스의 아이콘이 바뀐게 보이죠?? ((-------IMAGE-------)) 마우스 버튼에서 손을 때지 않은 상태에서 그대로 아무대로나 드레그를 해보세요. 앵커포인트의 양쪽에 핸들이 생기는 것이 보이죠. 마우스 아이콘 모양은 같져?? ((-------IMAGE-------)) 위의 방법과 동일하게 클릭 드래그 할때, 'Shift key'를 누르면?? 45도씩의 각도 등으로 핸들이 정지되는 것을 볼수 있답니다. "정"각도를 원할 때 사용합니다.
(자주 사용하다 보면 이해될꺼예요.) ((-------IMAGE-------)) 이번엔 클릭 드래그 할때 'Alt key'를 누르고 드래그 해보세여.'Alt key'를 누른 이후엔 왼쪽편의 핸들은 고정된 상태에서 오른쪽의 핸들만 그래그되어 움직이는 것 느끼 실 껍니다. 하하. 이런건 언제 사용하냐구여?
앵커포인트의 양쪽에 서로다른 각도의 곡선이 있을 때 'Alt key'를 사용하며, 곡선이 많은 이미지를 루끼(패스)딸땐, 엄청난 시간을 절약할 수 있답니다.
이번엔 'Convert Anchor Point Tool'을 활용. 복사까지 해보겠습니다.
마우스 포인터를 살펴보면서 실습해 보세요.
((-------IMAGE-------)) 직선의 패스의 앵커포인터에 마우스를 갖다댑니다. ((-------IMAGE-------)) 이번엔 크릭을 하는 상태입니다. 즉, 마우스에서 손을 때지 않은 상태입니다. ((-------IMAGE-------)) 앵커포인트를 이젠 'Alt key'를 눌른 상태에서 클릭해보세요. 포인터가 복사용 아이콘으로 바뀌는 것이 보이져? ((-------IMAGE-------)) 그대로 드래그 합니다. 마우스 포인터가 또 바뀌는 것을 볼수 있습니다. 또한 핸들(양 옆의 파란선)이
작용한 부분이 복사되는 것을 볼수 있답니다. (앞전에 'Alt key'는 복사의 기능을 한다고 말한적이 있져? ^.~)
다음은 'Convert Anchor Point Tool'을 활용. 핸들이 있는 앵커포인트를
클릭했을 땐, 핸들이 모두 사라지면서 직선처리가 됩니다.
((-------IMAGE-------)) 옆의 그림처럼 오브젝트의 특정 앵커포인트 하나와 'Convert Anchor Point Tool'을 선택합니다.그럼 앵커포인트와 핸들이 모두 선택되어 있는게 보이죠?^^ ((-------IMAGE-------)) 이젠 마우스로 우측에 있는 앵커 포인트를 클릭합니다. 그럼. 이 클릭한 상태(선택된 앵커포인트의 핸들이 사라지고, 마우스 포인트가 바뀐것을 볼수 있습니다.) 즉, 앵커 포인트가 사라졌기에 그 앵커포인트로 곡선처리 된 패스는 직선처리가 됩니다. ((-------IMAGE-------)) 이때, 클릭한 그 상태에서. 드래그를 한다면 그림처럼. 앵커포인트가 다시 생성되면서. 마우스 포인트도 바뀝니다.
by Anna 안나
2008. 6. 8. 21:40
글
Delete Anchor Point (포인트 삭제) Tool ((-------IMAGE-------))
앵커 포인트를 삭제할 때 사용합니다.
앵커포인트가 선택되어 있을 때 마우스를 올려놓고 클릭하면 삭제됩니다.
앵커포인트를 삭제하는 방법은 2가지 있답니다.
한가지는 'Delete Anchor Point Tool'을 사용하는 방법과 다른 한가지는
'Pen Tool' 사용시에도 패스의 앵커포인트에 마우스를 갔다데면
'Delete Anchor Point Tool'로 사용할수 있다
즉, 굳이 'Delete Anchor Point Tool'을 선택할 필요가 없다는 것이죠.
예제를 봅시다.
위의 두번째 방법을 보여드리겠습니다.
((-------IMAGE-------)) 패스선이 하나 있습니다.그중간 앵커 포인트가 하나 보이시죵.. ^^ 이것을 없앨것입니다. ((-------IMAGE-------)) ' Pen Tool'을 선택한 상태입니다. 이제 마우스를 패스의 중간 포인터에 가져가 봅시다. 마우스포인터의 오른쪽하단에 빼기아이콘이 함께 생긴게 보일 것입니다. 이때, 마우스를 클릭하면, 패스 중간에 앵커 포인터가 사라진생성된 것을 확인할수 있을 것입니다. ((-------IMAGE-------)) 클릭하셨나여? 그럼, 포인터가 사라지는 것을 볼 수 있을 것입니다.
아주 간단하죠? ^^
by Anna 안나
2008. 6. 8. 21:36
글
Add Anchor Point (포인트 추가) Tool ((-------IMAGE-------))
앵커 포인트를 추가할 때 사용합니다.
추가툴은 패스가 선택되어있을 때 사용이 가능합니다.
앵커포인트를 추가하는 방법은 2가지가 있답니다.
첫번째는 'Add Anchor Point Tool'을 사용하는 방법과
두번째는 'pen Tool'사용시에도 패스에 마우스를 갔다데면 추가툴로 사용할 수 있습니다.
즉, 굳이 'Add Anchor Point Tool'을 선택할 필요가 없다는 것이죠.
예제를 봅시다.
위의 두번째 방법을 보여드리겠습니다.
((-------IMAGE-------)) 패스 선이 하나 있습니다. ((-------IMAGE-------)) 패스의 중간에 마우스 포인터를 가져다 대면 펜툴포인터의 오른쪽하단에 더하기 아이콘이 함께 생긴게 보일 것입니다. ((-------IMAGE-------)) 이제, 마우스를 클릭해 봅시다. 그럼 앵커 포인트가 패스 중간에 생성된 것을 확인할수 있을 것입니다.
이렇게 패스의 중간이나 오브젝트의 중간에 앵커포인트를 추가하여 핸들등을 줘서 자유롭게
곡선처러도 할수 있답니다. [헨들은 일러강좌 초반에 언급한바 있습니다.] ^^
by Anna 안나
2008. 6. 8. 21:29
글
Pen [P](펜) Tool ((-------IMAGE-------))
이 툴은 가장 기초적이면서. 정확한 작업을 할때 사용합니다.
이 'pen Tool'의 사용법만 알아도 원하는 오브젝트를 얼마든지 자유롭게 생성할수 있습니다.
예제를 봅시다.
1. 패스(선) 생성해보기
((-------IMAGE-------)) 먼저 Tool box의 펜툴을 선택해 합니다.
그리고 Document에 클릭합니다. ((-------IMAGE-------)) 이번엔 앵커포인트 오른쪽에또 한번 클릭해 봅니다.
이렇게 포인터를 찍어서 포인터와 포인터가 연결되면 패스(선)가생성되는 것을 볼 수 있습니다.
이렇게 포인터를 연결하면 패스가 생성됩니다. ((-------IMAGE-------)) 정확한 수평의 패스을 생성하려면 어찌 하면 될까여??
클릭(앵커포인터를 하나 만든) 후 'Shift key' 를 누른 상태에서 앵커포인트의 오른쪽에 다시한 번 클릭하면 수평의 패스가 생성된게 보이죠.
2. 패스의 연결 끊기 및 재 연결해보기 * 패스의 연결 끊기
((-------IMAGE-------)) 'pen Tool'을 사용하여 클릭할때마다 패스선이 계속 연결될 것입니다. 이럴땐, 'Selection 또는 Direct Selection Tool'을 선택후 Document를 클릭하거나 'Ctrl + Document 클릭' 하면패스선이 끊어지는 것을 볼 수 있답니다. (일러스트를 처음 접하는 분은 패스 끊기가 고민이 되었을 것입니다. ^^)
*2개의 독립된 패스 연결해보기
((-------IMAGE-------)) 서로다른 2개의 패스가 있습니다. ((-------IMAGE-------)) 'pen Tool'을 선택하고, 패스 끝의 앵커포인트에 마우스를 갖다대면,
그림처럼 마우스아이콘이 바뀝니다. ((-------IMAGE-------)) 이때, 클릭만해보세요. 또 아이콘이 바뀌는게 보이져?^^ ((-------IMAGE-------)) 이번에는 연결될 부분의 앵커포인트에 마우스를 갖다대면 또다른 아이콘으로 바뀝니다. ((-------IMAGE-------)) 클릭을 하면 2개의 패스가 연결되는 것이 보입니다.
by Anna 안나
2008. 6. 8. 21:22
RECENT COMMENT