혀나겅주님이 위젯 만드는법 강의해보라고 하나, 그건 실력상의 문제로 하긴 힘들 것 같고,
내가 알고 있는 내용을 적어 볼까 합니다. 생각나는대로 한가지씩 해 나가겠습니다.
이번내용은 카멜레온위젯들이 제목폰트의 색상들이 고정되어 있었는데,
이것이 배경에 칼라가 들어가 있는 경우(특히 검정바탕) 배경색깔과 겹쳐서 잘 안보이는 경우가 생기므로
위젯설정에서 제목폰트를 선택할 수 있게끔 만드는 방법을 이야기 해 보겠습니다.
먼저 카멜레온 위젯중에서 multi위젯을 보기로 해서 설명하겠습니다.
멀티위젯안에 보면 위의 이미지와 같이 mh_multi.class.php와 conf폴더안에 info.xml파일 그리고 skins폴더안에 mh_newdoc_chameleon의 스킨이 있으며 그 스킨안에 list.html과 css폴드안에 normal.css파일이 있습니다. 이 4개의 파일을 편집하면 됩니다.
$widget_info->board_line_color = $args->board_line_color;
if(!$widget_info->board_line_color) $widget_info->board_line_color = 'gray';
위와 같이 라인의 색상을 구하는 값이 보일 것입니다. 이것을 보기로 하여서
$widget_info->titles_font_color = $args->titles_font_color;
if(!$widget_info->titles_font_color) $widget_info->titles_font_color = '#626262';
hint :
1. 바탕색과 같은 경우는 칼라를 적어주는 곳에 ' ' 이렇게 공백으로 두면 기본이 투명으로 처리 됩니다.
2. 테두리라인의 굵기처럼 숫자를 입력받아야 하는 경우는
// 보드 테두리라인 선굵기
$widget_info->board_line_width = (int)$args->board_line_width;
if(!$widget_info->board_line_width) $widget_info->board_line_width = 5;
위와 같이 약간 변형되면 됩니다.
3. 위의 내용과는 다르게 어떤 임의의 문구나 선택을 결정하는 경우는
// 링크문구
$linkt = $args->linkt;
// 보드 테두리라인 선택
$board_line = $args->board_line;
위와 같이 간단하게 만들고 그 내용 아래로 내려가면 있는,
변수들을 세팅부분에 추가해 주면 됩니다.
// 템플릿 파일에서 사용할 변수들을 세팅
if(count($mid_list)==1) $widget_info->module_name = $mid_list[0];
$widget_info->title = $title;
$widget_info->titles = $titles;
$widget_info->document_list = $document_list;
$widget_info->subject_cut_size = $subject_cut_size;
$widget_info->duration_new = $duration_new * 60*60;
$widget_info->link = $link;
$widget_info->linkt = $linkt;
$widget_info->board_line = $board_line;
<name xml:lang="ko">라인 색상 [T/C]</name>
<type>text</type>
<description xml:lang="ko">보드 라인 색상을 지정합니다.( 기본칼라 gray )</description>
</var>
위와 같이 라인 색상을 선택하는 부분을 보기로 하여 아래와 같이 "제목 폰트 색상" 을추가하면 됩니다.
<name xml:lang="ko">제목 폰트 색상 [C]</name>
<type>text</type>
<description xml:lang="ko">보드 제목폰트 색상을 지정합니다.( 기본칼라 #626262 )</description>
</var>
<var id="content_cut_size">
<name xml:lang="ko">내용 글자수 [A]</name>
<type>text</type>
<description xml:lang="ko">내용글 표시시 글자수를 지정할 수 있습니다. (기본 100)</description>
</var>
<var id="display_author">
<name xml:lang="ko">글쓴이 표시 [A]</name>
<type>select</type>
<description />
<options>
<name xml:lang="ko">표시</name>
<value>Y</value>
</options>
<options>
<name xml:lang="ko">표시하지 않음</name>
<value>N</value>
</options>
</var>
text는 숫자나 문자를 표현할때 사용하며,
select는 선택을 할 시 사용되어집니다.
<!--@if($widget_info->titles == 'Y')-->
<a href="{$oDocument->getPermanentUrl()}#{$oDocument->getCommentCount()}" style="color:{$widget_info->titles_font_color}; ">{$oDocument->getTitleText($widget_info->subject_cut_size)}</a>
<!--@end-->
style="color:{$widget_info->titles_font_color};
이 부분이 mh_multi.class.php 에서 함수처리한 칼라를 불러오는 부분입니다.
그러니까 제목글을 불러오는데 폰트칼라는 무엇이며, 글자수는 몇글자인지를 info.xml 에서 정한대로 표현하라는 뜻입니다.
원래 여기에다가 칼라를 주고, 위치를 잡고, 크기를 정하는 곳인데, 단점이 변화를 줄려면 직접 소스를 수정해야 합니다.
그래서 뼈대에다가 직접 변화를 줄 수 있게 만들었기 때문에 여기에서 그 곳을 삭제를 해야겠죠. 구지 2개의 옷을 입을 필요는 없으니 말입니다. 삭제하지 않아도 별 문제는 되지 않습니다. 여기의 옷이 안으로 들어가 보이지 않으니까요. 그러나 소스가 많아봤자 좋은게 없으니 삭제합시다.
이렇게 4개의 파일을 변화시키면 위젯설정에서 제목글의 색상을 마음대로 바꿀 수 있습니다.
이것의 단점이라면 글에 마우스over시 또는 클릭시 변화를 줄 수 없다는 것입니다.
소스의 아래 a:hover를 해서 소스를 주어도 그 소스가 먹지를 않더군요, 그건 왜 그런지는 잘 모르겠습니다.
이상으로 오늘의 내용을 마칩니다.
근데 제목글 색깔하나 바꾸기 위해서 이렇게 많은 일을 해야 하나요? 라고 물으시면
이렇게 길게 제가 제목글자색 하나 바꾸기 위해서 글을 적은 것이 아니라는 것은 초등학생이 아니면 알 수 있겠지요.
어떻게 생각하느냐는 그건 전적으로 당신 생각의 몫입니다.
당신이 어떻게 하던 그건 당신의 선택이니까요. 당신은 소증하니까요~~~~.
그럼 다음에 봐요.....
다 만들어진 업데이트 받으러 가기
그냥 제가 부족해서 한 말인데, 이렇게 자세한 설명까지 해주시니 힘을 내어
저도 열심히 한번 배워 보렵니다.
스승님의 은혜에 보답하기 위해서....ㅎㅎㅎ