테스트 사이트 - 개발 중인 베타 버전입니다

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

masahide 2년 전 조회 2,411

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

 

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

 

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

 

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

 

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

 

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

 

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

 

댓글을 작성하려면 로그인이 필요합니다.

답변 5개

채택된 답변
+20 포인트
플라이
2년 전

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

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

m
masahide
2년 전
친절하신 답변 감사합니다.
그냥 불가능하다고 생각하는게 편하겠네요...^^

댓글을 작성하려면 로그인이 필요합니다.

DB 계정만 공유해도

 훨씬 펀하실 겁니다.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

m
masahide
2년 전
네. 그렇게 사용해 봐야겠습니다.
친절하신 답변 감사합니다.

댓글을 작성하려면 로그인이 필요합니다.

들레아빠

/1, /2, ~

common.php

</p>

<p>// 테마경로

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';</p>

<p>

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

</p>

<p><?php</p>

<p>function find_common_php() {

    $current_dir = dirname(__FILE__);

    $parent_dir = "../";

    $count = 0;</p>

<p>    while (!file_exists($current_dir . "/common.php")) {

        $current_dir = dirname($current_dir);

        $count++;</p>

<p>        if ($current_dir === '/' || $current_dir === '.') {

            break;

        }

    }

    return $count;

}</p>

<p>$up_count = find_common_php();

$include_path = str_repeat('../', $up_count) . 'common.php';

include_once($include_path);</p>

<p> </p>

<p>define('_INDEX_', true);

if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가</p>

<p>if(defined('G5_THEME_PATH')) {

    require_once(G5_THEME_PATH.'/index.php');

    return;

}</p>

<p>if (G5_IS_MOBILE) {

    include_once(G5_MOBILE_PATH.'/index.php');

    return;

}</p>

<p>include_once(G5_PATH.'/head.php');</p>

<p>

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

로그인 후 평가할 수 있습니다

답변에 대한 댓글 6개

m
masahide
2년 전
시간내주셔서 정말 감사합니다.
제가 뭘 잘못 적용했는지는 모르겠지만 알려주신대로 설정해보니 404 Not Found 가 나오네요.
들레아빠
2년 전
/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';
m
masahide
2년 전
common.php
알려두신대로 설정 한 후

각 테마 index.php 상단
[code]
<?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');
?>
[/code]

대신

[code]
<?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');
?>
[/code]
이렇게 넣는게 맞는거지요?

이렇게 하고,
도메인/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
이렇게 나오고요.

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

감사합니다.
들레아빠
2년 전
각 테마는 손을 대지 마세요.
/1, /2 에 index.php를 위에 처음 알려드린 index.php내용을 만들어서 각각 올리면 됩니다.
라라곤도 되어야 합니다.
#/1,/2에는 여기서 만든 index.php만 있어야 됩니다.
m
masahide
2년 전
아....
1, 2 폴더를 만 든 후
거기에 index.php 파일을 새로 만들어 알려주신 내용을 넣으라는 말씀이네요.
다시 한번 해보겠습니다.
감사합니다.
m
masahide
2년 전
알려주신대로 하니 테마별로 나오는거 성공했습니다.
그런데, 인덱스 페이지만 테마별로 나오고,
인텍스 화면에서 메뉴나 최신글의 내용을 클릭하면 메인 도메인의 내용으로 연결이 되네요.
혹시나 해서 메뉴의 링크를 도메인/1/... 이런 식으로 변경해 봤더니 404 나오고,
아마도 링크나 서브페이지까지 적용은 어려운거 같습니다.
그래도 덕분이 많은거 배웠습니다.
감사합니다.

댓글을 작성하려면 로그인이 필요합니다.

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

 

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

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

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

 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

멀티트리플
2년 전
심심하시면 https://open.kakao.com/o/gzNuQjhe 오프채팅방 놀러오세요
제가 아는 한도내에선 답변드릴꼐용
m
masahide
2년 전
친절하신 답변 감사합니다.
지금 이것저것 해보다가 제 능력 밖의 일인듯해서 그냥 그대로 사용하는게 정신 건강에 좋을거 같다는 생각이 들었습니다...^^

댓글을 작성하려면 로그인이 필요합니다.

복스리
2년 전

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

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

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

 

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

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

m
masahide
2년 전
친절하신 답변 감사합니다.
그냥 불가능하다고 생각하고 기존 방식대로 사용해야겠네요...^^

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인