theme.config.php 에서 db 업데이트를 하려고 합니다.
본문
[배경]
하나의 그누보드에 있는 게시판을 테마별로 각각의 스킨으로 불러오게 하고 싶습니다.
예) g5_write_notice 라는 게시판을 A라는 테마에서는 theme/basic으로 B라는 테마에서는 theme/gallery으로 불러오게 하려고 합니다.
이렇게 하기 위해서는 제일 좋은 위치가 theme.config.php 라고 생각했는데 이 글을 쓰다보니 theme/lib 폴더에 파일을 하나 만들어서 테마 미리보기가 아닐 때 index.php 에서 한번만 불러오게 해도 되겠다는 생각이 드네요.
[방법]
우선 g5_write_notice의 스킨이 theme/basic인지 확인하고 아니라면 해당 게시판을 theme/basic 스킨으로 db에서 업데이트시킨다
이렇게 하면 될 것 같은데 맞는지 잘 모르겠네요.
[생각해본 소스]
우선 g5_board 테이블에서 해당 notice가 있는 행을 찾아 맞는지부터 검색한다
SELECT * FROM `g5_board` WHERE `bo_table` = 'notice'
요녀석을 사용해야 하는 것 같습니다.
이 행에서 bo_skin 값이 theme/basic이 아니라면
=> 이 부분은 어떻게 해야 하는지 잘 모르겠습니다.
theme/basic으로 해당 행을 업데이트 한다.
$sql = " UPDATE g5_write_notice
set bo_skin = 'theme/basic' ";
sql_query($sql, true);
요렇게 하면 업데이트되는 것 같습니다.
그래서 생각해본 방법이 아래와 같습니다.
<?php
$sql = "SELECT * FROM `g5_board` WHERE `bo_table` = 'notice' AND `bo_skin` = 'theme/basic' ";
$msql = sql_fetch($sql);
if (!$msql) {
$sql2 = " UPDATE `g5_board`
set bo_skin = 'theme/basic'
WHERE `g5_board`.`bo_table` = 'notice' ";
sql_query($sql2, true);
}
?>
이렇게까지 생각을 정리해봤는데요..
이걸 생각대로 정리할 수 있는 능력을 주질 않으셨습니다.
고수님들 보시기에
1. 이렇게 정리하는게 맞는지
2. 이걸 어떻게 간단하게 만들 수 있는지
도움을 부탁드립니다.
답변 1
A라는 테마와 B라는 테마가 공존하는 형태라면
A라는 테마 보는 사람과 B라는 테마 보는 사람에 따라 계속 DB 업데이트가 생기니
해당 방식은 좋지 않고
관리자단에서 테마변경시에 일어나는 경우면 테마선택 업데이트 파일쪽에다가 처리 하면 될 듯 하고.
요런 파일을 만들어서 DB에 입력된 값과 무관하게 뿌려주는 방법도 있을 것 같네요.
/extend 폴더 안에다가 파일이름은 대충 만들어서.
(extend폴더안에 있는 파일은 모든 페이지에서 자동으로 불러옵니다)
<?php
if($board) {
if($config['cf_theme'] == "테마이름") {
if($bo_table == "게시판아이디") {
$board['bo_skin'] = 'theme/basic';
$board['bo_mobile_skin'] = 'theme/basic';
}
} else if($config['cf_theme'] == "테마이름") {
if($bo_table == "게시판아이디") {
$board['bo_skin'] = 'theme/gallery';
$board['bo_mobile_skin'] = 'theme/gallery';
}
}
if (G5_IS_MOBILE) {
$board_skin_path = get_skin_path('board', $board['bo_mobile_skin']);
$board_skin_url = get_skin_url('board', $board['bo_mobile_skin']);
} else {
$board_skin_path = get_skin_path('board', $board['bo_skin']);
$board_skin_url = get_skin_url('board', $board['bo_skin']);
}
}
?>
답변을 작성하시기 전에 로그인 해주세요.