한 개의 그누보드로 여러 개의 홈페이지를 세팅할 수 있는 방법이 있을까요?

한 개의 그누보드로 여러 개의 홈페이지를 세팅할 수 있는 방법이 있을까요?

QA

한 개의 그누보드로 여러 개의 홈페이지를 세팅할 수 있는 방법이 있을까요?

본문

안녕하세요.
제가 그누보드5를 이용하여 샘플용 홈페이지를 많이 만드는데, 

 

기존에는 한 개의 계정에
도메인/폴더명1
도메인/폴더명2
...
도메인/폴더명10

 

이런 식으로 폴더마다 그누보드를 다 세팅해서 작업했습니다. 
테이블명은 g5폴더명_ 이런 식으로 입력했고요.

 

그런데
이렇게 하다 보니 용량 사용이 꽤 늘어나고 작업 방법도 비효율적이라는 생각이 들더라고요. 

 

샘플의 특성상, 
홈페이지 구조가 모두 동일합니다. 
생성되는 게시판도 동일하고, 게시판 내 데이터도 동일하고, 
내용 관리로 생성하는 페이지 역시 동일합니다. 

 

단지 디자인만 달라지니 theme안의 내용만 서로 달라지게 됩니다.
css, head, index, tail, 이미지...

 

그래서 
한 개의 그누보드에 theme 별로 다른 홈페이지가 보이게 할 수 있는 방법이 없을까 생각을 해보게 되었습니다.
혹시 방법이 있을까요?


 

이 질문에 댓글 쓰기 :

답변 5

구조랑 틀이 비슷하고 db데이터 구조가 비슷하다면 기능 커스텀해서 구현해야 하는거라 순정으로는 불가한 부분입니다.

/1, /2, ~

common.php


// 테마경로
if(defined('_THEME_PREVIEW_') && _THEME_PREVIEW_ === true)
    $config['cf_theme'] = isset($_GET['theme']) ? trim($_GET['theme']) : '';
    if ($_SERVER['REQUEST_URI'] == '/1/') $config['cf_theme'] = 'basic1';
    else if ($_SERVER['REQUEST_URI'] == '/2/') $config['cf_theme'] = 'basic2';

/1/index.php, /2/index.php


<?php
function find_common_php() {
    $current_dir = dirname(__FILE__);
    $parent_dir = "../";
    $count = 0;
    while (!file_exists($current_dir . "/common.php")) {
        $current_dir = dirname($current_dir);
        $count++;
        if ($current_dir === '/' || $current_dir === '.') {
            break;
        }
    }
    return $count;
}
$up_count = find_common_php();
$include_path = str_repeat('../', $up_count) . 'common.php';
include_once($include_path);
 
define('_INDEX_', true);
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
if(defined('G5_THEME_PATH')) {
    require_once(G5_THEME_PATH.'/index.php');
    return;
}
if (G5_IS_MOBILE) {
    include_once(G5_MOBILE_PATH.'/index.php');
    return;
}
include_once(G5_PATH.'/head.php');

이렇게 하시면 테마가 각각 적용 됩니다.

/theme/에 basic, basic1,~
이렇게 넣으시고
/1/index.php, /2/index.php 이렇게 하신다음
도메인/1, 도메인/2 이렇게 연결해 보세요.
/common.php line 673 // 테마경로
if(defined('_THEME_PREVIEW_') && _THEME_PREVIEW_ === true)
    $config['cf_theme'] = isset($_GET['theme']) ? trim($_GET['theme']) : '';
    if ($_SERVER['REQUEST_URI'] == '/1/') $config['cf_theme'] = 'basic';
        else if ($_SERVER['REQUEST_URI'] == '/2/') $config['cf_theme'] = 'basic1';

common.php
알려두신대로 설정 한 후

각 테마 index.php 상단


<?php
if (!defined('_INDEX_')) define('_INDEX_', true);
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가

if (G5_IS_MOBILE) {
    include_once(G5_THEME_MOBILE_PATH.'/index.php');
    return;
}

if(G5_COMMUNITY_USE === false) {
    include_once(G5_THEME_SHOP_PATH.'/index.php');
    return;
}

include_once(G5_THEME_PATH.'/head.php');
?>


대신


<?php
function find_common_php() {
    $current_dir = dirname(__FILE__);
    $parent_dir = "../";
    $count = 0;
    while (!file_exists($current_dir . "/common.php")) {
        $current_dir = dirname($current_dir);
        $count++;
        if ($current_dir === '/' || $current_dir === '.') {
            break;
        }
    }
    return $count;
}
$up_count = find_common_php();
$include_path = str_repeat('../', $up_count) . 'common.php';
include_once($include_path);
 
define('_INDEX_', true);
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
if(defined('G5_THEME_PATH')) {
    require_once(G5_THEME_PATH.'/index.php');
    return;
}
if (G5_IS_MOBILE) {
    include_once(G5_MOBILE_PATH.'/index.php');
    return;
}
include_once(G5_PATH.'/head.php');
?>

이렇게 넣는게 맞는거지요?

이렇게 하고,
도메인/1
도메인/2
로 접속하면 존재하지 않는 게시판이라고 나오고

도메인/1/
도메인/2/
로 접속하면 404 에러 나오네요.

그냥 도메인만 접속하면,
Warning: include_once(../../common.php): failed to open stream: No such file or directory in C:\laragon\www\theme\basic\index.php on line 17
Warning: include_once(): Failed opening '../../common.php' for inclusion (include_path='.;C:/laragon/etc/php/pear') in C:\laragon\www\theme\basic\index.php on line 17
이렇게 나오고요.

혹시 호스팅이 아니라 제 컴퓨터 라라곤에서 작업해서 이런건지 몰라 호스팅에 올려서 다시한번 테스트 해보겠습니다.

감사합니다.

각 테마는 손을 대지 마세요.
/1, /2 에 index.php를 위에 처음 알려드린 index.php내용을 만들어서 각각 올리면 됩니다.
라라곤도 되어야 합니다.
#/1,/2에는 여기서 만든 index.php만 있어야 됩니다.

알려주신대로 하니 테마별로 나오는거 성공했습니다.
그런데,  인덱스 페이지만 테마별로 나오고,
인텍스 화면에서 메뉴나 최신글의 내용을 클릭하면 메인 도메인의 내용으로 연결이 되네요.
혹시나 해서 메뉴의 링크를 도메인/1/... 이런 식으로 변경해 봤더니 404 나오고,
아마도 링크나 서브페이지까지 적용은 어려운거 같습니다.
그래도 덕분이 많은거 배웠습니다.
감사합니다.

상단과 하단 프레임만 어느정도 맞춰서...

구성은 아이프레임으로 최대한 맞춰보면 어떨가 합니다. 그럼 말씀대로 한개의 그누보드에서 

여러사이트를 바라보도록 구성이 가능할듯합니다.

 

다만..아이프레임을 사용안하고  구성을 한다면 여러가지 제약이 생겨 쉽지 않을것으로 생각됩니다.

제 생각으로는 샘플용이기에 디비쪽은 하나로 통일해서 사용하면 될거 같아서요

 

구분을 서브도메인을 써보는건 어떨까요?

서브도메인 명으로 구분하여 테마명 매칭해서 하시면

테마가 없는 서브도메인일 경우 기본테마로 보내시고

 

DB 계정만 공유해도

 훨씬 펀하실 겁니다.

답변을 작성하시기 전에 로그인 해주세요.
전체 213
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT