메인 페이지에서 상품리스트를 더보기 버튼으로 늘리려면...
관련링크
본문
어떻게 해야할까요..ㅠ.ㅠ
일단 관리자 쇼핑몰 초기화면,
추천 상품 출력에서 기존 스킨에 변화를 준다고 할 때
스킨은 새로 main.60.skin.php이라는 이름으로 하나 복사해서 만들었습니다.
구글링 중에 'Ajax based load more results with jQuery' 라는 제목으로
나름 간단할 것 같은 소스가 있어서 참고해서 만들고 있는데요.
※ 참고한 ajax소스 주소는 링크에 있습니다.
(영카트 질문답변 검색에서 비슷한 질문을 찾았는데 shop.lib.php파일의 run클래스를
참고하시라고 하던데 참고하고 손대기엔.. 실력 이전에 알아보기도 힘든..ㅠ.ㅠ)
일단 링크의 소스와 비슷하게
main.60.skin.php에 이런 script를 넣었습니다.
그리고 테마의 shop폴더에 shop.list.php라는 파일을 참고소스의 loadmore.php파일과 비슷하게 만들어봤어요.
shop.list.php 파일의 앞부분
이렇게 해서 해보니까 일단 ajax로 넘긴 page값은 넘어가는데
if ($this->view_it_img) {
echo "<div class=\"productImg\">
<a href=\"{$this->href}{$row['it_id']}\">".get_it_image($row['it_id'], $this->img_width, $this->img_height, '', '', stripslashes($row['it_name']))."</a>
</div>\n";
}
더보기 버튼을 누르면
Fatal error: Using $this when not in object context in
이런 무시무시한 에러가 뜨더라구요.
일단 궁금한 부분은
1. $this를 왜 인식 못하는가하는것!!
2. 애초에 ajax를 활용하려면 이런식으로 파일을 임의로 새로 만들고 하는건지 부터 근원적으로 의구심이 드네요..ㅠ.ㅠ
메인페이지에서 더보기 버튼만 누르면 한줄 혹은 그이상씩 상품리스트들을 더 늘릴 수 있게 하는 방법은 없을까요?
!-->답변 7
딸기케익님 안녕하세요.
우선 새로 만든 파일(스킨파일에서 넘긴 data를 받는 파일)에는
스킬 파일의 this->문법 자체가 안먹히는 부분이 있으니 코드를 간단하게 만들어서
기능적으로 되는건지 아니면 다른 부분이 이상한건지를 찾아가니까 풀리더라구요.
while문 안에 <li>태그 등의 반복 문장 넣으실 때
skin파일처럼 $this-> 등이 들어간 if문은 빼버리고 알맹이만 우선적으로 코딩을 간단하게 해서
ajax가 성공되게끔 해보시는것도 좋을것 같네요.
구글링으로 찾은 링크의 저 ajax형식으로 일단 영카트 적용하는데에 성공했으니 안되는건 아닌것 같아요.
ex)
echo "<li>\n";
if ($this->href) {
echo "<div class=\"sct_img\"><a href=\"{$this->href}{$row['it_id']}\" class=\"sct_a\">\n";
}
echo "</li>\n";
이걸 이런식으로
echo "<li>\n";
echo "<div class=\"sct_img\"><a href=\"".G5_URL."/shop/item.php?it_id=".$row['it_id']."\" class=\"sct_a\">\n";
echo "</li>\n";
그리고 while문 위에는 mysqli_fetch_array($ret)로 했는데 밑에껄로 적용^^; (되기는 둘다 되요.)
while($row=sql_fetch_array($ret)){ }
다시 한번 살펴보다가 해결했네요.
우선 main.60.skin.php에 쓰인 $this->로 이어지는 문법들을
ajax의 data를 받을 새로 만든 php페이지에서 인식 하지 못함으로 인해 생긴 문제이기에
받아온 return값의 요소들을 기본 php문법으로 하나씩 치환하면 됩니다.
ex) $this
->view_it_name =>
$row
[
'it_name'
]
$this
->view_it_name =>
$row
[
'it_name'
] 이러한 치환코드를 shop.list.php에 넣어야 하나요?
shop.list.php while 나머지 부분이 중요한거 같은데..도통 감을 못잡겟네요...
쪽지 좀 부탁드려요.
감사합니다. 카트궁금이님... 큰도움됐습니다.
카트궁금이님 덕분에 이상없이 .
$row
[
'it_?'
]은 구동이 잘됩니다.
근데 클릭했을시 뿌려지는 방식이 어렵더라구요.
힌트 좀 주시면 감사하겠습니다.
음.. 정확히 어떻게 안되는건지 잘 몰라서 답변드리기 애매한데
저 ajax소스의 기본 구조는
main.xx.skin.php -> 버튼 클릭 (처음 data-page="2" 로 설정)
ajax에서 이를 받아서 data를 새로만든 임의의 페이지 (shop.list.php)로 보냅니다.
$resultsPerPage=3;이라고 할 때
shop.list.php -> $page_limit=$resultsPerPage*($paged-1); -> $page_limit=3*(2-1)=3,
첫화면에서 쿼리문 날린조건이 LIMIT 0 , $resultsPerPage(3)
다음 데이터가 넘어가면서 LIMIT 3 , $resultsPerPage(3)
data를 받는쪽 shop.list.php의 버튼에는
data-page="<?php echo $paged+1 ;?>라고 표시가 되어있기 때문에
$resultsPerPage의 배수만큼 올라가게 되어있어요.
이게 저 ajax more버튼의 기본원리라 생각되네요.