그룹용 오늘본 상품 보여주기 > 그누4 팁자료실

그누4 팁자료실

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

그룹용 오늘본 상품 보여주기 정보

그룹용 오늘본 상품 보여주기

본문

여전히 크롬에서 글작성이 자연스럽지 못하네요..

그누보드 `그룹용 오늘본 상품` 보여주는 겁니다.
원하시는분이 계셔서 게시판용을 몇자 고쳐서 올립니다.

        <?php

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

        $tv_grid = "toe";// 그룹지정

        if ($gr_id == $tv_grid)// 지정된 그룹일때만 세션생성
        {
          $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]") == $tv_grid."|".$bo_table."|".$wr_id)
              {
                $saved = true;
                break;
              }
            }
          }

          if (!$saved && $gr_id && $bo_table && $wr_id)
          {
            $tv_idx++;
            set_session("ss_tv_idx", $tv_idx);
            set_session("ss_tv[$tv_idx]", $tv_grid."|".$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_grid, $ss_board, $ss_wr_id) = explode('|', $tv_it_id);
          if ($ss_grid == $tv_grid)
          {
            $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_grid, $ss_board, $ss_wr_id) = explode('|', $tv_it_id);
          if ($ss_grid == $tv_grid)
          {
            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>

덧);
저는 프로그래머가 아니기 때문에 어려운거 물어보시면 답변 못해드립니다.^^
연구 보강해서 쓰세요.
추천
6
  • 복사

댓글 13개

바쁘실텐데... 한가지만 질문드려도 될까요?
설치해보니 이미지 사이즈가 너무 작게 보여서여..
혹시 크게할 수있는 방법은 없을까 해서요?

공개하여 주셔서 감사드림니다.
여기서는 실제 썸네일사이즈의 반으로 설정되어있습니다.
            $size = getimagesize($thumb);
            $tw = $size[0] /2;
            $th = $size[1]/2;
그냥 아래처럼 하면 생성된 썸네일 사이즈대로 나올겁니다.
            $size = getimagesize($thumb);
            $tw = $size[0];
            $th = $size[1];
컴퓨터기술자님^^

위 내용을 today_view.php로 루트에 올렸다고 가정할때...

<div id="아무아이디">

  <?
    // 오늘본 제품
    include_once ($g4['path']."/today_view.php");
  ?>

</div>
스크롤링을 해야한다면 위 코드 바로아래에 아래 스크립트도 추가합니다.
<!-- 스크롤링을 위한 스크립트 -->
<script type="text/javascript">initMoving(document.getElementById("아무아이디"), 66, 66, 250);</script>

--------------------------------------------------------

그리고 아래내용도 별도 js파일로 저장해서 헤더에 링크하세요.

// 웹표준을 고려한 우측 고정 메뉴
// http://hyeonseok.com/pmwiki/index.php/Javascript/SmoothMovingLayer 신현석님
// IE6, IE7, FF2, Opera9, Safari3
function initMoving(target, position, topLimit, btmLimit)
{
  if (!target)
    return false;

  var obj = target;
  obj.initTop = position;
  obj.topLimit = topLimit;
  obj.bottomLimit = document.documentElement.scrollHeight - btmLimit;

  obj.style.position = "absolute";
  obj.top = obj.initTop;
  obj.left = obj.initLeft;

  if (typeof(window.pageYOffset) == "number")
  {
    obj.getTop = function()
    {
      return window.pageYOffset;
    }
  }
  else if (typeof(document.documentElement.scrollTop) == "number")
  {
    obj.getTop = function()
    {
      return document.documentElement.scrollTop;
    }
  }
  else
  {
    obj.getTop = function()
    {
      return 0;
    }
  }

  if (self.innerHeight)
  {
    obj.getHeight = function()
    {
      return self.innerHeight;
    }
  }
  else if(document.documentElement.clientHeight)
  {
    obj.getHeight = function()
    {
      return document.documentElement.clientHeight;
    }
  }
  else
  {
    obj.getHeight = function()
    {
      return 500;
    }
  }

  obj.move = setInterval(function()
  {
    if (obj.initTop > 0)
    {
      pos = obj.getTop() + obj.initTop;
    }
    else
    {
      pos = obj.getTop() + obj.getHeight() + obj.initTop;
      //pos = obj.getTop() + obj.getHeight() / 2 - 15;
    }

    if (pos > obj.bottomLimit)
      pos = obj.bottomLimit;
    if (pos < obj.topLimit)
      pos = obj.topLimit;

    interval = obj.top - pos;
    obj.top = obj.top - interval / 3;
    obj.style.top = obj.top + "px";
  }, 30)
}
알려주신데로 해보니 잘되네요.^^
로그인해야 이미지가 나타나고, png 파일은 안보이네요...

감사히 잘 쓰겠습니다.

P,S)
염치없지만 로그인 안된상태에서 나타하고싶어요^^;;;
부탁드립니다.
제가 그누보드 최신 utf-8 버전에서 테스트 한걸로는 png파일도 가져옵니다.
다른 설정부분을 검토해보세요.

세션은 로그인 여부와 관계없이 생성되며 상품목록도 보여줍니다.
로그아웃하면 삭제되구요.

즉 로그인 이전에 본제품은 로그인해도 계속 보이지만 일단 로그아웃하면 모두 사라지는게  정상입니다.

세션생성시 아이디와 제품정보까지 생성하고 디비에 넣는 방식으로 응용한다면 다시 로그인했을때에도 그날본 제품을 보여줄수 있을것 같긴 하네요.
© SIRSOFT
현재 페이지 제일 처음으로