테스트 사이트 - 개발 중인 베타 버전입니다

배송업체 여러개 선택 하게 기능 수정방법

· 3개월 전 · 362 · 1

안녕하세요

프리랜서로 활동중인 비버팩토리입니다.

이번에 영카트 쓸일이 많다보니 고객님의 요청으로 배송 업체 여러개 설정 방법에 대해서 남겨봅니다.

 

/adm/shop_admin/configform.php

파일 접속합니다.

 

보면 배송업체라고 한 라인이 있습니다. 거기를 아래 소스코드로 변경해주세요.

<tr>
    <th scope="row"><label for="de_delivery_company">배송업체</label></th>
    <td>
        <?php echo help("이용 중이거나 이용하실 배송업체를 선택하세요."); ?>
        <?php echo get_delivery_company_checkbox($default['de_delivery_company']); ?>
    </td>
</tr>

 

그리고나서 아래 함수를 옮겨주세요. (적절한곳에 옮겨주세요 혹은 따로 확장시켜서 옮겨주심됩니다. ) 

if(!function_exists('get_delivery_company_checkbox')) {
// 배송업체 리스트 얻기
    function get_delivery_company_checkbox($company)
    {
        // 선택된 회사들을 배열로 처리 (콤마로 구분된 문자열이라면 분리)
        $selected_companies = is_array($company) ? $company : explode(',', $company);

        $checkbox = '';

        // "없음" 체크박스
        $checked = in_array('', $selected_companies) ? 'checked' : '';
        $checkbox .= '<label><input type="checkbox" name="de_delivery_company[]" value="" ' . $checked . '> 없음</label><br>' . PHP_EOL;

        // "자체배송" 체크박스
        $checked = in_array('자체배송', $selected_companies) ? 'checked' : '';
        $checkbox .= '<label><input type="checkbox" name="de_delivery_company[]" value="자체배송" ' . $checked . '> 자체배송</label><br>' . PHP_EOL;

        // 설정된 배송 업체 목록 처리
        $dlcomp = explode(")", str_replace("(", "", G5_DELIVERY_COMPANY));
        for ($i = 0; $i < count($dlcomp); $i++) {
            if (trim($dlcomp[$i]) == "") continue;

            list($value, $url, $tel) = explode("^", $dlcomp[$i]);

            $checked = in_array($value, $selected_companies) ? 'checked' : '';
            $checkbox .= '<label><input type="checkbox" name="de_delivery_company[]" value="' . $value . '" ' . $checked . '> ' . $value . '</label><br>' . PHP_EOL;
        }

        return $checkbox;
    }
}

 

 

 

이제는 백엔드로 넘어가도록 합니다.

/adm/shop_admin/configformupdate.php 파일 접근합니다.

 

$check_sanitize_keys = array( 여기 배열 변수로 이동합니다.

여기보면  //배송업체 라고 주석처리 된곳을 찾습니다.

거기부분을 주석처리 합니다. 혹은 이부분 삭제 하셔도됩니다.

//'de_delivery_company',          //배송업체

이유는 필드에 콤마를 제거 되어서 에러가 납니다.

 

이러고 저장합니다. 나머진 훅을 사용하면됩니다.

run_event('shop_admin_configformupdate'); 

여기서 택배배송 필드를 저장하는 기능을 만들면됩니다. (이부분은 따로 입력 안하셔도 됩니다.)

 

add_event('shop_admin_configformupdate',function () {
    global $g5;

    if (isset($_POST['de_delivery_company']) && is_array($_POST['de_delivery_company'])) {
        // 배열을 문자열로 변환
        $delivery_company = implode(',', $_POST['de_delivery_company']);
    } else {
        // 아무 것도 선택 안 했을 경우
        $delivery_company = '';
    }

// DB에 업데이트
    $sql = "UPDATE {$g5['g5_shop_default_table']} 
        SET de_delivery_company = '".sql_real_escape_string($delivery_company)."' 
        WHERE de_id = '1'";
    sql_query($sql);

}, G5_HOOK_DEFAULT_PRIORITY, 0);

이부분은 예를들어 가나다, 마바사 이렇게 콤마로 분리시켜 디비에 저장하는 쿼리 입니다.

이거 그대로 사용하시면 됩니다. 문제시 댓글로 남겨주세요. 그리고 맘에 드시면 좋아요 한번씩 눌러주세요^^

 읽어주셔서 감사합니다. 끝!

 

 

 

 

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

댓글 1개

필요시 댓글 남겨주시면 플러그인으로 만들어드립니다.

게시판 목록

영카트5 팁자료실

글쓰기
🐛 버그신고