[관리자 메뉴설정] 다국어버전 추가 메뉴 설정 정보
레이아웃 [관리자 메뉴설정] 다국어버전 추가 메뉴 설정첨부파일
테스트한 버전5.4.2
호환 가능 버전5.3 이상
본문
다국어버전의 메뉴를 따로 영문으로 해야하는경우 필요해서 만들어 보았습니다.
전체조건
$g5['menu_table'] 테이블을 하나를 테이블 복사
관리자에서 해당 위치로 들어가면 자동테이블 create 됩니다.
$g5['menu_table_en']
/data/dbconfig.php 에 추가해야할 부분
$g5['menu_table'] = G5_TABLE_PREFIX.'menu'; // 메뉴관리 테이블
$g5['menu_table_en'] = G5_TABLE_PREFIX.'menu_en'; ==> 추가한 부분
/admin/admin.menu100.php 에 메뉴 추가
array('100290', '메뉴설정', G5_ADMIN_URL.'/menu_list.php', 'cf_menu', 1),
array('100291', '메뉴설정(영문)', G5_ADMIN_URL.'/menu_list_en.php', 'cf_menu', 1),
/lib/get_data.lib.php 함수 추가
function get_menu_db_en($use_mobile=0, $is_cache=false){
global $g5;
static $cache = array();
$cache = run_replace('get_menu_db_cache', $cache, $use_mobile, $is_cache);
$key = md5($use_mobile);
if( $is_cache && isset($cache[$key]) ){
return $cache[$key];
}
$where = $use_mobile ? "me_mobile_use = '1'" : "me_use = '1'";
if( !($cache[$key] = run_replace('get_menu_db', array(), $use_mobile)) ){
$sql = " select *
from {$g5['menu_table_en']}
where $where
and length(me_code) = '2'
order by me_order, me_id ";
$result = sql_query($sql, false);
for ($i=0; $row=sql_fetch_array($result); $i++) {
$row['ori_me_link'] = $row['me_link'];
$row['me_link'] = short_url_clean($row['me_link']);
$cache[$key][$i] = $row;
$sql2 = " select *
from {$g5['menu_table_en']}
where $where
and length(me_code) = '4'
and substring(me_code, 1, 2) = '{$row['me_code']}'
order by me_order, me_id ";
$result2 = sql_query($sql2);
for ($k=0; $row2=sql_fetch_array($result2); $k++) {
$row2['ori_me_link'] = $row2['me_link'];
$row2['me_link'] = short_url_clean($row2['me_link']);
$cache[$key][$i]['sub'][$k] = $row2;
}
}
}
return $cache[$key];
}
이후 프론트에서 함수 호출하여 사용
<ul class="gnb_ul">
<?php
$menu_datas = get_menu_db_en(0, true);
$gnb_zindex = 999; // gnb_1dli z-index 값 설정용
$i = 0;
foreach( $menu_datas as $row ){
if( empty($row) ) continue;
$add_class = (isset($row['sub']) && $row['sub']) ? 'gnb_al_li_plus' : '';
?>
<li class="gnb_li">
<h2>
<a href="<?php echo $row['me_link']; ?>" target="_<?php echo $row['me_target']; ?>" class="menu01" title="회사소개">
<?php echo $row['me_name'] ?>
</a>
</h2>
<?php
$k = 0;
foreach( (array) $row['sub'] as $row2 ){
if( empty($row2) ) continue;
if($k == 0)
echo '<ul class="gnb_sub">'.PHP_EOL;
?>
<li class="gnb_2dli">
<a href="<?php echo $row2['me_link']; ?>" target="_<?php echo $row2['me_target']; ?>">
<?php echo $row2['me_name'] ?>
</a>
</li>
<?php
$k++;
} //end foreach $row2
if($k > 0)
echo '</ul>'.PHP_EOL;
?>
</li>
<?php } ?>
</ul>
!-->!-->!-->!-->
추천
7
7
댓글 전체
좋은 팁 감사 합니다.
설명 내용대로 내용 추가 뒤 관리자 모드에서 새로 생성된 메뉴설정(영문) 항목에서 메뉴 추가를 클릭시 menu_form_en.php 파일이 없다고 하는데 기존 menu_form.php 파일 복사 후 이름 변경 뒤에 사용해도 되나요?
네 사용해보시고 안되시면 말씀주시면 체크해드리겠습니다. 감사합니다.
소스 감사합니다.
안녕하세요. 완전 초보인데 말씀하신
$g5['menu_table'] 테이블을 하나를 테이블 복사
이부분이 디비에서 하는 부분인가요? 지금 해보려고 하는데
디비접속하니 g5_menu만 보여서 죄송하게 질문드립니다!
감사합니다.
위에 설명대로 순서대로 따라 하시면 자동으로 생성됩니다.
감사합니다.
감사합니다~~
제가 찾던거네요 ㅎㅎ 감사합니다.