사이트 안에 디렉터리 생성 후 다른 사이트 제작 채택완료
A 사이트가 있고, 관련된 B 사이트를 A 사이트 안에 제작하려고 합니다
A, B 과 연관된 사이트지만 디자인이 전혀 다른 사이트 입니다
head.php, tail.php, index.php 파일이 달라져야하는 상황입니다
코어파일을 최대한 건드리지 않으려고 하고,
brand 디렉터리 하나 생성해서 head.php, tail.php 파일도 생성하고,
extend 에 파일하나 생성해서
</p>
<p>define('G5_BRAND_DIR', 'brand');
define('G5_BRAND_URL', G5_URL.'/'.G5_BRAND_DIR);
define('G5_BRAND_PATH', G5_PATH.'/'.G5_BRAND_DIR);</p>
<p>
이렇게 추가하고,
/brand/b/index.php 파일에다가
</p>
<p>define('_BRAND_', true);</p>
<p>
로 설정해주고, 루트에 있는 head, index, tail 에
</p>
<p>if( defined('_BRAND_') ) {
require_once(G5_BRAND_PATH.'/index.php'); // head 엔 head, tail 엔 tail
return;
}</p>
<p>
을 설정해놨습니다.
그런데 도메인/brand/b 를 접속하면 index 파일만 불러오고, head/tail 을 불러오질 않습니다;;
brand/b/index.php 파일을
</p>
<p><?php
include_once('../../_common.php');</p>
<p>define("_INDEX_", TRUE);
define('_BRAND_', true);</p>
<p>include_once(G5_PATH.'/head.php');
?></p>
<p>브랜드메인</p>
<p><?php
include_once(G5_PATH.'/tail.php');</p>
<p>
이렇게 해놓았는데... 뭐가 잘못됐고 어떻게 불러와야 /brand/b 페이지를 기본 사이트와 다르게 구현할 수 있나요..??
답변 2개
* extend 파일
</p>
<p>// 브랜드 기본 경로 정의
define('G5_BRAND_DIR', 'brand');
define('G5_BRAND_URL', G5_URL.'/'.G5_BRAND_DIR);
define('G5_BRAND_PATH', G5_PATH.'/'.G5_BRAND_DIR);</p>
<p> </p>
<p>// 현재 브랜드 감지
$request_uri = $_SERVER['REQUEST_URI'];
$pattern = '/\/'.G5_BRAND_DIR.'\/([^\/]+)/';</p>
<p>if (preg_match($pattern, $request_uri, $matches)) {
define('G5_CURRENT_BRAND', $matches[1]); // 브랜드명 (b, c 등)
define('G5_CURRENT_BRAND_PATH', G5_BRAND_PATH.'/'.G5_CURRENT_BRAND);
define('G5_CURRENT_BRAND_URL', G5_BRAND_URL.'/'.G5_CURRENT_BRAND);
define('_BRAND_', true);
}</p>
<p>
* /index.php, head.php, tail.php
</p>
<p>if ( defined('_BRAND_') ) {
include_once(G5_CURRENT_BRAND_PATH.'/index.php');
return;
}</p>
<p>
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
아래의 내용을 한번 참고를 해보시겠어요..
1. extend 파일 수정하기
// extend/brand.extend.php
define('G5_BRAND_DIR', 'brand');
define('G5_BRAND_URL', G5_URL.'/'.G5_BRAND_DIR);
define('G5_BRAND_PATH', G5_PATH.'/'.G5_BRAND_DIR);
// URL에서 brand/b가 포함되어 있는지 검사
if (strpos($_SERVER['REQUEST_URI'], '/'.G5_BRAND_DIR.'/b/') !== false) {
define('_BRAND_', true);
}
2. 루트 head.php 수정
<?php
// 상단에 추가
if (defined('_BRAND_')) {
include_once(G5_BRAND_PATH.'/b/head.php');
return;
}
// 기존 코드
// ...
?>
3. 루트 tail.php 수정
<?php
// 상단에 추가
if (defined('_BRAND_')) {
include_once(G5_BRAND_PATH.'/b/tail.php');
return;
}
// 기존 코드
// ...
?>
4. /brand/b/index.php 수정
<?php
include_once('../../common.php');
define("_INDEX_", TRUE);
// define('_BRAND_', true); 이 부분은 extend 파일에서 이미 정의됨
// 브랜드 전용 메인 컨텐츠
?>
<!-- 메인 컨텐츠 -->
브랜드메인
<!-- /메인 컨텐츠 -->
<?php
// 따로 include_once를 호출하지 않아도 됨 - 자동으로 head.php와 tail.php가 적용됨
?>
5. /brand/b/head.php 생성
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
// 브랜드 전용 head 내용
?>
<!doctype html>
<html lang="ko">
<head>
<meta charset="utf-8">
<title>브랜드 B 사이트</title>
<!-- 브랜드 전용 스타일시트 및 JS -->
<link rel="stylesheet" href="<?php echo G5_BRAND_URL; ?>/b/css/style.css">
</head>
<body>
<!-- 브랜드 전용 상단 메뉴 -->
<header>
<h1>브랜드 B 사이트</h1>
<nav>
<!-- 브랜드 전용 메뉴 -->
</nav>
</header>
<div id="main">
6. /brand/b/tail.php 생성
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
// 브랜드 전용 tail 내용
?>
</div><!-- /main -->
<footer>
<!-- 브랜드 전용 푸터 -->
<p>© <?php echo date('Y'); ?> 브랜드 B 사이트</p>
</footer>
</body>
</html>
1. 사용자가 /brand/b/ 경로로 접속하면, extend/brand.extend.php 파일에서 BRAND 상수가 정의됩니다.
2. 그 후 common.php가 로드되고, 루트의 head.php와 tail.php가 호출될 때 BRAND 상수를 확인하여 브랜드 전용 파일로 대체합니다.
답변에 대한 댓글 2개
/brand/head.php
/brand/tail.php
/brand/b/index.php
brand 디렉터리에는 이렇게 존재하고 b 말고도 c, d가 생길 것을 고려해서 head, tail 을 include 해서 사용하려고 head tail 은 brand 디렉터리에 둔 상태입니다.
우선 제가 작성한 방법과 알려주신 수정방법과는 다르게 강제로 불러오는(?) 방식으로 불러오게는 해놓은 상태입니다ㅠ
/brand/head.php 루트 head 를 가져옴
[code]
<?php
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
$q = isset($_GET['q']) ? clean_xss_tags($_GET['q'], 1, 1) : '';
include_once(G5_PATH.'/head.sub.php');
include_once(G5_LIB_PATH.'/latest.lib.php');
include_once(G5_LIB_PATH.'/popular.lib.php');
?>
<div id="skip_to_container"><a href="#container">본문 바로가기</a></div>
<header id="header">
브랜드 헤더
</header>
<?php
$wrapper_class = array();
$wrapper_class[] = defined('_INDEX_') ? 'main' : 'sub';
if( defined('G5_IS_COMMUNITY_PAGE') && G5_IS_COMMUNITY_PAGE ){
$wrapper_class[] = 'is_community';
}
?>
<div id="wrapper" class="<?php echo implode(' ', $wrapper_class); ?>">
<div id="container">
<?php
$content_class = array('shop-content');
if( isset($it_id) && isset($it) && isset($it['it_id']) && $it_id === $it['it_id']){
$content_class[] = 'is_item';
}
if( defined('IS_SHOP_SEARCH') && IS_SHOP_SEARCH ){
$content_class[] = 'is_search';
}
if( defined('_INDEX_') && _INDEX_ ){
$content_class[] = 'is_index';
}
if( $bo_table ) {
$content_class[] = 'is_board';
}
?>
<section class="<?php echo implode(' ', $content_class); ?>">
[/code]
/brand/tail.php 루트 tail 을 가져옴
[code]
<?php
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
if(defined('G5_THEME_PATH')) {
require_once(G5_THEME_SHOP_PATH.'/shop.tail.php');
return;
}
$admin = get_admin("super");
// 사용자 화면 우측과 하단을 담당하는 페이지입니다.
// 우측, 하단 화면을 꾸미려면 이 파일을 수정합니다.
?>
</section>
</div>
</div>
<footer id="footer">
브랜드 푸터
</footer>
<?php
$sec = get_microtime() - $begin_time;
$file = $_SERVER['SCRIPT_NAME'];
if ($config['cf_analytics']) {
echo $config['cf_analytics'];
}
?>
<script src="<?php echo G5_JS_URL; ?>/sns.js"></script>
<!-- } 하단 끝 -->
<?php
include_once(G5_PATH.'/tail.sub.php');
[/code]
/brand/b/index.php 강제로 헤더 푸터 불러옴
[code]
<?php
include_once('../../common.php');
define("_INDEX_", TRUE);
define('_BRAND_', true);
include_once('../head.php');
?>
브랜드 메인
<?php
include_once('../tail.php');
[/code]
우선은 이런식으로 해서 불러와지게는 해놓은 상태인데, 알려주신 방법은 내일 한 번 진행해봐야겠네요;;
빠른 답변 감사드립니다! 좋은 하루 되세요! :)
마르스컴퍼니 님의 답변을 채택드렸습니다
먼저 답변 주셨음에도 채택드리지 못한 점 죄송합니다ㅠ
좋은 하루 되세요!
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
제가 구현하고 싶었던 방법이었습니다ㅠㅠ
한번에 해결 되었습니다!
좋은 하루 되세요!