위와 같은 작업을 하기 위한 질문이 있어서 제가 구현한 방법을 글로 작성해 봅니다.
게시판 스킨 read.html 에 버튼을 만들고 스킨에서 해당 클릭을 감지해서 사용자정의 값을 바꾸는 작업을 하게 하거나 게시판 스킨에 버튼을 만들고 애드온에서 사용자정의 값을 바꾸는 작업을 하게 하거나 할 수 있을 겁니다. 두가지 모두 해 봤습니다.
애드온에서 처리해 주는 방식으로는
스킨에 버튼에
<a href="{getUrl('','click_check', 'ok', 'document_srl', $oDocument->document_srl , 'member_srl', $logged_info->member_srl)}">버튼</a>
이렇게 만들었습니다. 저는 클릭한 사람 회원번호가 필요해서 위와 같이 했구요.
click_check 를 건네 받기 위해 위 변수 값 ok 를 할당 했구요.
애드온에서는 저렇게 페이지가 이동되어 게시글이 다시 읽혀질때
조건을 Context::get('click_check') != 'ok' 리턴 되도록 짜서 ok 값을 가질때 아래 사용자정의 값 변경 진행.
$args->value = '종료'; // 이건 원하시는 값으로
$args->lang_code = Context::get('lang_type');
$args->eid = 'state'; // 이것도 만드신 값으로
$args->module_srl = $oDocument->get('module_srl');
$args->document_srl = $oDocument->document_srl;
$args->var_idx = 2; // 이건 사용자정의 값 순서는 확인해서 사용하셔야...
executeQuery('document.updateDocumentExtraVar', $args);
이렇게 클릭되면 사용자정의가 입력되도록 했습니다.
애드온에서 받아서 처리하지 않고 그냥 스킨에 넣어도 작동을 잘 할겁니다.
템플릿에서도 조건문 php 모두 사용 가능하니까 똑같이 해도 잘 작동할 것 같습니다.
애드온에서 말고 스킨에 직접 넣어준다면
<!--@if(Context::get('click_check') == 'ok')-->
{@
$args->value = '종료'; // 이건 원하시는 값으로
$args->lang_code = Context::get('lang_type');
$args->eid = 'state'; // 이것도 만드신 값으로
$args->module_srl = $oDocument->get('module_srl');
$args->document_srl = $oDocument->document_srl;
$args->var_idx = 2; // 이건 사용자정의 값 순서는 확인해서 사용하셔야...
executeQuery('document.updateDocumentExtraVar', $args);
}
<!--@end-->
이정도 될 것 같네요.
* 위 예시는 기본값을 가지는 사용자정의에서 버튼으로 값을 변경하는 예시 이므로 기본값을 가지지 않은 사용자정의에서는
사용자정의 값을 불러와서 비어 있다면
executeQuery('document.insertDocumentExtraVar', $args);
를 사용하고 값이 있다면
executeQuery('document.updateDocumentExtraVar', $args);
를 사용하도록 코드를 조금 더 추가해야 할 것 입니다.