영카트 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개
</p>
<p>function run() { ... }</p>
<p>
보시면
set_category 로 세팅된 조건들이
</p>
<p>ca_id like ... ca_id2 like ... ca_id3 ...</p>
<p>
like 검색이 되는것 같은데 이부분은 성능이 떨어지는 부분이라
분류를 제외하는 not like 같은 검색을 할바엔
필요한 분류만 모두 조건에 추가하는게 오히려 낫습니다.
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
쿼리를 직접 바꿔줄 수 있는 부분 확인했습니다
<---쿼리를 직접 넣어서 하는 것은 리스트를 몇개 또는 전체를
한꺼번에 불러오는 것 밖에 못합니다(페이징을 할 수 없기 때문입니다)
한 분류를 제외해야하는 상황입니다<----- 이 말은 대단히 애매모호 합니다
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)에서 제외
위와 같이 제외할 분류 설정
답변에 대한 댓글 1개
run() 함수 커스텀하여 해결했습니다.
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인