채택완료

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

2017-02-23 (목) 02:06:26 4,342

안녕하세요!

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

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

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

우선 gnucommerce/shop/item_list.php에서

Copy
$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);//상품 정렬 관련 htmlif( 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라는 별도 플러그인을 만들었고,

Copy
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 대신에 여러가지 태그를 시도해봤는데도 적용이 안 되었습니다ㅜ

혹은

Copy
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개 / 댓글 2개

채택된 답변
+20 포인트

안녕하세요.

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

질문에 대한 답변은...

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

297번째 줄에

// Run the query 

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

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

Copy
// 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 내용을 적용하면 됩니다.

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

답변에 대한 댓글 1개

아유 감사합니다ㅠㅠ♥
2017-02-23 (목) 09:39:46

shop.lib.php

에 가시면 맨 위에

값이 있습니다.

그 클래스 수정 하면 됨요. 

답변에 대한 댓글 1개

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

답변을 작성하려면 로그인이 필요합니다.