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

영카트 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)에서 제외

위와 같이 제외할 분류 설정

 

 

 

 

 

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

회원로그인

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