묻고답하기
위젯개발하는데 템블릿 쪽에서 영 이해가 안됩니다.
2009.10.15 00:47
하하하... 걍 심심풀이로 소모임 사이트에서 간단한 위젯을 개발하는데 참 난감합니다.
분명 개인적으로 만들면 쉽게 구현할수 있지만 XE의 그놈의 클래스들과 여러 템블릿 비롯한 웹표준등등 익히는데 참힘들더군요.
점심엔 xml utf-8로 저장안해서 삽질하고 ㅋㅋㅋ 아 잡담은 그만두고요.
위젯 개발순서가
1. ../conf/info.xml 작성
2. ../위젯이름.class.php 작성
3 ../skins/xxxx/위젯이름.html 작성
대충 이런식인 것 같은데 3번부터 문제입니다.
위젯을 추가했으면 템블릿의 내용이 나와야 하는데 빈칸만 쑤욱 나오고 개발가이드보니 템블릿에 대한 설명이 영 부족한것 같습니다.
아래는 최근문서 출력 템블릿을 가져온건데 이해안되는게 한둘이 아닙니다.
1. <div class="newest_document_default_box">의 newest_document_default_box는 개발자 임의로 정해도 되는것인가요?
2. class.php 및 info.xml에서 썼던 확장변수를 템블릿에서 어떻게 활용하나요?
3. $oDocument->getPermanentUrl() 이런식으로 $oDocument는 상속된 클래스에서 나온건가요? 그렇다면 $oDocument말고 다른 객체들이 무궁무진하게 많을것 같은데 이런 정보가 자세히 나온 것이 없나요?
4. html파일에 밑과같은 내용을 저장하고 필연하고 html파일에 마구잡이로 내용을 집어넣어도 위젯추가를 누르면 아무것도 안나옵니다
<div class="newest_document_default_box">
제발좀결과좀나와랑~~
<div class="document_box">
<div class="document">
<a href="./{$oDocument->getPermanentUrl()}#{$oDocument->getCommentCount()}">{$oDocument->getTitle($widget_info->subject_cut_size)}</a>
{$widget_info->total_title}
<!--@if($oDocument->getCommentCount())-->
<span class="comment"><a href="./{$oDocument->getPermanentUrl()}#comment">*{$oDocument->getCommentCount()}</a></span>
<!--@end-->
<span class="writer">
- {$oDocument->getNickName()}
</span>
{$oDocument->printExtraImages($widget_info->duration_new)}
</div>
<div class="regdate">{$oDocument->getRegdate("Y-m-d")}</div>
</div>
</div>
그럼 답변 부탁드립니다(__)
빈칸만 나오는건 템플릿 파일을 로딩하지 않으신 것 같은데요.
말씀하신 class.php 파일 마지막 부분에
이런식으로 되어있는지요.
1. 네
2. 확장변수는 $args 란 변수에 만들어 집니다. info.xml에서 id를 abc 라고 만들었다면 $args->abc 에 해당 값이 들어가게 되지요.
class.php 소스 중간 아무대나 echo print_r($args); 라고 찍으시면 $args에 저장되어있는 변수 목록이 나오게 됩니다.(제대로 볼려면 소스보기를 하셔야 잘 보입니다.) 보여주는 명령어는 많습니다.
2.1 물어보신게 스킨템플릿에서 활용하시는 것 같으셔서 추가로 적습니다.
class.php 보시면 Context::set('widget_info', $widget_info); 이런거 있으시죠.
Context::set('args', $args); 를 하나 더 추가하신 후 템플릿에서 $args 로 사용하시면 됩니다.
3. http://doc.xpressengine.com/ 참조하세요.
4. 코드생성 이야기하시는거지요? 해당 문제는 스킨 소스와 관련이 없습니다.
스킨폴더안에 있는 skin.xml 파일이나 info.xml의 형식이 잘 못 되었을 경우가 그런 문제를 일으키긴 합니다.