영카트 list 함수 질문드립니다.

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
영카트 list 함수 질문드립니다.

QA

영카트 list 함수 질문드립니다.

본문

상품리스트에서 특정 분류를 출력하지 않기 위한 작업중입니다.

$list->set_query($sql);

위 코드로 쿼리를 직접 바꿔줄 수 있는 부분 확인했습니다.

그런데 바꾸기 전 쿼리를 몰라서 where절만 추가하려면 어떻게 처리할지 고민입니다.

아시는분 답변 주시면 감사하겠습니다ㅜㅜ

 

+전체 상품을 출력하기 위해 

$list->set_category($ca['ca_id'], 1);

$list->set_category($ca['ca_id'], 2);

$list->set_category($ca['ca_id'], 3);

이 부분을 주석처리했는데 

나온 전체상품에서 한 분류를 제외해야하는 상황입니다.

이 질문에 댓글 쓰기 :

답변 3


function run() { ... }

보시면

set_category 로 세팅된 조건들이


ca_id like ... ca_id2 like ... ca_id3 ...

like 검색이 되는것 같은데 이부분은 성능이 떨어지는 부분이라

분류를 제외하는 not like 같은 검색을 할바엔

필요한 분류만 모두 조건에 추가하는게 오히려 낫습니다.

 

lib/shop.lib.php 파일에서 list 클래스를 보시면

thumb-1904392157_1662546360.1163_730x349.png

다음과 같이 set_fields 메서드는 있습니다.

 

쿼리를 직접 바꿔줄 수 있는 부분 확인했습니다

<---쿼리를 직접 넣어서 하는 것은 리스트를 몇개 또는 전체를

한꺼번에 불러오는 것 밖에 못합니다(페이징을 할 수 없기 때문입니다)

 

한 분류를 제외해야하는 상황입니다<----- 이 말은 대단히 애매모호 합니다

10 이라는 분류가 있어서 제외하는 코드를 만들때 10 제외/ 1010 제외 / 101020 제외 중

어떻게 제외하겠다는 것인지 실제적으로 질문을 해야 추측이 아닌 실제적인 답변이 가능 합니다

-- 제외하는 분류가 1010이면 1010만 제외할 것인지 101010, 101020등도 제외할 것인지??

-- 제외하는 분류를 ca_id, ca_id2, ca_id3 1차, 2차 3차 특정할 것인지 모두 할 것인지??

 

1010분류 제외하는 방법 ==분류설정하는 것과 동일하게 흉내내면 됩니다

1. shop.lib.php 에서 클래스에 다음 함수 추가

 function not_category($ca_id , $level=1){

  if ($level == 2) $this->not_ca2 = $ca_id;

  else if ($level == 3) $this->not_ca3 = $ca_id;

  else $this->not_ca = $ca_id;

}

2. function run() { 함수에서  $sql_where = " where " . implode(" and ", $where); 윗줄에 추가

$where2 =array();

 if ($this->not_ca) $where2[] = " ca_id not like '{$this->not_ca}%' "; 

 if ($this->not_ca2) $where2[] = "ca_id2 not like '{$this->not_ca}%' ";  

 if ($this->not_ca3) $where2[] = "ca_id3 not like '{$this->not_ca}%' "; 

 if( $where2[0]) $where[] =  " ( " . implode(" or ", $where2) . " ) ";

 

3. 호출하는 곳에서 $list->set_category($ca['ca_id'], 3); 다음에 추가

$list->not_category('1010'); <--1차분류(ca_id)에서 제외

$list->not_category('1010', 2); <--2치분류(ca_id2)에서 제외

위와 같이 제외할 분류 설정

 

 

 

 

 

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

회원로그인

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