메인메뉴 새글 아이콘 출력
본문
안녕하세요
게시판에 새글이 있을 경우 해당 메뉴에 새글 아이콘(icon_new.gif)이 나오게 하려고 합니다.
G5 기준글을 찾기는 했는데 적용이 안되네요...
차이가 있다면
1. 테마를 사용
2. shop.head.php에 적용
이 두가지인데 상관이 있는지는 모르겠네요..
제 코드 남겨놓습니다.
www/lib/new.icon.lib.php
<?php
function tto_new_icon($bo_table) {
global $g5;
$temp = sql_fetch("select bo_new from {$g5['board_table']} where bo_table = '$bo_table'");
$time_set = date("Y-m-d H:i:s", time() - $temp[bo_new] * 60 * 60);
$row = sql_fetch("select wr_id as cnt from {$g5['write_prefix']}$bo_table where wr_is_comment = '0' and wr_datetime > '$time_set'");
if($row[cnt])
echo " new"; // 사용 이미지에 맞게 경로.파일 수정
//echo " <img src='/img/icon_new.gif' alt='' />"; // 사용 이미지에 맞게 경로.파일 수정
}
?>
shop.head.php
include_once(G5_LIB_PATH.'/new.icon.lib.php'); // 추가
<nav id="menu">
<h2>메인메뉴</h2>
<ul>
<?php
$sql = " select *
from {$g5['menu_table']}
where me_use = '1'
and length(me_code) = '2'
order by me_order, me_id ";
$result = sql_query($sql, false);
$gnb_zindex = 999; // gnb_1dli z-index 값 설정용
$menu_datas = array();
for ($i=0; $row=sql_fetch_array($result); $i++) {
$menu_datas[$i] = $row;
$sql2 = " select *
from {$g5['menu_table']}
where me_use = '1'
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++) {
$menu_datas[$i]['sub'][$k] = $row2;
}
}
$i = 0;
foreach( $menu_datas as $row ){
if( empty($row) ) continue;
?>
<li class="menu_1dli">
<a href="<?php echo $row['me_link']; ?>" target="_<?php echo $row['me_target']; ?>" class="menu_1da"><?php echo $row['me_name'] ?> <?php echo tto_new_icon($row2['bo_table']) ?></a>
<?php
$k = 0;
foreach( (array) $row['sub'] as $row2 ){
if( empty($row2) ) continue;
if($k == 0)
echo '<span class="bg"><i class="fa fa-chevron-down"></i></span><ul class="menu_2dul">'.PHP_EOL;
?>
<li class="menu_2dli"><a href="<?php echo $row2['me_link']; ?>" target="_<?php echo $row2['me_target']; ?>" class="menu_2da"><?php echo $row2['me_name'] ?></a></li>
<?php
$k++;
} //end foreach $row2
if($k > 0)
echo '</ul>'.PHP_EOL;
?>
</li>
<?php
$i++;
} //end foreach $row
if ($i == 0) { ?>
<li class="gnb_empty">메뉴 준비 중입니다.<?php if ($is_admin) { ?> <a href="<?php echo G5_ADMIN_URL; ?>/menu_list.php">관리자모드 > 환경설정 > 메뉴설정</a>에서 설정하실 수 있습니다.<?php } ?></li>
<?php } ?>
</ul>
</nav>
아래가 추가된 코드입니다.
<?php echo tto_new_icon($row2['bo_table']) ?>
해결될 수 있는 문제면 좋겠네요 ㅠ
감사합니다.
!-->!-->!-->답변 2
menu 테이블에는 bo_table 칼럼 값이 없습니다.
menu 테이블의 me_link 칼럼에만 게시판 URL 인 경우,
"http://~/bbs/board.php?bo_table=notice" 형태로 들어가 있습니다.
me_link 값을 파싱하여 bo_table 값을 추출하여 넘겨주어야 됩니다.
1.
foreach( $menu_datas as $row ){
if( empty($row) ) continue;
->
foreach( $menu_datas as $row ){
if( empty($row) ) continue;
$parts = parse_url($row['me_link']);
parse_str($parts['query'], $query);
2.
<?php echo tto_new_icon($row2['bo_table']) ?>
->
<?php echo tto_new_icon($query['bo_table']) ?>
$row2 는 for 내부에서만 도는 것 아닌가요?
$row2['bo_table']를 출력해서 정상적으로 출력되는지 확인하십시오