팁과노하우

  • 팁과노하우 포인트 정책
      글쓰기
      100P
      댓글
      10P
  • 전체 104건 / 5 페이지
    • 44
    • 오래 전
      2025.01.05
  • 오래 전
  • 베이직2 게시판 리스트에 인기글, 공지사항 넣기
  • list.skin.php
    271줄 아래<?php if($list[$i]['comment_cnt']) { ?><span class="fl_icons font-B main_color">+<?php echo number_format($list[$i]['wr_comment']); ?></span><?php } ?>
    넣어 주면 됩니다.
    <?php if($list[$i]['icon_new'] || $list[$i]['icon_hot'] || $list[$i]['is_notice']) { ?> <!--<?php if ($list[$i]['icon_new']) echo "<span class="lb_ico_new">새글</span>"; ?>--> <?php if ($list[$i]['icon_hot']) echo "<span class="lb_ico_hot">인기</span>"; ?> <?php if ($list[$i]['is_notice']) echo "<span class="lb_ico_noti">공지</span>"; ?> <?php } ?>
    • 43
    • 오래 전
      2024.12.27
  • 오래 전
  • 쇼핑몰 스킨 설정을 미리 지정 하는 팁입니다.
  • 반복 작업을 하다 보니선택의 의미가 없는 듯 해서요.
    (테마)basic으로 미리 설정 해 두는 것 입니다.
    /adm/shop_admin/itemform.php 에서
    13~14 번째 줄
    'it_skin'=>'','it_mobile_skin'=>'', 해당 부분을
    'it_skin'=>'theme/basic','it_mobile_skin'=>'theme/basic',
    해주면 테마 basic이 선택 되어 나옵니다.
    • 42
    • 오래 전
      2024.12.24
  • 오래 전
  • 보안서버 입력시 경로 입력하기
  • config.php 파일에서아래의 부분에 주소를 적게 되는데요.
    define('G5_DOMAIN', '');define('G5_HTTPS_DOMAIN', '');
    잘 못 입력하면접속이 되기도 하고 안되기도 하고 하더군요.

    아래와 같이 넣어주면쉽게 고민 안하고 잘 접속 됩니다.
    define('G5_DOMAIN', 'https://'.$_SERVER['HTTP_HOST']);define('G5_HTTPS_DOMAIN', 'https://'.$_SERVER['HTTP_HOST']);
    폰트어썸도 안 깨진 답니다.
    • 41
    • 오래 전
      2024.12.20
  • 오래 전
  • 카카오톡 링크 보낼 때 이미지 깔끔하게 보내기
  • 카카오톡 에서 자신의 홈페이지를 링크 걸 때원하는 이미지로 보내지는 겁니다.
    환경설정 > 추가 메타태그에 넣어 주세요.
    <meta property="og:title" content="홈페이지 제목"/> <meta property="og:url" content="홈페이지 주소/"/> <meta property="og:description" content="홈페이지 설명"/> <meta name="format-detection" content="telephone=no"> <meta property="og:image" content="홈페이지 주소/img/cacao.png?ver=20241220"/>
    다른 이미지로 변경시20241220 이부분을 오늘 날짜로 바꾸어 주면 이미지가 빨리 갱신 될 거에요.
    • 40
    • 오래 전
      2024.12.19
  • 오래 전
  • 첨부 이미지 중앙 정렬하기
  • 첨부 이미지는 좌측으로 보여 지는데요.
    해당 view.skin.php 부분 186번째 줄 보면 (갤러리 게시판 기준)
    echo "<div id=\"bo_v_img\">\n"; 이부분을 아래와 같이 수정해 보세요.echo "<div id=\"bo_v_img\" style='text-align:center'>\n";

        <!-- 본문 내용 시작 { -->     <div id="bo_v_con">         <?php             // 파일 출력             $v_img_count = count($view['file']);             if($v_img_count) {                 echo "<div id="bo_v_img" style='text-align:center'>n";                 foreach($view['file'] as $view_file) {                     echo get_file_thumbnail($view_file);                 }                 echo "</div>n";             }         ?>
    • 39
    • 오래 전
      2024.12.14
  • 오래 전
  • 마우스 오버시 카테고리 메뉴 색상 변경하기
  • 해당 보드의 style.css
    402 줄 정도 보면
    .rb_bbs_wrap #bo_cate a:hover {background-color: transparent; font-family:'font-B',sans-serif; color:#AA20FF;}
    color:#AA20FF; 추가 해주면 마우스 오버시 원하는 색상으로 카테고리 메뉴가 나 옵니다.

     
    • 38
    • 오래 전
      2024.12.09
  • 오래 전
  • 금일 게시글 수 및 댓글 수 그리고 신규회원/총 회원 노출하기
  • 카운터 스킨 /theme/rb.basic/skin/visit/basic/ 경로 파일을 수정 해주시면 됩니다.
    <?php if ($is_admin == "super") {?> 이 부분은 관리자만 볼 수 있는 권한 입니다.

    [code]<?phpif (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
    global $is_admin;
    // add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨add_stylesheet('<link rel="stylesheet" href="'.$visit_skin_url.'/style.css">', 0);

    $today_date = date("Y-m-d");$today_sql = "SELECT                (SELECT COUNT(*) FROM g5_board_new WHERE DATE(bn_datetime) = '$today_date' AND wr_id = wr_parent) AS write_count,                (SELECT COUNT(*) FROM g5_board_new WHERE DATE(bn_datetime) = '$today_date' AND wr_id <> wr_parent) AS comment_count"; $today_query = sql_query($today_sql);$today_result = sql_fetch_array($today_query); $write_count = $today_result['write_count'];$comment_count = $today_result['comment_count'];
    global $is_admin;
    // add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨add_stylesheet('<link rel="stylesheet" href="'.$visit_skin_url.'/style.css">', 0);

    ?>
    <div class="visit_flex">    <ul><li class="RealCount_t main_color font-B">RealCount</li>
    <?php if ($is_admin == "super") {?> <li>금일 게시글수 <span class="font-B"><?php echo number_format($write_count) ?></span></li> <li>금일 댓글수 <span class="font-B"><?php echo number_format($comment_count) ?></span></li> <li>신규회원/총 <span class="font-B"> <!-- 접속자집계 시작 { -->
          <?php                        $sql_m7_COUNT="select COUNT(*) as ma_cou from `g5_member` where  mb_open_date >=(curdate()-interval 7 day)"; $row_sql_m7_COUNT = sql_fetch($sql_m7_COUNT);                       echo $row_sql_m7_COUNT[ma_cou];echo "/";                    $sql_m_COUNT="SELECT COUNT(*) as ma_cou FROM `g5_member`"; $row_sql_m_COUNT = sql_fetch($sql_m_COUNT);

      echo $row_sql_m_COUNT[ma_cou];                    ?> <!-- } 접속자집계 끝 --> </li>
    <?php } ?>        <li>오늘 <span class="font-B"><?php echo number_format($visit[1]) ?></span></li>        <li>어제 <span class="font-B"><?php echo number_format($visit[2]) ?></span></li>        <li>최대 <span class="font-B"><?php echo number_format($visit[3]) ?></span></li>        <li>전체 <span class="font-B"><?php echo number_format($visit[4]) ?></span></li>    </ul></div>[/code]
    • 37
    • 오래 전
      2024.12.06
  • 오래 전
  • 오른쪽 마우스 클릭 금지 하기
  • 관리자는 오른쪽 마우스가 활성화 되지만회원들은 오른쪽 마우스가 먹통 됩니다.
    sir : glitter0gim 님께서 알려주셨어요.
    [code]<?php if (!$is_admin): // 관리자 권한 확인 ?>    <script>        document.addEventListener("DOMContentLoaded", function() {            function disableEvent(event) {                event.preventDefault();            }            // 마우스 오른쪽 방지            document.body.addEventListener("contextmenu", disableEvent);            // 드래그 방지            document.body.addEventListener("dragstart", disableEvent);            // 텍스트 방지            document.body.addEventListener("selectstart", disableEvent);            // 키보드 방지            document.addEventListener("keydown", function(event) {                if ((event.ctrlKey || event.metaKey) && (event.key === 'c' || event.key === 's')) {                    event.preventDefault();                }            });        });    </script><?php endif; ?>[/code]
    • 36
    • 오래 전
      2024.11.25
  • 오래 전
  • 게시물 가끔 사진이 위에꺼가 아래에 보이는 현상해결법
  • 썸네일이 아래 글에 썸네일이 없는경우아래글에 위에 썸네일이 보이는증상이 있습니다.처리해야할 빨강색 부분입니다.
                $thumb = get_list_thumbnail($board['bo_table'], $list[$i]['wr_id'], $board['bo_gallery_width'], $board['bo_gallery_height'], false, true);                        if($thumb['src']) {                if (strstr($list[$i]['wr_option'], 'secret')) {                    $img_content = '<img src="'.G5_THEME_URL.'/rb.img/sec_image.png" alt="'.$thumb['alt'].'" >';                } else {                     $img_content = '<img src="'.$thumb['src'].'" alt="'.$thumb['alt'].'" >';                }            } else {         // 이미지가 없는 경우         $img_content = '';     }
    • 35
    • 오래 전
      2024.11.19
  • 오래 전
  • 카카오소셜 토큰 연결끊기
  • kakao로그인후에 연결해제하거나 탈퇴해도 연결이 토큰 끊기지 않는 부분 아래 admin키를 발급받아서 처리하면됩니다.
    function getKakaoUserIdByMbId($mb_id) {    global $g5;    $sql = "SELECT identifier FROM g5_member_social_profiles WHERE mb_id = '{$mb_id}'";    $row = sql_fetch($sql);
        if ($row && isset($row['identifier'])) {        return $row['identifier']; // 카카오 user_id 반환    } else {        return null; // 카카오 user_id가 없음    }}

    function kakaoUnlinkUser($kakaoUserId) {    $adminKey = 'xxxxxxxxxxxxxxxxxxxxxxxxxxx'; // 카카오 앱의 관리자 키    $url = 'https://kapi.kakao.com/v1/user/unlink';
        $headers = array(        "Authorization: KakaoAK $adminKey",        "Content-Type: application/x-www-form-urlencoded;charset=utf-8"    );
        $postData = array(        'target_id_type' => 'user_id',        'target_id' => $kakaoUserId    );
        $ch = curl_init();    curl_setopt($ch, CURLOPT_URL, $url);    curl_setopt($ch, CURLOPT_POST, true);    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($postData));    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
        $response = curl_exec($ch);    $statusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);    curl_close($ch);
        if ($statusCode == 200) {        echo "사용자의 카카오 연결이 성공적으로 해제되었습니다.";        return true;    } else {        echo "연결 해제 실패: " . $response;        return false;    }}
    [사용법]
    $kakaoUserId = getKakaoUserIdByMbId($mb_id);//소셜 아이디 구하기 kakaoUnlinkUser($kakaoUserId);//카카오 연결끊기
    • 34
    • 오래 전
      2024.11.19
  • 오래 전
  • 상품보기에서 관리자 바로 수정하기
  • /theme/rb.basic/skin/shop/basic/item.form.skin.php
    적당한 곳에 넣으시면 노출 됩니다.
    [code]<?php if ($is_admin) {  ?><a href="<?php echo G5_URL; ?>/adm/shop_admin/itemform.php?w=u&it_id=<?php echo $it['it_id']; ?>&ca_id=<?php echo $it['ca_id']; ?> <font color="red">제품수정</font></a><?php } ?>[/code]
    • 33
    • 오래 전
      2024.11.19
  • 오래 전
  • 유튜브, 비메오 링크1, 2에 등록하면 본문에서 자동출력 및 재생
  • 안녕하세요 저 아래 댓글에 링크1, 링크2에유튜브 비메오 링크 넣으면 본문에 출력되는 방법을 물어보셔서 이렇게 간단한 방법으로 글 남깁니다.~추가로 게시물을 읽으면 링크의 영상이 바로 자동재생 되도록 하였습니다.이부분은 함수에서 ?autoplay=1&mute=1 이부분에 해당 되니 참고하시면 됩니다.
    1. 대상파일 : 게시판 스킨 view_skin.php


    2. 상단 php 안에 아래 함수 추가
    // 링크1과 링크2에 대해 YouTube, Vimeo, twitter, instagram,  링크를 감지하고 변환function embed_video_with_autoplay($url) {    // 유튜브 URL 처리    if (preg_match('/youtu\.be\/([a-zA-Z0-9_-]+)/', $url, $matches) ||         preg_match('/youtube\.com\/.*v=([a-zA-Z0-9_-]+)/', $url, $matches)) {        $video_id = $matches[1];        return "<iframe width='100%' height='315' src='https://www.youtube.com/embed/{$video_id}?autoplay=1&mute=1' frameborder='0' allow='autoplay; encrypted-media' allowfullscreen></iframe>";    }        // 비메오 URL 처리    if (preg_match('/vimeo\.com\/(\d+)/', $url, $matches)) {        $video_id = $matches[1];        return "<iframe width='100%' height='315' src='https://player.vimeo.com/video/{$video_id}?autoplay=1&mute=1' frameborder='0' allow='autoplay; fullscreen' allowfullscreen></iframe>";    }
        // 페이스북 동영상 링크에서 ID를 추출 (https://fb.watch/{video_id})    // 페이스북 동영상 링크에서 ID를 추출 (https://www.facebook.com/{page}/videos/{video_id}) if (preg_match('/fb\.watch\/([a-zA-Z0-9_-]+)/', $url, $matches)) {        $video_id = $matches[1];        return "<iframe src='https://www.facebook.com/plugins/video.php?href=https://fb.watch/{$video_id}' width='100%' height='315' frameborder='0' allowfullscreen></iframe>";    }
        // 유튜브, 비메오, 트위터, 인스타그램 URL이 아니면 빈 문자열 반환    return "";}

    3. style 추가<?php.....?><style>iframe {    width: 100%;    aspect-ratio: 16 / 9; /* 16:9 비율 */    height: auto; /* 실제 높이는 aspect-ratio에 의해 자동 계산됨 */}</style>


    4. 출력할 곳에 아래 코드 추가보통 글 내용 최상단에 출력되려면<?php echo get_view_thumbnail($view['content']); ?> 이부분 바로 위에 아래 코드 추가
    <?php  // 링크1과 링크2 유튜브 또는 비메오 링크 일 경우 본문에 영상 자동재생 되도록 출력 $link1_embed = $view['link'][1] ? embed_video_with_autoplay($view['link'][1]) : ''; $link2_embed = $view['link'][2] ? embed_video_with_autoplay($view['link'][2]) : '';
    // 출력 echo $link1_embed; echo $link2_embed; ?>
    • 32
    • 오래 전
      2024.11.14
  • 오래 전
  • Froala Editor 에디터에서 고정이 안되는부분
  • 하단 푸터에집어넣으면에디터가 500px높이로 스크롤되어 고정됩니다.
    <style>.fr-wrapper {    height: 500px; /* 고정된 높이 */    overflow-y: auto; /* 내용이 넘칠 때 스크롤 추가 */}
    /* 모바일 화면에서 높이 조정 */@media (max-width: 768px) {    .fr-wrapper {        height: 400px; /* 모바일 높이 */    }}
    </style>
    • 31
    • 오래 전
      2024.11.14
  • 오래 전
  • 입점몰 - 주문한 상품 입점사 파트너에게 문자 전송기능
  • 관리자에게만 문자가 전송되어 입점사는 주문들어온것을 알수가 없습니다. 이부분이 핵심기능이라일단 추가해보았습니다.
    수정은 간단합니다.mobile하고 pc하고 꼭해야합니다shop/orderformupdate.php 에서
    870라인정도에 sms발송하는 기능이 있는데 그 윗줄에 그냥 넣으시면됩니다.
    주문한 상품의 입점사에게 문자가 발송되고전화번호 중복되지 않습니다. 
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 입점사 정보 가져오기 코드
    include_once(G5_LIB_PATH.'/icode.sms.lib.php');
    $sql_partner = "SELECT DISTINCT m.mb_hp                 FROM g5_member m                JOIN g5_shop_cart c ON m.mb_id = c.ct_partner                JOIN g5_shop_item i ON i.it_id = c.it_id                WHERE m.mb_partner = 2                   AND c.od_id = '$od_id'                   AND i.it_partner = c.ct_partner";$result_partner = sql_query($sql_partner);$partner_numbers = array();
    while ($row_partner = sql_fetch_array($result_partner)) {    if ($row_partner['mb_hp']) {        $formatted_number = preg_replace("/[^0-9]/", "", $row_partner['mb_hp']);//str_replace("-", "", $row_partner['mb_hp']); // 하이픈 제거        if (!in_array($formatted_number, $partner_numbers)) { // 입점사 번호 중복 방지            $partner_numbers[] = $formatted_number;        }    }}
    // SMS 전송 시작if (count($partner_numbers) > 0) {    $SMS = new SMS; // SMS 연결    $SMS->SMS_con($config['cf_icode_server_ip'], $config['cf_icode_id'], $config['cf_icode_pw'], $config['cf_icode_server_port']);
        foreach ($partner_numbers as $recv_number) {//상품에 해당하는 입점사메시지발송
        $send_number = preg_replace("/[^0-9]/", "", $default['de_admin_company_tel']);        $sms_content = $default['de_sms_cont3']; // 관리자용 메시지 내용
    //내용에 값으로 변환작업실시 $sms_content = str_replace("{이름}", $od_name, $sms_content); $sms_content = str_replace("{보낸분}", $od_name, $sms_content); $sms_content = str_replace("{받는분}", $od_b_name, $sms_content); $sms_content = str_replace("{주문번호}", $od_id, $sms_content); $sms_content = str_replace("{주문금액}", number_format($tot_ct_price + $od_send_cost + (int) $od_send_cost2), $sms_content); $sms_content = str_replace("{회원아이디}", $member['mb_id'], $sms_content); $sms_content = str_replace("{회사명}", $default['de_admin_company_name'], $sms_content);
            $sms_content = iconv_euckr($sms_content);//한글깨지지않게 처리        echo $SMS->Add($recv_number, $send_number, $config['cf_icode_id'], $sms_content, "");//메시지발송    }
        $SMS->Send();    $SMS->Init(); // 보관하고 있던 결과값을 지웁니다.}
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    아래는 기존 소스 그대로 ...

    • 30
    • 오래 전
      2024.11.13
  • 오래 전
  • 바로가기 홈으로 등록한경우 당기면 새로고침 안되는부분 해결방법
  • 바로가기 홈으로 등록한 홈페이지가 위에서 아래로 당기면 새로고침이 안되는데pwa에서 이부분이 지원이 안되서 따로 만들어야 한다고 합니다.아래소스는 tail.php 하단에 넣으시면됩니다.
    <script src="https://cdnjs.cloudflare.com/ajax/libs/pulltorefreshjs/0.1.22/index.umd.min.js"></script>
    <script>
    let touchStartY = 0;let touchMoveY = 0;let isPullingDown = false;
    const standalone = window.matchMedia("(display-mode: standalone)").matches if(standalone) {
    // touchstart 이벤트로 초기 터치 지점 저장window.addEventListener('touchstart', function(event) {    // 스크롤이 맨 상단인지 확인 (window.scrollY 또는 다른 방식으로)    if (document.body.scrollTop === 0 || document.documentElement.scrollTop === 0) {        touchStartY = event.touches[0].clientY;        isPullingDown = false; // 초기화    }}, false);
    // touchmove 이벤트로 사용자가 스크롤하고 있는지 감지window.addEventListener('touchmove', function(event) {
        touchMoveY = event.touches[0].clientY;
        // 사용자가 아래로 당기고 스크롤이 맨 상단에 있을 때만 동작    if (touchMoveY > touchStartY && (document.body.scrollTop === 0 || document.documentElement.scrollTop === 0)) {        let distancePulled = touchMoveY - touchStartY;
            // 일정 거리 이상 당기면 새로고침 동작 감지        if (distancePulled > 50) {            isPullingDown = true;            console.log('Pulling down detected:', distancePulled, 'px');            // 새로고침 UI 표시 등을 여기에 추가        }    }}, false);
    // touchend 이벤트로 사용자가 손을 뗐을 때 동작window.addEventListener('touchend', function(event) {
    // alert(document.body.scrollTop);    if (isPullingDown && document.body.scrollTop<=0) {        console.log('Released after pulling down');        // 새로고침 또는 다른 동작 실행        window.location.reload(); // 새로고침        isPullingDown = false;    }}, false); }

    </script>

검색

게시물 검색