팁과노하우

  • 팁과노하우 포인트 정책
      글쓰기
      100P
      댓글
      10P
  • 전체 87건 / 2 페이지
    • 72
    • 오래 전
      2025.03.04
  • 오래 전
  • 이벤트 게시판 날짜 오류 수정하기!
  • 안녕하세요...미니님a입니다.
    최근 공개된 이벤트 게시판 내 날짜 선택 오류가 존재합니다.아래 스크린샷 확인해주세요
    보시는 바와 같이 3월 7일 시작이고 종료가 3월 2일??인 비정상적으로 선택되는 오류가 있습니다.다시 말해, 종료일 선택 시 시작일 보다 작으면 선택할 수 없도록 해야 합니다. 
    해당 오류를 수정 해봅시다.
    ※ 본 팁은 스킨으로 별도 제작하지 않습니다. 따라서, 아래 코드만 수정 시 정상 이용할 수 있습니다.
    이벤트 게시판/write.skin.php 75번 76번 라인을 찾아주세요아래 코드를 찾으시면 됩니다.
    [code]<input type="text" name="wr_1" class="datepicker_inp datepicker" value="<?php echo isset($write['wr_1']) ? $write['wr_1'] : ''; ?>" id="wr_1" class="input" placeholder="시작일" required autocomplete="off" readonly><input type="text" name="wr_2" class="datepicker_inp datepicker" value="<?php echo isset($write['wr_2']) ? $write['wr_2'] : ''; ?>" id="wr_2" class="input" placeholder="종료일" required autocomplete="off" readonly> [/code]
    위 코드를 아래 코드로 변경 해주세요
    [code]<input type="text" name="wr_1" class="datepicker_start datepicker" value="<?php echo isset($write['wr_1']) ? $write['wr_1'] : ''; ?>" id="wr_1" class="input" placeholder="시작일" required autocomplete="off" readonly><input type="text" name="wr_2" class="datepicker_end datepicker" value="<?php echo isset($write['wr_2']) ? $write['wr_2'] : ''; ?>" id="wr_2" class="input" placeholder="종료일" required autocomplete="off" readonly> [/code]
    그리고 바로 밑에 스크립트를 추가 해주세요[code]<script>        $(function() {            $('.datepicker_start').datepicker({                minDate: 0            });            $('.datepicker_end').datepicker({                minDate: 0,                beforeShow: function(input, inst) {                    var startDate = $('.datepicker_start').datepicker('getDate');                    if (startDate) {                        $(this).datepicker('option', 'minDate', startDate);                    }                }            });                        // 시작일이 변경되면 종료일의 최소 날짜를 업데이트            $('.datepicker_start').on('change', function() {                var startDate = $(this).datepicker('getDate');                if (startDate) {                    $('.datepicker_end').datepicker('option', 'minDate', startDate);                }            });        });    </script>[/code]
    잘 모르겠다? 하시면 아래 스크린샷 참고 하시길 바랍니다.
     위 처럼 설정 시 시작일은 오늘 이전을 선택할 수 없습니다. 아래 스크린샷 처럼요

     종료일의 경우 시작일 이전의 데이터는 선택할 수 없습니다. 아래 스크린샷 처럼요 20일까지라면 20일은 선택할 수 있지만, 19일까지는 선택 불가~~

     
    좋은 스킨 공유 해주셔서 감사합니다.리빌더 화이팅~~
    고맙습니다.
    • 71
    • 오래 전
      2025.03.03
  • 오래 전
  • 광역시/도, 시/군/구 셀렉트로 만들기
  • 붙혀넣으면 바로 써먹을 수 있습니다. :D

     
    [code]                <?php                    /* 게시판에서 사용하는 경우 이걸로 변경 (수정시 selected 처리를 위함)                    $selected_sido = isset($write['wr_1']) ? $write['wr_1'] : '';                    $selected_sigungu = isset($write['wr_2']) ? $write['wr_2'] : '';                    */                    $selected_sido = isset($member['mb_1']) ? $member['mb_1'] : '';                    $selected_sigungu = isset($member['mb_2']) ? $member['mb_2'] : '';                ?>                <span>지역</span>                <div>                    <!-- 게시판이라면 mb_1 > wr_1 -->                    <select id="sido" name="mb_1" class="select w40" required>                        <option value="">광역시/도</option>                    </select>                    <!-- 게시판이라면 mb_2 > wr_2 -->                    <select id="sigungu" name="mb_2" class="select w30">                        <option value="">시/군/구</option>                    </select>
                    </div>                                <script>                const regionData = {                                            "서울특별시": ["종로구", "중구", "용산구", "성동구", "광진구", "동대문구", "중랑구", "성북구", "강북구", "도봉구", "노원구", "은평구", "서대문구", "마포구", "양천구", "강서구", "구로구", "금천구", "영등포구", "동작구", "관악구", "서초구", "강남구", "송파구", "강동구"],                        "부산광역시": ["중구", "서구", "동구", "영도구", "부산진구", "동래구", "남구", "북구", "강서구", "해운대구", "사하구", "금정구", "연제구", "수영구", "사상구", "기장군"],                        "인천광역시": ["중구", "동구", "미추홀구", "연수구", "남동구", "부평구", "계양구", "서구", "강화군", "옹진군"],                        "대구광역시": ["중구", "동구", "서구", "남구", "북구", "수성구", "달서구", "달성군", "군위군"],                        "광주광역시": ["동구", "서구", "남구", "북구", "광산구"],                        "대전광역시": ["동구", "중구", "서구", "유성구", "대덕구"],                        "울산광역시": ["중구", "남구", "동구", "북구", "울주군"],                        "세종특별자치시": [],                        "경기도": ["가평군", "고양시", "과천시", "광명시", "광주시", "구리시", "군포시", "김포시", "남양주시", "동두천시", "부천시", "성남시", "수원시", "시흥시", "안산시", "안성시", "안양시", "양주시", "양평군", "여주시", "연천군", "오산시", "용인시", "의왕시", "의정부시", "이천시", "파주시", "평택시", "포천시", "하남시", "화성시"],                        "강원특별자치도": ["원주시", "춘천시", "강릉시", "동해시", "속초시", "삼척시", "홍천군", "태백시", "철원군", "횡성군", "평창군", "영월군", "정선군", "인제군", "고성군", "양양군", "화천군", "양구군"],                        "충청북도": ["청주시", "충주시", "제천시", "보은군", "옥천군", "영동군", "증평군", "진천군", "괴산군", "음성군", "단양군"],                        "충청남도": ["천안시", "공주시", "보령시", "아산시", "서산시", "논산시", "계룡시", "당진시", "금산군", "부여군", "서천군", "청양군", "홍성군", "예산군", "태안군"],                        "경상북도": ["포항시", "경주시", "김천시", "안동시", "구미시", "영주시", "영천시", "상주시", "문경시", "경산시", "의성군", "청송군", "영양군", "영덕군", "청도군", "고령군", "성주군", "칠곡군", "예천군", "봉화군", "울진군", "울릉군"],                        "경상남도": ["창원시", "김해시", "진주시", "양산시", "거제시", "통영시", "사천시", "밀양시", "함안군", "거창군", "창녕군", "고성군", "하동군", "합천군", "남해군", "함양군", "산청군", "의령군"],                        "전북특별자치도": ["전주시", "익산시", "군산시", "정읍시", "완주군", "김제시", "남원시", "고창군", "부안군", "임실군", "순창군", "진안군", "장수군", "무주군"],                        "전라남도": ["여수시", "순천시", "목포시", "광양시", "나주시", "무안군", "해남군", "고흥군", "화순군", "영암군", "영광군", "완도군", "담양군", "장성군", "보성군", "신안군", "장흥군", "강진군", "함평군", "진도군", "곡성군", "구례군"],                        "제주특별자치도": ["제주시", "서귀포시"]                                      };
                    const sidoSelect = document.getElementById("sido");                const sigunguSelect = document.getElementById("sigungu");
                    function populateSido() {                    for (let sido in regionData) {                        let option = new Option(sido, sido);                        if (sido === "<?php echo $selected_sido; ?>") {                            option.selected = true;                        }                        sidoSelect.add(option);                    }                    updateSigungu();                }
                    function updateSigungu() {                    sigunguSelect.innerHTML = '<option value="">선택</option>';
                        let selectedSido = sidoSelect.value;                    if (selectedSido && regionData[selectedSido]) {                        regionData[selectedSido].forEach(sigungu => {                            let option = new Option(sigungu, sigungu);                            if (sigungu === "<?php echo $selected_sigungu; ?>") {                                option.selected = true;                            }                            sigunguSelect.add(option);                        });                    }                }
                    sidoSelect.addEventListener("change", updateSigungu);
                    populateSido();            </script>[/code]
    • 70
    • 오래 전
      2025.03.02
  • 오래 전
  • 게시판 뷰페이지 첨부사진보다 본문글이 위로 나오게하기
  • 게시판 뷰페이지 들어가보면 사진이 먼저 위로 올라오는데글이 먼저 위에 나오게 하기
        <!-- 본문 내용 시작 { -->    <div id="bo_v_con">                <?php            // 파일 출력
                $v_img_count = count($view['file']);
                if($v_img_count) {                echo "<div id=\"bo_v_img\">\n";
                    foreach($view['file'] as $view_file) {                    echo get_file_thumbnail($view_file);                }
                    echo "</div>\n";            }
            ?>
            <?php echo get_view_thumbnail($view['content']); ?>    </div>
    위에 부분을
    <!-- 본문 내용 시작 --><div id="bo_v_con">    <?php echo get_view_thumbnail($view['content']); ?></div><?php    // 파일 출력 코드 (이제 본문 아래에 위치)    $v_img_count = count($view['file']);    if($v_img_count) {        echo "<div id=\"bo_v_img\">\n";        foreach($view['file'] as $view_file) {            echo get_file_thumbnail($view_file);        }        echo "</div>\n";    }?>

    이렇게 바꿔주시면 반대로됩니다
    • 69
    • 오래 전
      2025.03.01
  • 오래 전
  • 아래로 당겨서 새로고침하기
  • 웹뷰사용시 새로고침버튼이 없어서 새로고침하려면 불편하더라고요네이버카페어플이나 기타 어플 같은경우 아래로 스크롤 하면 새로고침이 되는데그방법입니다 저는 할줄 몰라서 돈주고 배웠습니다 고수님들은 금방하시겠지만저처럼 초보자들에게 필요할까 해서 공유합니다
    적용하고싶은 페이지에 아래내용 넣어주시면 됩니다


       <style>      body {font-family: 'Nanum Myeongjo', 'Apple SD Gothic Neo', '���� ����', serif;    line-height: 1.6;    background-color: #f8f9fa;    color: #333;    overscroll-behavior: contain;ㅂ}      </style><script src="https://unpkg.com/pulltorefreshjs" defer></script><script>    document.addEventListener("DOMContentLoaded", () => {        PullToRefresh.init({            mainElement: '#scroll_container', // 새로고침이 작동할 스크롤 컨테이너            onRefresh() {                return new Promise((resolve, reject) => {                    $.ajax({                        url: window.location.href,                        dataType: 'html',                        success: function(data) {                            // 임시 DOM 객체에 전체 HTML 삽입 후, #scroll_container의 내용 추출                            var newContent = $('<div></div>').html(data).find('#scroll_container').html();                            $('#scroll_container').html(newContent);                            resolve();                        },                        error: function() {                            resolve();                        }                    });                });            },            instructionsPullToRefresh: '당겨서 새로고침',            instructionsReleaseToRefresh: '놓으면 새로고침',            instructionsRefreshing: '새로고침 중...'        });
            const counters = document.querySelectorAll(".stats-value");
            counters.forEach(counter => {            const updateCount = () => {                const target = +counter.getAttribute("data-count");                const count = +counter.innerText.replace(/,/g, '');
                    const increment = target / 200; // 속도 조정
                    if (count < target) {                    counter.innerText = Math.ceil(count + increment).toLocaleString();                    setTimeout(updateCount, 10);                } else {                    const suffix = counter.getAttribute("data-suffix") || "";                    counter.innerText = target.toLocaleString() + suffix;                }            };
                updateCount();        });    });</script> 

    • 68
    • 오래 전
      2025.02.28
  • 오래 전
  • 네이버 카페처럼 메인화면에서 글쓰기버튼 추가
  • 메인화면에 글쓰기 버튼 추가해서 누르면 나의 레벨에서 글쓸수 있는 게시판 목록이 나타나고 목록에서게시판을 선택하여 해당글쓰기로 이동하는 방법입니다여기서 글쓰기버튼을 클릭하면?이렇게 우측에 나의 레벨에서 작성할수 있는 게시판이 나열됩니다여기서 작성하고 싶은 게시판을 선택하면?
     해당 게시판의 글쓰기로 이동이 됩니다



    <style>/* 플로팅 글쓰기 버튼 */#floating-write-btn {  position: fixed;  bottom: 15px; /* 필요시 조정 */  right: 30px;  /* 필요시 조정 */  z-index: 2000;}
    #floating-write-btn button {  width: 60px;  height: 60px;  border: none;  border-radius: 50%;  background-color: #4d33b2; /* 버튼 배경색 */  color: #fff;  font-size: 16px;  cursor: pointer;  box-shadow: 0 4px 8px rgba(0,0,0,0.2);}
    /* 버튼 호버시 효과 */#floating-write-btn button:hover {  background-color: #ff5f1f;  transition: background-color 0.2s;}
    /* 모달 배경 */#board-select-modal {  display: none; /* 기본 숨김 */  position: fixed;  z-index: 99999;  left: 0; top: 0;  width: 100%; height: 100%;  overflow: auto;  background-color: rgba(0, 0, 0, 0.5);}
    /* 모달 컨텐츠 박스 */#board-select-modal .modal-content {  background-color: #1c1c1e;  color: #fff;  margin: 80px auto; /* 수직 가운데정렬 (상단 간격) */  max-width: 320px;  /* 모달 너비 (원하시면 늘리세요) */  border-radius: 8px;  padding: 20px;  position: relative;}
    /* 모달 닫기(X) 버튼 */#board-select-modal .close-modal {  position: absolute;  top: 10px;   right: 15px;  font-size: 24px;  cursor: pointer;}
    /* 모달 제목 */#board-select-modal h2 {  margin: 0 0 15px;  font-size: 18px;  text-align: center;  color: #ffd674; /* 원하는 색상 */}
    /* 목록 초기화 */#board-list {  list-style: none;  padding: 0;  margin: 0;}
    /* 그룹 아이템(접히는 상단) */.group-item {  margin-bottom: 10px;}
    /* 그룹 제목 영역 */.group-title {  background-color: #2c2c2e;  padding: 10px 12px;  border-radius: 6px;  cursor: pointer;  position: relative;  font-size: 14px;  display: flex;  align-items: center;  justify-content: space-between;}.group-title:hover {  background-color: #3a3a3c;}
    /* 그룹 제목 왼쪽 */.group-title-text {  font-weight: bold;}
    /* 펼치기/접기 화살표 (오른쪽) */.group-title .arrow {  font-size: 12px;  margin-left: 5px;  transition: transform 0.2s;}.group-title.open .arrow {  transform: rotate(180deg);}
    /* 하위 게시판 목록(초기 숨김) */.board-sublist {  list-style: none;  margin: 0;  margin-top: 6px;  padding: 0;  display: none; /* 처음에는 숨김 */}
    /* 하위 게시판 항목 */.board-sublist li {  margin-bottom: 6px;}
    .board-sublist li a {  display: block;  background: #4d33b2;  padding: 8px 12px;  border-radius: 4px;  color: #fff;  text-decoration: none;  font-size: 13px;  transition: background-color 0.2s;}.board-sublist li a:hover {  background-color: #444;}</style>
    <!-- 플로팅 글쓰기 버튼 --><div id="floating-write-btn">  <button type="button" title="글쓰기">    <!-- 연필 모양 아이콘 (FontAwesome 등에서 추출한 SVG 예시) -->    <svg aria-hidden="true" focusable="false" width="22" height="22"         viewBox="0 0 512 512" fill="currentColor"         xmlns="http://www.w3.org/2000/svg">      <path d="M497.94 74.17l-60.11-60.1a48 48 0 0 0-67.88 0L15.49 368.52a24 24 0 0 0-6.08 10.87L.15 460.32a24 24 0 0 0 28.83 28.84l81-9.26a24 24 0 0 0 10.86-6.07l354.47-354.4a48 48 0 0 0 .63-67.26zm-386 330.93l-50.72 5.8 5.79-50.66L345.94 80.44l44.9 44.9zm359.64-359.59l-31.92 31.88-44.9-44.9 31.89-31.88a16 16 0 0 1 22.63 0l22.34 22.34a16 16 0 0 1 .02 22.56z"/>    </svg>  </button></div>
    <!-- 모달창 --><div id="board-select-modal">  <div class="modal-content">    <span class="close-modal">&times;</span>    <h2>게시판 선택</h2>    <ul id="board-list">      <?php      // 로그인/권한 확인      if (!$is_member) {          // 비회원이면 안내          echo '<li><a href="'.G5_BBS_URL.'/login.php">로그인 후 이용가능합니다.</a></li>';      } else {          // 그룹 + 게시판 목록을 가져와서 "내 레벨로 쓰기 가능한 게시판"만 분류          $sql = "              SELECT b.bo_table, b.bo_subject, b.bo_write_level, b.gr_id, g.gr_subject                FROM {$g5['board_table']} b                LEFT JOIN {$g5['group_table']} g ON (b.gr_id = g.gr_id)               WHERE b.bo_use_search = '1'            ORDER BY b.gr_id ASC, b.bo_table ASC          ";          $result = sql_query($sql);
              // 그룹별로 묶을 배열          $grouped_boards = array();
              // 데이터 반복          while($row = sql_fetch_array($result)) {              // 내 레벨로 쓰기가 가능한지?              if ((int)$member['mb_level'] >= (int)$row['bo_write_level']) {                  $gr_id = $row['gr_id'];                  // 그룹 이름이 없으면 기본 그룹명 처리                  $group_name = $row['gr_subject'] ? $row['gr_subject'] : '기본그룹';
                      if (!isset($grouped_boards[$gr_id])) {                      $grouped_boards[$gr_id] = array(                          'group_name' => $group_name,                          'boards'     => array()                      );                  }                  // 보드 정보 푸시                  $grouped_boards[$gr_id]['boards'][] = array(                      'bo_table'   => $row['bo_table'],                      'bo_subject' => $row['bo_subject']                  );              }          }
              // 만약 작성가능한 게시판이 전혀 없다면 안내          if (empty($grouped_boards)) {              echo '<li><a href="javascript:void(0)">작성 가능한 게시판이 없습니다.</a></li>';          } else {              // 그룹별로 출력              foreach($grouped_boards as $gr_id => $grp) {                  // 그룹 제목                  echo '<li class="group-item">';                  echo '  <div class="group-title" onclick="toggleGroup('group-'.$gr_id.'', this)">';                  echo '    <span class="group-title-text">'.get_text($grp['group_name']).'</span>';                  echo '    <span class="arrow">▼</span>';                  echo '  </div>';
                      // 하위 게시판 목록                  echo '  <ul id="group-'.$gr_id.'" class="board-sublist">';                  foreach($grp['boards'] as $bd) {                      $write_url = get_pretty_url($bd['bo_table'], 'write');                      echo '<li><a href="'.$write_url.'">'.get_text($bd['bo_subject']).'</a></li>';                  }                  echo '  </ul>';                  echo '</li>';              }          }      }      ?>    </ul>  </div></div>
    <script>// (1) 플로팅 버튼 / 모달창 DOMconst floatingWriteBtn = document.getElementById("floating-write-btn");const boardSelectModal = document.getElementById("board-select-modal");const closeModalBtn     = document.querySelector("#board-select-modal .close-modal");
    // (2) 버튼 클릭 -> 모달 열기if (floatingWriteBtn) {  floatingWriteBtn.addEventListener("click", function() {    if (boardSelectModal) {      boardSelectModal.style.display = "block";    }  });}
    // (3) 닫기(X) 버튼 클릭 -> 모달 닫기if (closeModalBtn) {  closeModalBtn.addEventListener("click", function() {    if (boardSelectModal) {      boardSelectModal.style.display = "none";    }  });}
    // (4) 모달 배경 클릭 -> 모달 닫기window.addEventListener("click", function(event) {  if (event.target === boardSelectModal) {    boardSelectModal.style.display = "none";  }});
    /* 그룹 토글 함수 */function toggleGroup(groupId, titleElem) {  const sublist = document.getElementById(groupId);  if (!sublist) return;
      // 펼침/접힘  if (sublist.style.display === 'none' || sublist.style.display === '') {    sublist.style.display = 'block';    // 화살표 회전 효과를 위해 .open 클래스 토글    if (titleElem) titleElem.classList.add('open');  } else {    sublist.style.display = 'none';    if (titleElem) titleElem.classList.remove('open');  }}</script>

     
    • 19c45330452a68a43606da1be105b507_1740751257_7506.jpeg
    • 67
    • 오래 전
      2025.02.26
  • 오래 전
  • 목록 사이에 텍스트 광고 혹은 배너 광고 넣기
  • 안녕하세요...미니님a입니다.
    먼저 해당 팁은 별도로 스킨 제작하지 않고 팁으로만 작성하여 공유 드립니다.따라서, 해당 내용을 그대로 따라 하시면 현재 적용 중인 스킨에 잘 적용 되실 것입니다.
    웹 서핑을 하다보면 아래 처럼 게시글 중간 중간 광고가 노출 된 것을 본 적이 있으실 것입니다.

     이런 광고 기능 해보면 좋겠다? 생각 드셨죠?개선 및 제안 게시판에 팡야님께서 제안 해주신 적도 있으시던데요 https://rebuilder.co.kr/propose/167 자! 이 기능 구현 해봅시다!!
    ※주의사항 
    구글 애드센스는 정책 위반이라 하시면 구글 광고 계정 짤립니다. 하시면 안됩니다.
    쿠팡이나 일반 사이트 내 광고 등 다른 광고로 진행하셔야 합니다.
    괜히 구글 애드센스 하셨다가 광고 계정 짤려서 저한테 책임 물으시는 일 없으시면 좋겠습니다.
    이제 시작 해봅시다.
    기본 혹은 일반 스킨의 경우는 사용하시는 스킨 폴더 내 list.skin.php 파일을 열어 주시면 됩니다.만약 통합 스킨을 사용하신다면 통합 스킨 폴더 내 list/basic/skin.php 파일을 열어 주시면 됩니다.
    단. 썸네일과 갤러리는 논외로 치고 직접 작업하셔야 할 것 같습니다. 해당 팁은 리스트 기준입니다.
    아래 소스 코드를 찾아주세요 - 기본과 통합 똑같은 소스입니다.
     <?php } ?>     </tbody>   </table>   <?php if (count($list) == 0) { echo "<div class="no_data" style="text-align:center">데이터가 없습니다.</div>"; } ?>
    그리고 추가를 해줄 것인데 어디에 추가 해줄꺼냐면 <?php } ?> 소스 위에 작성할 것입니다.
    아래 소스를 추가 해주세요 <?php if($i === 5){?>         <tr>             <td colspan="4">                 <p style="text-align:center;">여기에 광고를 넣어주세요. 이미지 광고도 크기에 맞게 넣어주시면 됩니다.</p>             </td>         </tr>         <?php } ?>
    잘 모르겠다? 하시면 아래 스크린 샷 오렌지색을 주목 해주세요

     
    위 소스 기준 5는 7번째 목록에 광고를 나타내겠다는 뜻입니다.왜 7번째냐면 자바스크립트는 0부터 시작하기 때문에 0 1 2 3 4 5 해서 6번째가 되며, 7번째 광고가 노출됩니다.
    아래 처럼요 

     
    모바일 반응형으로 구현되어 있기에 이미지 자체가 비정상(?)만 아니면 적절하게 잘 노출 될 것입니다.만약 이미지가 찌그러짐 현상이 있다면 모바일에서는 변경하는 css 사용하시면 될 것 같습니다.
     
    페이지 마다 7번째에 광고가 노출 되므로 너무 많은 광고 노출 시 사용자 입장에서 불편할 수 있기 때문에 페이지 당 하나가 적절하다 판단하였습니다.
    그럼 잘 사용하시고 성공하시길 바래요고맙습니다.
    • 9deff7ac29f744f99fb090e7fc2dda1c_1740531941_3354.png
    • 66
    • 오래 전
      2025.02.25
  • 오래 전
  • 관리자 기본 환경설정 여분 필드 추가하기
  • 안녕하세요...미니님a입니다.
    관리자 페이지 내 기본 환경설정 여분 필드를 쉽게 추가 하기 위한 팁입니다.다만, 해당 내용은 기본 코어를 수정할 수 밖에 없는 관계로 원치 않는 경우는 사용하지 마시길 바랍니다.
    예) 수정 이후 추후 업데이트 시 파일 복붙 하면 기존 데이터가 다 삭제되기 때문입니다.
    1. 여분필드 추가 파일 생성 - 파일명 아무거나 예) abcd.php - index.php 가 있는 최상위에 업로드 해주세요
    <?php include_once ('_common.php'); $max = 20; // 최대 몇까지 만드실 지 정해주세요 (단 이 숫자는 기억해주세요)   for ($i = 11; $i <= $max; $i++) {     $sql = "ALTER TABLE `g5_config` ADD `cf_{$i}_subj` VARCHAR(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL AFTER `cf_" . ($i-1) . "_subj`;";     $sql2 = "ALTER TABLE `g5_config` ADD `cf_$i` VARCHAR(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL AFTER `cf_" . ($i-1) . "`;";         sql_query($sql);     sql_query($sql2); }; echo '테이블 생성 완료';
    그리고 홈페이지 상에서 실행 한번 해주세요예) 홈페이지주소/abcd.php그리고 실행 했다면 해당 파일은 삭제 해주셔도 무방합니다.
    2. adm/config_form.php 파일 열어주세요1500번째 라인에 보면 다음 코드가 있습니다.

    <?php for ($i = 1; $i <= 10; $i++) { ?> 위 코드를 아래 코드 처럼 변경 해주세요단. 예제 기준 20이지, abcd.php 파일에서 70을 했다면 아래 코드도 70으로 해야 됩니다.<?php for ($i = 1; $i <= 20; $i++) { ?>
    3. adm/config_form_update.php 파일을 열어주세요
    160번 라인 근처에 보시면 다음과 같은 코드가 있습니다.
    for ($i = 1; $i <= 10; $i++) {    $check_keys['cf_' . $i . '_subj'] = isset($_POST['cf_' . $i . '_subj']) ? $_POST['cf_' . $i . '_subj'] : '';    $check_keys['cf_' . $i] = isset($_POST['cf_' . $i]) ? $_POST['cf_' . $i] : '';}
    여기에서 10이라는 숫자를 아까전에 abcd.php 파일에서 작성한 숫자로 변경 해주시면 됩니다.for ($i = 1; $i <= 10; $i++) { 이 코드를 for ($i = 1; $i <= 20; $i++) {이렇게 변경해주세요
    4. 맨 하단에 쿼리 업데이트 문을 수정 해주세요
    cf_1_subj = '{$_POST['cf_1_subj']}', cf_2_subj = '{$_POST['cf_2_subj']}', cf_3_subj = '{$_POST['cf_3_subj']}', cf_4_subj = '{$_POST['cf_4_subj']}', cf_5_subj = '{$_POST['cf_5_subj']}', cf_6_subj = '{$_POST['cf_6_subj']}', cf_7_subj = '{$_POST['cf_7_subj']}', cf_8_subj = '{$_POST['cf_8_subj']}', cf_9_subj = '{$_POST['cf_9_subj']}', cf_10_subj = '{$_POST['cf_10_subj']}', cf_1 = '{$_POST['cf_1']}', cf_2 = '{$_POST['cf_2']}', cf_3 = '{$_POST['cf_3']}', cf_4 = '{$_POST['cf_4']}', cf_5 = '{$_POST['cf_5']}', cf_6 = '{$_POST['cf_6']}', cf_7 = '{$_POST['cf_7']}', cf_8 = '{$_POST['cf_8']}', cf_9 = '{$_POST['cf_9']}', cf_10 = '{$_POST['cf_10']}' ";
    이부분을 아래처럼 변경 해주시면 됩니다.
    cf_1_subj = '{$_POST['cf_1_subj']}', cf_2_subj = '{$_POST['cf_2_subj']}', cf_3_subj = '{$_POST['cf_3_subj']}', cf_4_subj = '{$_POST['cf_4_subj']}', cf_5_subj = '{$_POST['cf_5_subj']}', cf_6_subj = '{$_POST['cf_6_subj']}', cf_7_subj = '{$_POST['cf_7_subj']}', cf_8_subj = '{$_POST['cf_8_subj']}', cf_9_subj = '{$_POST['cf_9_subj']}', cf_10_subj = '{$_POST['cf_10_subj']}', cf_11_subj = '{$_POST['cf_11_subj']}', cf_12_subj = '{$_POST['cf_12_subj']}', cf_13_subj = '{$_POST['cf_13_subj']}', cf_14_subj = '{$_POST['cf_14_subj']}', cf_15_subj = '{$_POST['cf_15_subj']}', cf_16_subj = '{$_POST['cf_16_subj']}', cf_17_subj = '{$_POST['cf_17_subj']}', cf_18_subj = '{$_POST['cf_18_subj']}', cf_19_subj = '{$_POST['cf_19_subj']}', cf_20_subj = '{$_POST['cf_20_subj']}', cf_1 = '{$_POST['cf_1']}', cf_2 = '{$_POST['cf_2']}', cf_3 = '{$_POST['cf_3']}', cf_4 = '{$_POST['cf_4']}', cf_5 = '{$_POST['cf_5']}', cf_6 = '{$_POST['cf_6']}', cf_7 = '{$_POST['cf_7']}', cf_8 = '{$_POST['cf_8']}', cf_9 = '{$_POST['cf_9']}', cf_10 = '{$_POST['cf_10']}', cf_11 = '{$_POST['cf_11']}', cf_12 = '{$_POST['cf_12']}', cf_13 = '{$_POST['cf_13']}', cf_14 = '{$_POST['cf_14']}', cf_15 = '{$_POST['cf_15']}', cf_16 = '{$_POST['cf_16']}', cf_17 = '{$_POST['cf_17']}', cf_18 = '{$_POST['cf_18']}', cf_19 = '{$_POST['cf_19']}', cf_20 = '{$_POST['cf_20']}' ";
    ※ 주의 사항 1. 마지막에는 , (콤마)가 들어가지 않습니다.2. abcd.php 파일에 생성한 개수 만큼 업데이트 하여야 합니다.
    여기까지 하시면 여분필드를 설정한 만큼 사용할 수 있습니다.고맙습니다.
    • 7e04b2d72373cc29eba99b2df9c2c577_1740471718_0125.png
    • 65
    • 오래 전
      2025.02.25
  • 오래 전
  • 클라우드플레어 : 특정 도메인 aaa.com 과 www.aaa.com 을 메인 도메인으로 이동시켜주기
  • https://rebuilder.co.kr/tip/259에서 어느분께서 댓글 달아주셨는데...위 방법으로 할 경우 seo에 문제가 생길 수 있다고 합니다.그래서 준비해 보았습니다.(사실 준비를 했다고 말은 했지만... 이 방법이 seo에 영향을 끼치는지는 잘 모릅니다. 다만 자바스크립트 태그로 이동이 아닌 클라우드플레어 사용자를 위한 클플 도메인 관리도구를 통해 손쉽게 이동시키기 위함이니 단순 클라우드플레어 도메인 리디렉션 방법이라고 생각해주시면 감사하겠습니다)클라우드플레어를 이용한 특정 도메인 aaa.com 과 www.aaa.com 을특정 URL(메인 도메인으로 이동시키기)로 이동시키는 방법
    사진으로 애플펜슬을 이용해 손쉽게 표현 해봤습니다.이미지 참고 잘 해주시구요.모르시는것 있으시면 질문주세요.(설정방법외 전문적인건 답변 못드림)
    7번 부분은 본인이 사용하시는 메인도메인 주소 입력해 주시면 되겠습니다.

    마지막으로 오*오*님을 기*루* 로 오해한 부분과 본의 아니게... 기모 란 사람을 부른건데 기모찌 기모찌... 라고 조롱거리로 삼았다고 느끼게 오해 불러일으킨점 이 게시글 자리를 빌어 사과드립니다미안합니다. 오*오*님
    • 64
    • 오래 전
      2025.02.24
  • 오래 전
  • 댓글 개수가 많을 때 더보기 버튼을 통해 댓글 펼치기
  • 안녕하세요...미니님a입니다.
    개선 및 제안 게시판 내 해당 요청이 있어 간단하게 팁으로 만들었습니다.https://rebuilder.co.kr/propose/771
    댓글이 5개가 넘지 않는다면, 더보기 버튼이 보이지 않으며,5개가 넘을 시 총 개수가 함께 노출 됩니다.
     만약 스킨으로 적용하고자 한다면 아래 링크를 통해 다운로드 할 수 있습니다.https://rebuilder.co.kr/userdata/393

    기본 / 통합 모두 적용 가능합니다.
    1. 기본의 경우 사용하시는 게시판 스킨 폴더의 view_comment.skin.php 파일을 열어주세요만약 통합이라면 사용하시는 게시판 스킨 폴더 내 cmt/basic/skin.php 파일을 열어주세요
    그 이후 똑같이 쓰시면 됩니다.
    상단에 css 를 추가 해주세요단. style.css 에 작성하셔도 무방합니다.
    <style> .hidden-comment { display: none; } .load-more-btn {     display: block;     width: 100%;     padding: 15px;     margin: 20px 0;     background: #f9f9f9;     border: 1px solid #ddd;     text-align: center;     cursor: pointer;     transition: all 0.3s ease; } .load-more-btn:hover {     background: #f0f0f0; } </style>
    위치를 잘 모르겠다 하시면 아래 스샷 참고 하세요

     
    자 다음에는 아래 코드를 찾아주세요
    <article id="c_<?php echo $comment_id ?>">
    그리고 아래 처럼 변경 합니다.
    <article id="c_<?php echo $comment_id ?>" class="<?php if($i >= 5) echo 'hidden-comment'; ?>">
    변경 이니 별도로 스샷은 업로드 하지 않습니다.
    자 다음에는 아래 코드를 찾아주세요
    <?php if ($i == 0) { //댓글이 없다면 ?><p id="bo_vc_empty">등록된 댓글이 없습니다.</p><?php } ?>
    그리고 그 아래에 아래 코드를 추가 합니다.
        <?php if($cmt_amt > 5) { ?>     <button type="button" id="load-more-comments" class="load-more-btn" data-current="5" data-total="<?php echo $cmt_amt; ?>">         더보기 (5/<?php echo $cmt_amt; ?>)     </button>     <?php } ?>
    어디인지 모르겠다? 하시면 스샷 참고 하시길 바랍니다.

     


    마지막으로 맨 하단에 보면 스크립트 댓글 열기를 찾아주세요단. 통합의 경우는 해당 파일이 아닌 통합 스킨폴더 내 view_comment.skin.php 에 아래 내용이 있습니다.
    <script> jQuery(function($) {                 //댓글열기     $(".cmt_btn").click(function(e){         e.preventDefault();         $(this).toggleClass("cmt_btn_op");         $("#bo_vc").toggle();     }); }); </script>
    여기에 아래 코드만 추가만 해주시면 됩니다.
    var $comments = $('#bo_vc article'); var $loadMoreBtn = $('#load-more-comments'); $loadMoreBtn.click(function() { var current = parseInt($(this).data('current')); var total = parseInt($(this).data('total')); var next = current + 5; var $btn = $(this); // 다음 5개의 댓글을 보여줌 $comments.slice(current, next).removeClass('hidden-comment').fadeIn(400, function() { // fadeIn 완료 후 실행 if (next >= total) { $btn.fadeOut(200); // 버튼을 부드럽게 사라지게 함 } }); // 더보기 버튼 상태 업데이트 $btn.data('current', next); $btn.text('더보기 (' + Math.min(next, total) + '/' + total + ')'); });어떻게 넣어야 할지 모르겠다면 아래 스샷을 참고 하세요

    실제 구동 영상은 아래와 같습니다.고맙습니다.

     


    • 277279c4b1a54cd7df2beb02f3ea4ffe_1740369666_5934.png
    • 63
    • 오래 전
      2025.02.18
  • 오래 전
  • 테스트 서버에는 정해진 아이피만 접근하기
  • 안녕하세요...미니님a입니다.
    필요에 의해 테스트 서버 하나쯤은 가지고 계시죠?근데 다른 사람들은 접근할 수 없게 만들어야 할 때가 종종 있습니다.
    실제로 제가 업로드 할 때 테스트 하는 리빌더 테스트 서버는 저만(?) 접속이 가능하거든요http://rbtest.dothome.co.kr
    위 접속하시면  아래 처럼 뜨는데요!!
    이런 식으로 타인에게는 접속을 허용하지 않고, 나만의 서버로 자유롭게 테스트 할 때 유용하게 사용할 수 있는 팁입니다! 
    소스에 대해 알고 계신다면 먼저 extend 폴더에 server.extend.php 파일을 생성해주세요 (이건 없기에 만들어야 합니다.)그리고 아래 코드를 통으로 복사해서 붙혀 넣으시면 됩니다.
    만약 소스에 대해서 잘 모르신다면 첨부된 파일을 다운로드 받아 압축해제 이후 extend 폴더에 넣어주시고, 본인의 아이피 대역만 설정해주시면 됩니다.(어찌 되었던 코드는 ㅠㅠ 조금 수정하셔야 합니다.)
    <?php if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가 $ip = '^(5.7.|5.50.|20.18.)'; if (!preg_match("/$ip/", $_SERVER['REMOTE_ADDR'])) {     echo 'rebuilder 테스트 서버입니다.';     exit; }
    상단에 아이피 대역은 본인의 아이피를 입력 하시거나 / 아이피 대역을 입력하시면 해당 사용자들만 접속이 가능합니다.
    광역으로 설정 되어있으며, 정확하게 하려면 아이피를 정확하게 입력해주시면 됩니다.본인 아이피는 아래 링크 (네이버) 누르면 확인 가능합니다.
    https://search.naver.com/search.naver?where=nexearch&sm=top_hty&fbm=0&ie=utf8&query=%EB%B3%B8%EC%9D%B8+%EC%95%84%EC%9D%B4%ED%94%BC+%ED%99%95%EC%9D%B8
    소스 코드는 2자리 광역이며, 만약 3자리 광역으로 하고자 한다면
    5\.7\.13\.   으로 하시면 됩니다.구분은 | 파이프로 처리 하시면 됩니다.
    고맙습니다.
    • a23659d8ced439b12c1c9beec1d09c63_1739845811_3227.png
    • 62
    • 오래 전
      2025.02.18
  • 오래 전
  • [멤버십] 구독 시 포인트 지급 및 구독 취소 시 알림 설정
  • 안녕하세요...미니님a입니다.
    해당 내용은 멤버십 내 "구독 + 알림" https://rebuilder.co.kr/item/126 을 사용하고 있다는 가정하에 공유 드리는 팁입니다.
    나는 소스 수정에 대해서 잘 알지 못한다? 하시면 아래 링크를 통해 다운로드 하시면 됩니다.https://rebuilder.co.kr/memberdata/119
    해당 팁에서 공유 되는 내용은 다음과 같습니다.
    1. 구독 추가 시 알림이 오지만, 구독 취소 시 알림이 오지 않아요 그래서 알림 추가
     2. 구독 추가 시 보너스 포인트 지급 및 구독 해제 시 보너스 포인트 회수를 통한 구독 시스템 활성화

     
    보너스 포인트 지급을 통해 구독을 유도 하고, 활성화 할 수 있는 방법이 아닐까? 조심스러운 생각이 듭니다.
    수정 되는 파일은 2곳입니다.rb/rb.mod/subscaribe/ajax.subscribe.phprb/rb.mod/subscaribe/ajax.subscribe_update.php
    먼저. rb/rb.mod/subscaribe/ajax.subscribe.php 파일을 열어주세요
    다음 소스를 찾아주세요
    $data = array('status' => 'del');
    그리고 바로 위에 소스를 넣어주세요
    // 구독 취소한 회원 정보 가져오기 $sb_fw_info = get_member($sb_fw_id); // 구독 취소시 포인트 차감 (-100 포인트) insert_point($member['mb_id'], 100 * - 1, $sb_fw_info['mb_nick'].'님 구독 취소', '@subscribe', 'subscribe_'.G5_TIME_YMDHIS, G5_TIME_YMDHIS); // 구독 취소 알림 메시지 발송 memo_auto_send($member['mb_nick'].'님 께서 회원님을 구독 취소 하셨습니다.', G5_URL.'/rb/home.php?mb_id='.$sb_mb_id.'&ca=fn', $sb_fw_id, "system-msg");
    주석 처리 해뒀으니 참고하시면 되며, 100포인트는 임의로 설정한 것입니다. 더 많이 주실 수록 시스템이 활성화 되리라 믿습니다?잘 모르겠다? 하시는 분들을 위해 스샷 부분 참고하세요



     그리고 하단에 구독 추가 시 알림은 기본적으로 되어있어 포인트 지급 부분만 수정 하면 됩니다.
    $data = array('status' => 'ok');
    코드 바로 위에 아래 코드를 넣어주세요
    // 구독 대상 회원 정보 가져오기 $sb_fw_info = get_member($sb_fw_id); // 구독 추가시 포인트 지급 (100 포인트) insert_point($member['mb_id'], 100, $sb_fw_info['mb_nick'].'님 구독 추가', '@subscribe', 'subscribe_'.G5_TIME_YMDHIS, G5_TIME_YMDHIS);
    마찬가지로 잘 모르겠다? 하시면 아래 스샷 보고 참고 하세요

     
    자! 여기까지 오셨다면 기본적으로는 끝났습니다.다만 My 페이지 내 구독자에서 삭제 시 포인트 회수 및 알림 설정이 남았습니다.

    rb/rb.mod/subscaribe/ajax.subscribe_update.php 파일을 열어주세요
    그리고 삭제 되는 부분을 찾습니다.
     if($sb_type == "del") {         if (isset($_POST['sb_id']) && !empty($_POST['sb_id'])) {                          $mb_id = $member['mb_id'];             $sb_id = $_POST['sb_id'];
    그리고 $sb_id 하단에 아래 코드를 넣어주세요
    // 구독 취소한 회원 정보 및 데이터 가져오기 $sb_data = sql_fetch("SELECT * FROM rb_subscribe WHERE sb_id = '{$sb_id}' and sb_mb_id = '{$mb_id}'"); $sb_info = get_member($sb_data['sb_fw_id']); // 구독 취소시 포인트 차감 (-100 포인트) insert_point($mb_id, 100 * - 1, $sb_info['mb_nick'].'님 구독 취소', '@subscribe', 'subscribe_'.G5_TIME_YMDHIS, G5_TIME_YMDHIS); // 구독 취소 알림 메시지 발송 memo_auto_send($member['mb_nick'].'님 께서 회원님을 구독 취소 하셨습니다.', G5_URL.'/rb/home.php?mb_id='.$mb_id.'&ca=fn', $sb_data['sb_fw_id'], "system-msg");
    스샷은 아래를 참고 하세요


     여기까지!입니다.
    여기까지 잘 따라 오셨다면 구독 시 100포인트가 지급되며, 구독 취소 시 100포인트가 회수 됩니다.또한 구독 취소 시 알림까지 오게 됩니다.
    구동 영상은 아래를 참조 하시길 바랍니다.고맙습니다.

     
    • 8aeab0b19d4b1811f22d6c81d1d65c2c_1739843201_043.png
    • 61
    • 오래 전
      2025.02.16
  • 오래 전
  • 홈페이지 접속시 연결된 여러도메인을 일괄적으로 메인도메인으로 이동시켜주기
  • www.aaa.com 접속시www.ccc.com 으로 접속하고 싶을경우
    이외 모든 연결된 도메인을 www.ccc.com 으로 접속하고자 할 경우
    <script type="text/javascript"> 
    var url = "www.ccc.com"; 
    if(location.host.toLowerCase().indexOf(url) == -1){ 
    location.href = "https://" + url + location.pathname + location.search; 

    </script> 
    그누보드5에 적용하고 싶으신 분들은위 스크립트를그누보드5 관리자 페이지 > 환경설정 > 레이아웃 추가설정(추가 script, css) 에다가 넣으시면 됩니다.
    • 60
    • 오래 전
      2025.02.14
  • 오래 전
  • 게시글 목록 인기순/추천순/날짜순 정렬 기능 추가 하기
  • 안녕하세요...미니님a입니다.
    해당 기능은 댓글로 팡야님께서 요청 하셔서 작업 했습니다.해당 기능은 커스터마이징을 한 사용자에게 유효하며, 스킨으로 적용하실 분들은 아래 링크에서 적용하시면 됩니다.
     스킨 https://rebuilder.co.kr/userdata/366
    단. 공지는 최우선 정렬이라서, 포함되지 않습니다.
    기본 : theme/rb.basic/skin/board/rb_basic/list.skin.php 파일을 열어주세요통합 : theme/rb.basic/skin/board/rb.bbs/list.skin.php 파일을 열어주세요
    그리고 상단에 스타일을 우선 적용 해주세요단. style.css 에 적용하셔도 무방합니다.
    <style> .order_list{ display: flex; justify-content: flex-end; margin-bottom: 24px; } .sort_select_wrap{ flex-basis: 15%; } @media (max-width: 1024px) { .sort_select_wrap{ flex-basis: 20%; } } @media (max-width: 768px) { .sort_select_wrap{ flex-basis: 30%; } } @media (max-width: 480px) { .sort_select_wrap{ flex-basis: 40%; } } </style>
    어딘지 잘 모르겠다? 하시면 아래 스샷 참고 하세요

     
    그리고 다음 코드를 찾아 주세요통합 게시판의 경우는 theme/rb.basic/skin/board/rb.bbs/top/basic/skin.php 파일 맨 하단에 있습니다. (똑같은 코드가 있음)
    <div class="cb"></div>     </ul>
    이 코드 바로 밑에 아래 코드를 넣어주세요
    <div class="order_list">         <div class="sort_select_wrap">             <select name="sort_option" id="sort_option" onchange="changeSortOption(this.value)" class="select" style="width: 100%;">                 <option value="wr_datetime desc" <?php echo ($sst == 'wr_datetime' && $sod == 'desc') ? 'selected' : ''; ?>>최신순</option>                 <option value="wr_good desc" <?php echo ($sst == 'wr_good' && $sod == 'desc') ? 'selected' : ''; ?>>추천순</option>                 <option value="wr_hit desc" <?php echo ($sst == 'wr_hit' && $sod == 'desc') ? 'selected' : ''; ?>>조회순</option>             </select>         </div>     </div> 마찬가지로 잘 모르겠다? 하시면 아래 스샷 참고 하세요

     
    자 다왔습니다. 이제 맨 하단에 스크립트만 추가 해주시면 됩니다.이부분은 코드 찾는게 아니라 진짜 맨 끝으로 이동 해주세요
    그리고 다음 코드를 넣어주세요통합 게시판의 경우 theme/rb.basic/skin/board/rb.bbs/list.skin.php 파일 맨 하단에 넣어 주시면 됩니다.
    <script> function changeSortOption(value) {     var [sst, sod] = value.split(' ');     var currentUrl = window.location.href;          // URL에서 현재 정렬 파라미터 제거     currentUrl = currentUrl.replace(/[?&]sst=[^&]+/, '').replace(/[?&]sod=[^&]+/, '');          // 새로운 정렬 파라미터 추가     var connector = currentUrl.includes('?') ? '&' : '?';     var newUrl = currentUrl + connector + 'sst=' + sst + '&sod=' + sod;          // 페이지 새로고침     window.location.href = newUrl; } </script> 마찬가지로 잘 모르겠다? 하시면 스샷 참고 하시길 바랍니다.

    자 끝났습니다. 이제 테스트 해보시겠어요?실제 구동 영상은 아래와 같습니다.
    고맙습니다.

     
    [수정 반영]2025.02.17- 모바일에서 셀렉트 박스가 비정상적으로 보이던 오류 수정 *상단 스타일 부분만 수정 되었습니다.*
    • 7bfe84788c985ae7490a451d1dc453de_1739767767_4299.png
    • 59
    • 오래 전
      2025.02.14
  • 오래 전
  • 게시판 내 추천해요/별로에요 숫자를 실시간으로 변경해봅시다.
  • 안녕하세요...미니님a입니다.
    리빌더에 추천/비추천 > 추천해요/별로에요 라는 문구로 변경 되어 사용 중이신 것을 알고 계실겁니다.그런데 원래 추천/비추천을 하게 되면 실시간으로 숫자가 올라갑니다.
    그렇지만, 리빌더에는 그 기능이 누락 되어있습니다.기능상 오류는 아니고 리빌더 개발과정에서 해당 태그를 뺀 것으로 보이는데요
    무슨 말인지는 아래 영상 확인해보세요
     그리고 새로고침 하면 정상적으로 숫자가 보여지게 됩니다.
    이걸 수정할 것인데요별거 아닙니다.
    파일 경로는 다음과 같습니다.
    기본: theme/rb.basic/skin/board/rb_basic/view.skin.php통합: theme/rb.basic/skin/board/rb.bbs/skin/view/basic/skin.php 
    아래 코드를 찾아주세요[code]<div id="bo_v_act">        <?php if ($good_href) { ?>        <span class="bo_v_act_gng">            <a href="<?php if(!$is_member) { ?>javascript:alert('로그인 후 이용하실 수 있습니다.');<?php } else { ?><?php echo $good_href.'&amp;'.$qstr ?><?php } ?>" id="good_button" class="bo_v_good">추천해요 <?php echo number_format($view['wr_good']) ?></a>            <b id="bo_v_act_good" class="font-R"></b>        </span>        <?php } ?>        <?php if ($nogood_href) { ?>        <span class="bo_v_act_gng">            <a href="<?php if(!$is_member) { ?>javascript:alert('로그인 후 이용하실 수 있습니다.');<?php } else { ?><?php echo $nogood_href.'&amp;'.$qstr ?><?php } ?>" id="nogood_button" class="bo_v_nogood">별로에요 <?php echo number_format($view['wr_nogood']) ?></a>            <b id="bo_v_act_nogood" class="font-R"></b>        </span>        <?php } ?>    </div>[/code]
    여기에서 
    [code]<?php echo number_format($view['wr_good']) ?> [/code]
    해당 부분을
    [code]<strong><?php echo number_format($view['wr_good']) ?></strong>[/code]
    요렇게 변경 해주세요
    그리고 바로 밑에 별로에요 부분을 찾아주시구요
    [code]<?php echo number_format($view['wr_nogood']) ?>[/code]
    해당 부분을
    [code]<strong><?php echo number_format($view['wr_nogood']) ?></strong>[/code]
    변경하시면 실시간으로 변경 됩니다.구동 영상은 아래를 참조 하세요
    고맙습니다.

     

    • 58
    • 오래 전
      2025.02.12
  • 오래 전
  • 그누보드5(리빌더) 영카트(쇼핑몰) 끄기/사용안하기
  • 그누보드에선 영카트와 그누보드가 하나로 배포 되고, 설치되어 있습니다.근데, 리빌더 혹은 커뮤니티만 운영하고 싶을 경우 SHOP/마켓/영카트 메뉴가 노출 되어 불편을 겪고 계신 분들이 계실텐데요그럴경우 아래의 간단한 조치만으로 해결 할 수 있습니다.
    data/dbconfig.php를 찾습니다
    해당 파일을 열어코드 찾기define('G5_USE_SHOP', true);를 찾아 true 를, false 로 변경
    예시 :define('G5_USE_SHOP', false);
    false로 바꾸면, 그누보드5 관리자 페이지서 쇼핑몰 관련 메뉴들이 전부 하이드 (숨김)처리 됩니다.

검색

게시물 검색
구매 신청
  • 구매문의 : [email protected] / 010-6466-3355
    신청 이후 담당자가 개별연락 드리고 있습니다.
    입금자명과 실제 입금자가 동일한 경우 자동처리 됩니다.
  • 결제예정 금액 : 0 (VAT별도)
    하나은행(KOEXKRSE) : 258-910104-00407 / 김은정(인덱스)

  •  
  • 신청 및 FCM 가이드
      안드로이드 웹앱 및 푸시알림을 사용하기위한 A-Z!
      잘 따라오시면 어렵지 않습니다.

      1. FCM (Firebase Cloud Messaging) 세팅하기

      1-1. 시작하기
      https://console.firebase.google.com?hl=ko 으로 접속하여 [시작하기] 를 클릭합니다. FCM은 구글계정이 있으면 무료로 사용 가능 합니다.




      1-2. 프로젝트 생성하기
      [프로젝트 시작하기] 를 클릭합니다.




      프로젝트의 이름을 설정합니다.
      앱이름(사이트명, 상호명)을 영문으로 입력하는것이 가장 좋습니다.
      입력하셨다면 [계속] 을 클릭해주세요.




      애널리틱스 사용설정을 활성화 해주시고(선택사항)
      [계속] 을 클릭해주세요.




      애널리틱스 위치를 [대한민국] 또는 거주국가를 선택하시고 약관 동의 후 [프로젝트 만들기] 를 클릭해주세요.




      프로젝트 생성이 완료 되었습니다. [계속] 을 클릭하시면 FCM메인페이지로 이동 합니다.




      1-3. 앱 생성하기
      이전 단계에서 프로젝트를 생성했습니다.
      이제 프로젝트안에 안드로이드 앱을 생성해보겠습니다.

      FCM 메인 중앙에 주황색 동그란 버튼이 3개 있습니다.
      가운데에 있는 (안드로이드 로고) 버튼을 클릭해주세요.




      버튼을 클릭하셨다면 앱등록 창이 오픈 됩니다.
      안드로이드 패키지 이름 및 앱 닉네임을 입력하세요.

      패키지 이름은 반드시 com.webview.앱영문명 으로 입력하셔야 합니다.
      com.webview. 를 반드시 넣어주셔야 합니다.
      입력 예) com.webview.rebuilder

      앱 닉네임은 사이트명이나 상호명, 앱이름 등을 입력해주시면 됩니다.
      디버그 서명은 입력하지 않아도 됩니다.

      입력을 마치셨다면 [앱등록] 을 클릭해주세요.
      다음페이지로 넘어간다면, 입력하신 패키지명 (com.webview.앱영문명) 을 메모장에 메모해주세요.





      [google-services.json 다운로드] 버튼을 클릭하셔서 파일을 다운받아 주세요.
      다운을 받으셨다면 [다음] 을 클릭해주세요.




      Groovy(build.gradle) 선택하신 후 [다음] 을 클릭해주세요.




      앱 생성이 완료 되었습니다.
      [콘솔로 이동] 을 클릭하시면 메인으로 이동 됩니다.




      1-4. 비공개 키파일 생성하기
      거의 다왔습니다. 조금만 더 힘내세요.
      저도 이거 작성하느라 무쟈게 힘들었습니다. 리빌더화이팅.

      화면 상단에 아까 입력하신 이름으로 앱이 생성된게 보이신다면,
      좌측 상단에 [프로젝트 개요] 메뉴 옆에 톱니바퀴 아이콘을 클릭하여
      [프로젝트 설정] 으로 이동해주세요.




      프로젝트 설정으로 오셨다면 상단 탭메뉴에서 [서비스 계정] 을 클릭하세요.





      화면 아래쪽에 있는 [새 비공개 키 생성] 을 클릭하세요.

      키파일은 버튼 클릭시 자동으로 다운로드 됩니다.
      중요한 파일이므로 파일을 타인에게 공개하거나 해서는 안됩니다.





      친절하게 중요한 파일임을 알려줍니다.
      [키 생성] 을 클릭하면 json 파일이 다운로드 됩니다.




      다운로드된 파일은 rebuilder-demo-a4cc0-firebase-adminsdk-au83h-41e4b5df03.json 과 같은식으로 저장됩니다.
      이름이 너무 긴 관계로 임의파일명으로 변경해주세요.
      가이드에서는 key.json 으로 설명하겠습니다.

      이제 준비는 모두 끝났습니다!
      바탕화면에 1-3에서 다운로드 했던 google-services.json 파일과,
      방금 이름을 변경했던 key.json 파일이 있다면 잘 하셨습니다. (파일아이콘은 무시해주세요. 다를 수 있습니다.)




      2. 리빌더 앱관리 설정하기

      2-1. 파일 업로드하기
      위 단계에서 이름을 변경했던 key.json 파일을 사용하시는 웹서버(웹호스팅)에 FTP 프로그램으로 접속하여 업로드 해주세요.
      업로드 위치는 /data/push/key.json 입니다.

      2-2. 앱관리 설정하기
      관리자모드 > 빌더설정 > 앱관리 메뉴로 이동해주세요.
      [앱관리] 메뉴가 없다면 리빌더 공식홈페이지 > 부가기능 다운로드 에서 [안드로이드 하이브리드 웹앱 + Push 알림] 기능을 다운로드 후 설치해주세요.
      바로가기 > https://rebuilder.co.kr/membership/30

      설치가 되셨다면 관리자모드 > 빌더설정 > 앱관리 메뉴로 이동해주세요.

      스크롤을 내리시면 [FCM 설정] 섹션이 있습니다.
      FCM 패키지명, FCM 프로젝트 ID, FCM 비공개키파일 항목을 모두 입력 하시고
      [확인] 을 클릭해주시면 설정은 마무리 됩니다.




      [FCM 패키지명]
      1-3 에서 설정했던 com.webview.앱영문명 을 입력하시면 됩니다.

      [FCM 프로젝트 ID]
      1-4 에서 이동했던 [프로젝트 설정] 페이지로 이동하시면 내 프로젝트 섹션에서 확인하실 수 있습니다. (스샷참조)

      [FCM 비공개키파일]
      위에서 임의파일명으로 변경했던 파일명 key.json 을 입력하시면 됩니다.




      고생하셨습니다. 모든 설정이 완료 되었습니다.
      1-3 에서 다운로드 했던 google-services.json 파일은
      신청서에 첨부해주셔야 합니다.


      창을 닫아주시고, 신청을 계속해주세요!