게시판용 오늘본 상품 표현하기 CSS

그누보드 게시판을 활용한 미니샵 같은 곳에서 응용할수 있는 오늘본 상품을 보여주는것입니다.
미리보기 링크1 오른쪽 스크롤링 부분입니다.
역시 간략한 CSS 마크업입니다.

<?php
$token = md5(uniqid(rand(), true));
set_session("ss_token", $token);

$tv_tbl = "toes";// 지정된 제품 테이블일때만 세션생성

if ($bo_table == $tv_tbl)
{
  $saved = false;
  $tv_idx = (int)get_session("ss_tv_idx");
  if ($tv_idx > 0) {
    for ($i=1; $i<=$tv_idx; $i++)
    {
      if (get_session("ss_tv[$i]") == $bo_table."|".$wr_id)
      {
        $saved = true;
        break;
      }
    }
  }

  if (!$saved && $bo_table && $wr_id)
  {
    $tv_idx++;
    set_session("ss_tv_idx", $tv_idx);
    set_session("ss_tv[$tv_idx]", $bo_table."|".$wr_id);
  }
}

//print_r2($_SESSION);
$tv_idx = get_session("ss_tv_idx");
$tv_div[top] = 0;
$tv_div[img_length] = 5; // 보여줄 이미지갯수
?>

<style type="text/css">
#divTodayHidden { position:relative; top:<?=$tv_div[top]?>;display:none; }
/* #divToday { ie 스크립트 에러로 인라인코딩 } */
#divToday .top { margin:0; padding:0; background: url(<?=$g4[shop_path]?>/img/todayview01.gif) no-repeat; width:91px; height:31px; }
#divToday #todayviewcount { position:absolute; top:9px; right:10px; color:#555; }
#divToday #topBtn { margin:0; padding:0; background: url(<?=$g4[shop_path]?>/img/todayview02.gif) no-repeat; width:90px; height:12px; cursor:pointer; }
#divToday #botBtn { margin:0; padding:0; background: url(<?=$g4[shop_path]?>/img/todayview05.gif) no-repeat; width:90px; height:10px; cursor:pointer; }
#divToday #pList { margin:0 auto; padding:0; text-align:center; background: url(<?=$g4[shop_path]?>/img/todayview03.gif) repeat-y; width:90px; height:auto; }
#divToday #noList { margin:0; padding:0; background: url(<?=$g4[shop_path]?>/img/todayview04.gif) no-repeat; width:90px; height:21px; }
#divToday #hidBtn { margin:0; padding:0; background: url(<?=$g4[shop_path]?>/img/todayview06.gif) no-repeat; width:90px; height:23px; cursor:pointer; }
</style>

<div id='divTodayHidden'><a href='javascript:todayview_visible();' title="오늘본 제품 보기">
  <img src='<?=$g4[shop_path]?>/img/todayview.gif' border=0></a>
</div>

<div id='divToday' style="position:relative; top:0; margin:0 auto; width:auto; height:auto;">
  <div class="top">
    <div id='todayviewcount'></div>
  </div>

  <?
  if ($tv_idx)
  {
    // 상단 버튼
    if ($tv_idx > $tv_div[img_length])
    {
      echo "<div id='topBtn' onclick=\"javascript:todayview_up();\" title=\"다음제품\"></div>\n";
    }
    // 제품 이미지 출력
    echo "<div id='pList'>\n";

    for ($i=1; $i<=$tv_div[img_length]; $i++)
    {
      echo "   <div id='todayview_{$i}'></div>\n";
    }

    echo "  </div>\n";

    // 하단 버튼
    if ($tv_idx > $tv_div[img_length])
    {
      echo "<div id='botBtn' onclick=\"javascript:todayview_dn();\" title=\"이전제품\"></div>\n";
    }
  }
  else
  {
     echo "<div id='noList'></div>\n";
  }
  ?>

  <div id='hidBtn' onclick="javascript:todayview_hidden();"></div>

</div>

<!-- 오늘 본 제품 -->
<script type="text/javascript">
var goods_link = new Array();
<?php
echo "var goods_max = ".(int)$tv_idx.";\n";
echo "var goods_length = ".(int)$tv_div[img_length].";\n";
echo "var goods_current = goods_max;\n";
echo "\n";

for ($i=1; $i<=$tv_idx; $i++)
{
  $tv_it_id = get_session("ss_tv[$i]");
  list($ss_board, $ss_wr_id) = explode('|', $tv_it_id);

  if ($ss_board == $tv_tbl)
  {
    $row = sql_fetch(" select * from $g4[board_file_table] where bo_table = '$ss_board' and wr_id = '$ss_wr_id' ");
    $it_name = get_text(addslashes($row['bf_file']));
    $thumb = $g4[path]."/data/file/".$ss_board."/thumb/".$it_name;
    $size = getimagesize($thumb);
    $tw = $size[0] /2;
    $th = $size[1]/2;
    $img = "<a href='".$g4[bbs_path]."/board.php?bo_table=".$ss_board."&wr_id=".$ss_wr_id."'><img src='$thumb' width='".$tw."' height='".$th."' style='padding:1px 0; border:none;'/></a>";
    echo "goods_link[$i] = \"{$img}<br/>\";\n";//<span class=small>".cut_str($it_name,10,"")."</span>
  }
}
?>

var divSave = null;

function todayview_visible()
{
  set_cookie('ck_tvhidden', '', 1);
  document.getElementById('divToday').innerHTML = divSave;
}

function todayview_hidden()
{
  divSave = document.getElementById('divToday').innerHTML;
  set_cookie('ck_tvhidden', '1', 1);
  document.getElementById('divToday').innerHTML = document.getElementById('divTodayHidden').innerHTML;
}

function todayview_move(current)
{
  k = 0;
  for (i=goods_current; i>0 ; i--)
  {
    k++;
    if (k > goods_length)
      break;
    document.getElementById('todayview_'+k).innerHTML = goods_link[i];
  }
}

function todayview_up()
{
  if (goods_current + 1 > goods_max)
    alert("오늘 본 마지막 제품입니다.");
  else
    todayview_move(goods_current++);
}

function todayview_dn()
{
  if (goods_current - goods_length == 0)
    alert("오늘 본 처음 제품입니다.");
  else
    todayview_move(goods_current--);
}

<?php
$k=0;
for ($i=$tv_idx; $i>0; $i--)
{
  $k++;
  if ($k > $tv_div[img_length])
    break;

  $tv_it_id = get_session("ss_tv[$i]");
  list($ss_board, $ss_wr_id) = explode('|', $tv_it_id);
  if ($ss_board == $tv_tbl)
  {
    echo "document.getElementById('todayview_{$k}').innerHTML = goods_link[$i];\n";
  }
}

if ($tv_idx)
{
  echo "document.getElementById('todayviewcount').innerHTML = '$tv_idx';\n";
}

?>

/****************************************************************************/

function CheckUIElements()
{
  var yMenuFrom, yMenuTo, yButtonFrom, yButtonTo, yOffset, timeoutNextCheck;

  yMenuFrom   = parseInt (document.getElementById('divToday').style.top, 10);
  if ( g4_is_gecko )
    yMenuTo = top.pageYOffset + <?=$tv_div[top]?>;
  else if ( g4_is_ie )
    yMenuTo = document.body.scrollTop + parseInt('<?=$tv_div[top]?>');

  timeoutNextCheck = 500;

  if ( Math.abs (yButtonFrom - (yMenuTo + 152)) < 6 && yButtonTo < yButtonFrom )
  {
    setTimeout ("CheckUIElements()", timeoutNextCheck);
    return;
  }

  if ( yMenuFrom != yMenuTo )
  {
    yOffset = Math.ceil( Math.abs( yMenuTo - yMenuFrom ) / 10 );
    if ( yMenuTo < yMenuFrom )
      yOffset = -yOffset;

    document.getElementById('divToday').style.top = parseInt(document.getElementById('divToday').style.top) + yOffset;

    timeoutNextCheck = 10;
  }

  setTimeout ("CheckUIElements()", timeoutNextCheck);
}

function OnLoad() {
  var y;

  if ( top.frames.length )
    document.getElementById('divToday').style.display = '';

  CheckUIElements();
  return true;
}

OnLoad();

<?php
if ($_COOKIE['ck_tvhidden'])
   echo "todayview_hidden();";
?>
//-->
</script>

|

댓글 11개

크롬에서 글작성 버튼이 이상하네요. ^^
엔터키로 올리니까 수정된 내용이 반영되지 않고 이전 내용이 그냥 올라가네요.
ie에서 다시 수정했습니다.ㅠㅠ
작업을 하시는군요^^

어디에 적용할지 고민입니다..헤헤
감사합니다.
수고 많으시죠^^
틈나는대로 작업하는거라 정신이 없네요.
시간되실때 디자인쪽 조언좀 해주세요~!!
좋은 팁 감사합니다~!
특정 게시판이 아니라 특정 그룹으로 하려면 어떻게 하는지요? 게시판이 여러개라 힘들까요?
사용법좀 알려주십시요...초보라....줘도 못먹네요..
그러게요. 줘도 못 먹는 안타까운 마음...
게시판에 소스를 삽입하는 건가요? 그렇게 해도 안되는데...
추천하고 갑니다.
아~ 사용법을 ㅡ.ㅡ;
댓글을 작성하시려면 로그인이 필요합니다. 로그인

그누4 팁자료실

그누보드4와 관련된 팁을 여러분들과 함께 공유하세요. 나누면 즐거움이 커집니다.

+
제목 글쓴이 날짜 조회
17년 전 조회 3,723
17년 전 조회 4,875
17년 전 조회 6,146
17년 전 조회 5,922
17년 전 조회 2,539
17년 전 조회 2,531
17년 전 조회 4,319
17년 전 조회 2,085
17년 전 조회 8,376
17년 전 조회 5,609
17년 전 조회 1,869
17년 전 조회 4,555
17년 전 조회 4,297
17년 전 조회 3,194
17년 전 조회 4,145
17년 전 조회 3,604
17년 전 조회 2,799
17년 전 조회 3,766
17년 전 조회 7,303
17년 전 조회 9,763
🐛 버그신고