웹마스터 팁

게시판 모듈에 스킨을 카테고리별 혹은 특정회원별로 구분하여 변경하게 하는 팁입니다.

이 팁은 애드온상에서는 도저히 $this->module_info->skin 을 수정할 수 없어서 꼼수로 했는데요.
(수정은 되는데 내부모듈에서 자기가 불러올 내용으로 수정해서 못불러오겠더라고요.)


zbxe/index.php 에 아래의 내용을 추가해주세요.
    /**
     * @brief ModuleHandler 객체를 생성/ 실행
     *
     * 모듈 핸들러는 Request Argument를 바탕으로 모듈을 찾아서\n
     * 객체를 생성하고 기본 정보를 setting 해준다.\n
     * ModuleHandler는 이 외에도 설치가 되어 있는지에 대한 체크를\n
     * 하여 미설치시 Install 모듈을 실행하도록 한다\n
     * 그리고 해당 모듈을 실행후 컨텐츠를 출력한다\n
     **/
    $oModuleHandler = new ModuleHandler();
    $oModuleHandler->init();
    include("./경로/change_skin.php"); // 이 사이에 여기를 추가해주세요.
    $oModule = &$oModuleHandler->procModule();
    $oModuleHandler->displayContent($oModule);

그리고 아래의 내용을 적당한 파일명으로 만드세요(파일 첨부도 해드리겠습니다.)
if(!defined("__ZBXE__")) exit();
if(Context::getRequestMethod()=="XMLRPC") return;
if(Context::get('module') == 'admin') return; // 관리자 페이지면 수행 중단

$get_skin->anime_document930largeden3 = array(
    "skin" => "anime_guestbook",
    "layout_srl" => "3452", //번호로 입력
    "search_list_count" => "1",
    "page_count" => "1",
);

// 멤버 그룹구하기 ( 그룹이 여러개일 경우 제일 마지막 정보로 저장 됨 )
if($logged_info){
    $get_MemberModel = &getModel('member');
    $get_group_list = $get_MemberModel->getMemberInfoByUserID($logged_info->user_id);

        foreach($get_group_list->group_list as $key => $val){
            $get_group_srl = $key;
        }
}

// 필요한 값을 불러오기위한 변수 정리
$get_proc .= Context::get('mid');
$get_proc .= Context::get('category');
$get_proc .= $logged_info->user_id;
$get_proc .= $get_group_srl;

// 불러온 정보가 있다면 정보 변경
if(count($get_skin->{$get_proc}) > 0){
    foreach($get_skin->{$get_proc} as $key => $val){
        $oModuleHandler->module_info->{$key} = $val;
    }
}


설명1:
$get_skin->anime_document930largeden3 = array(
    "skin" => "anime_guestbook",
    "layout_srl" => "3452", //번호로 입력
    "search_list_count" => "1",
    "page_count" => "1",
);

언어 파일과 비슷한 형식으로 만들었습니다.

$get_skin->모듈명카테고리번호회원번호그룹 등 원하시는 이름을 연달아 나열해주세요.
(언어 파일 만들듯이 여러개의 조건을 만들고 바꿀정보 내용을 추가하세요)

설명2.
$get_proc .= Context::get('mid');
$get_proc .= Context::get('category');
$get_proc .= $logged_info->user_id;
$get_proc .= $get_group_srl;

연달아 적어주신 이름을 찾기위해 설명2와 같은 형식으로 변수를 추가해줍니다.
(※ 변수 순서는 바꿀 수 있으며 $get_skin에 연달아 나열하는 순으로 변수 순서를 정해주세요.)
(※ 사용하지 않거나 추가로 사용할 비교대상이 있을 경우 추가해주세요.)

설명3.
// 불러온 정보가 있다면 정보 변경
if(count($get_skin->{$get_proc}) > 0){
    foreach($get_skin->{$get_proc} as $key => $val){
        $oModuleHandler->module_info->{$key} = $val;
    }
}
비교조건 조합문과 같은 변수명이 있다면 설정했던 내용으로 수정합니다.

참조.

$oModuleHandler 변수가 가지고 있는 값들입니다.
비교할 것과 수정할 것을 찾으셔서 적절히 활용하세요.
/*
module_srl=58
module=board
module_category_srl=1024
layout_srl=919
menu_srl=0
mid=anime_document
skin=anime_board
browser_title=xxx
description=
is_default=N
content=
open_rss=Y
header_text=
footer_text=
regdate=20080407130220
body=
use_category=Y
order_target=update_order
order_type=asc
list_count=7
search_list_count=7
except_notice=Y
consultation=N
admin_mail=
page_count=5
extra_vars=Array
default_style=webzine
display_login_info=N
display_setup_button=Y
title=xxx
sub_title=xxx 글들 입니다.
comment=xxx에 작성된 글 내용을 표시 합니다.
notice_view=N
list_view=N
comment_view=Y
display_number=N
display_author=Y
display_regdate=N
display_readed_count=Y
display_voted_count=Y
display_last_update=Y
comment_count=7
thumbnail_type=ratio
grants=Array
admin_id=Array
*/



ps :
이거 $this->module_info->skin 만 애드온에서 먹었으면 애드온으로 만들면 좋을텐데
제가 잘 모르는지 애드온에서 바꿔치기가 안되네요...

파일은 아래에 첨부하겠습니다.
(첨부파일은 주석처리 해 놓겠습니다. 꼭 한번 소스들여다 보고 수정해주세요)

ps2 :
관리자 페이지 처리 부분에 대해서 추가했습니다.
제목 글쓴이 날짜
1.7.5에서 추가된 게시물당 최신댓글 불러오기 스킨에서 활용법 [2] file mAKEkr 2014.05.20
Draggable Captcha System for XE1.7.5 Member Module (QapTcha) [7] file 우진홈 2014.05.21
메뉴가 많을때 레이아웃 쉽게 변경하기 웹빌드ver2 2014.05.23
사용자정의에서 날짜형의 경우, 달력의 년수 선택범위를 늘리는 방법 sejin7940 2014.05.24
윈도에서 버츄얼박스 실행 시에 작업표시줄에 보이지 않게 하기 hyun 2014.05.26
유저가 자신의 회원정보 전체를 공개/비공개 설정하게 하는 방법 [2] sejin7940 2014.05.27
홈페이지에 접속한 장치의 너비 구하기 [3] CosignStudio 2014.05.28
게시판 comment 스타일 수정 웹빌드ver2 2014.05.30
[1초팁] Google Fonts의 폰트파일이 XE템플릿 문법으로 불러와지지 않을때 mAKEkr 2014.05.31
PHP에서 Socket.IO 서버로 요청 보내기 [3] 이즈야 2014.06.01
마이피플봇을 이용한 마이피플 알리미 (푸시서비스) 이용하기 [4] garnecia 2014.06.01
회원정보에서 '서명' 수정이 반영되지 않을 경우 Novelic 2014.06.03
에디터에서 나눔고딕 웹폰트, 기본글꼴로 적용하기(구글API이용) [6] file 애니즌 2014.06.06
XHTML 과 CSS 오류검사를 해주는 사이트 입니다. 디테일 2014.06.07
윈도우7/8에서네임서버 운영 POSTZI 2014.06.08
Google Public DNS 강제 Flush Cache 하기 AJKJ 2014.06.08
이거 어디다 올려야 될 지 몰라 여기다 올립니다. 프로그래머님들 읽어보세요. [2] 유샤인 2014.06.10
레이아웃에 배경이미지 업로드 하고 적용시키기 [1] 웹빌드ver2 2014.06.10
익명게시판에서 관리자가 글 수정시 글의 권한이 넘어가지 않도록 하기. [5] 소시덕분에힘받아요 2014.06.11
htm과 html의 차이는 ? 디테일 2014.06.17