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

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
상품리스트(item)를 볼 때 정렬유형을 지정하고 싶습니다.

QA

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

답변 2

본문

안녕하세요!

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

 

메뉴에서 상품리스트(연결페이지 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 파일과 그 외 파일도 훑어보면서 공부하는 계기가 되었습니다. 댓글 달아주셔서 감사합니다!

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 937
© SIRSOFT
현재 페이지 제일 처음으로