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

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

몽쉘호우 8년 전 조회 4,036

안녕하세요!

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

 

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

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

 

우선 gnucommerce/shop/item_list.php에서

 

</p><p>$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);</p><p>//상품 정렬 관련 html
if( gc_is_product_page($wp_query) || $wp_query->found_posts > 1 ){
    gc_skin_load('item_list_head.skin.php', $it_args);
}</p><p>

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

 

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

</p><p>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',
);
}</p><p> </p><p>add_action('gc_item_post_view', 'gc_itemlist_orderby');</p><p>//gc_item_post_view 대신에 여러가지 태그를 시도해봤는데도 적용이 안 되었습니다ㅜ

 

혹은

 

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

로 작성했는데,

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

 

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

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

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

답변 2개

채택된 답변
+20 포인트
thisgun
8년 전

안녕하세요.

 

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

 

질문에 대한 답변은...

 

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

 

297번째 줄에

 

// Run the query 

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

 

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

 

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

 

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

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

 

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

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

몽쉘호우
8년 전
아유 감사합니다ㅠㅠ♥

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

shop.lib.php

에 가시면 맨 위에

값이 있습니다.

그 클래스 수정 하면 됨요. 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

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

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

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

로그인