상품리스트(item)를 볼 때 정렬유형을 지정하고 싶습니다.

상품리스트(item)를 볼 때 정렬유형을 지정하고 싶습니다.

QA

상품리스트(item)를 볼 때 정렬유형을 지정하고 싶습니다.

본문

안녕하세요!

계속 혼자 코드를 붙잡다가 결국 질문을 드리게 되었습니다.

 

메뉴에서 상품리스트(연결페이지 item)를 클릭할 때, 보통 최근등록순으로 정렬이 되더라구요.

그걸 '판매많은순'으로 정렬되도록 하고 싶은데, 코드를 고쳐도 변경이 없습니다.

 

우선 gnucommerce/shop/item_list.php에서

 


$it_args = array(
    'skin_dir'  =>  $skin_dir,
    'item_list' =>  apply_filters('gc_main_item_obj', $item_list),
    'orderby'   => isset($_GET['orderby']) ? sanitize_text_field($_GET['orderby']) : 'post_date',
);//'post_date'를 'it_sum_qty'로 변경
do_action('gc_ca_include_head', $it_args);
//상품 정렬 관련 html
if( gc_is_product_page($wp_query) || $wp_query->found_posts > 1 ){
    gc_skin_load('item_list_head.skin.php', $it_args);
}

를 참조해서 중간 주석처럼 post_date를 it_sum_qty로 변경하려고 했습니다. 

 

일단은 그누커머스 플러그인이 업데이트 될 때를 대비해서 gc_customize라는 별도 플러그인을 만들었고,


function gc_itemlist_orderby(){
 $it_args = array(
    'skin_dir'  =>  $skin_dir,
    'item_list' =>  apply_filters('gc_main_item_obj', $item_list),
    'orderby'   => isset($_GET['orderby']) ? sanitize_text_field($_GET['orderby']) : 'it_sum_qty',
);
}
 
add_action('gc_item_post_view', 'gc_itemlist_orderby');
//gc_item_post_view 대신에 여러가지 태그를 시도해봤는데도 적용이 안 되었습니다ㅜ

 

혹은

 


function gc_itemlist_orderby($it_args){
 echo $it_args['orderby'] = 'it_sum_qty';
}
add_action('gc_item_post_view', 'gc_itemlist_orderby');

로 작성했는데,

안 되어서 직접 gnucommerce/shop/item_list.php의 코드를 변경(그냥 'post_date'를 'it_sum_qty'로 수정)해봤는데도 적용이 안 되더라구요.

 

하다하다 어떤 것이 문제인지 전혀 감을 못잡겠습니다ㅠ

답변 주시면 감사하겠습니다!! 

이 질문에 댓글 쓰기 :

답변 2

안녕하세요.

 

제가 짜 놓은 코드이지만, 지금와서 보니 그 부분에 대한 코드가 많이 부실하다고 느껴지네요. ( 나중에 그 부분에 대한 코드는 좀 더 보완 하도록 하겠습니다. )

 

질문에 대한 답변은...

 

/lib/gc_client.lib.php 파일에 보시면

 

297번째 줄에

 

// Run the query 

$gc_var->item_query = new GC_Product_Query($args); 

 

이렇게 되어 있는 부분을 아래와 같이 바꿔주세요. ( 다음 업데이트에 코드가 적용됩니다. )

 


        // Run the query
        if( ! is_null($wp_query) && is_post_type_archive(GC_NAME) ){
            $gc_var->item_query = $wp_query;
        } else {
            $gc_var->item_query = new GC_Product_Query($args);
        }

 

그리고 항상 실행되는 파일 ( 테마/functions.php 또는 적당한 파일 ) 에

아래 filter 내용을 적용하면 됩니다.

 


add_filter( 'gc_default_orderby', 'custom_gc_default_orderby' );
 
function custom_gc_default_orderby($orderby=''){
    //기본정렬 지정
    return 'it_sum_qty';
}

shop.lib.php

에 가시면 맨 위에

값이 있습니다.

그 클래스 수정 하면 됨요. 

아마 그누보드나 영카트가 아니어서 그런지 shop.lip.php가 없었고 gc.shop.lip.php가 있었지만 정렬관련 값이나 클래스가 없었습니다ㅠ 그러나 덕분에 gc.shop.lip.php 파일과 그 외 파일도 훑어보면서 공부하는 계기가 되었습니다. 댓글 달아주셔서 감사합니다!

답변을 작성하시기 전에 로그인 해주세요.
전체 123,671 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT