회원 레벨별로 상품 노출을 제한하고 싶습니다.
본문
안녕하세요?
영카트5를 이용해서 사이트 제작중입니다.
회원 레벨별로 상품 노출을 제한하고 싶습니다.
우선, 관리자 페이지에서 상품관리의 여분필드를 이용해서 "주문가능회원등급" 을 설정했습니다.
예를 들어, A상품의 경우, 상품관리의 여분필드중 하나에 3 이라고 적어 두었습니다.
그러면 A상품은 레벨3 이상 회원만 볼 수 있어야 합니다.
상품 상세보기에서 레벨 제한은 할 수 있을것 같은데요...
리스트에서 조차 보이지 않게 하려니, 복잡하네요.
php 는 좀 안다고 생각했는데 상품 리스트 출력하는 부분의 소스를 보니 클래스를 이용하네요.
그래서 머리 아파하고 있습니다. 제 내공은 아직도 한없이 부족한가 봅니다.
소스를 잘 살펴보니... $list->set_query 를 이용하면 뭔가 될것 같긴한데...
정확하게 어찌해야 할지 좀 막막하네요...
도움 주시면 정말 감사감사 드리겠습니다~!!
답변 3
lib/shop.lib.php에서 function run() 부분을 찾으세요
globla ~~다음 행에 추가하세요
$where[] = " 여분필드중 하나 >= '$member[mb_level]' "; //여분필드중 하나 --> it_1 ~ it_10 중 하나
이정도는 간단하게 설명을 드릴 수가 없고 제작의뢰를 하시거나 따로 작업을 진행 하셔야 할 것 같네요..
단순히 리스트에서 출력을 막는게 아니라 상품을 가져오는 쿼리 부분을 수정해야 할 것 같아요..
/shop/list.php 에서 목록을 불러오기 위해 쿼리를 만드는 $list->set_category, $list->set_view 등을 무시하고 (주석처리 또는 삭제) set_query 로 쿼리를 만드시면 되구요.
쿼리에서 요청하신 사항만 말씀드리자면 "주문가능회원등급"이 지정된 여분필드가 it_1 이라 가정했을때
아래와 같이 하시면 될것으로 보이네요.
$sql = " select * from {$g5['g5_shop_item_table']} where it_1 >= '{$member['mb_level']}'";
$list->set_query($sql);
where 절에서는 요청하신 조건만 표기한 것으로 카테고리 및 다른 기타의 목록을 불러오기 위한 조건들은 따로 지정하셔야 합니다.