메인 페이지에서 상품리스트를 더보기 버튼으로 늘리려면...

메인 페이지에서 상품리스트를 더보기 버튼으로 늘리려면...

QA

메인 페이지에서 상품리스트를 더보기 버튼으로 늘리려면...

답변 7

본문

어떻게 해야할까요..ㅠ.ㅠ

 

c25bd8a8a3d342ee8265aab61e8421ae_1488312921_206.PNG

일단 관리자 쇼핑몰 초기화면,

추천 상품 출력에서 기존 스킨에 변화를 준다고 할 때 

스킨은 새로 main.60.skin.php이라는 이름으로 하나 복사해서 만들었습니다.

 

구글링 중에 'Ajax based load more results with jQuery' 라는 제목으로

나름 간단할 것 같은 소스가 있어서 참고해서 만들고 있는데요.

※ 참고한 ajax소스 주소는 링크에 있습니다.

 

(영카트 질문답변 검색에서 비슷한 질문을 찾았는데 shop.lib.php파일의 run클래스를

참고하시라고 하던데 참고하고 손대기엔.. 실력 이전에 알아보기도 힘든..ㅠ.ㅠ)

 

일단 링크의 소스와 비슷하게

main.60.skin.php에 이런 script를 넣었습니다.

 

c25bd8a8a3d342ee8265aab61e8421ae_1488314248_6373.PNG 

그리고 테마의 shop폴더에 shop.list.php라는 파일을 참고소스의 loadmore.php파일과 비슷하게 만들어봤어요.

shop.list.php 파일의 앞부분

c25bd8a8a3d342ee8265aab61e8421ae_1488314685_9779.PNG
 

이렇게 해서 해보니까 일단 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']

 

음.. 정확히 어떻게 안되는건지 잘 몰라서 답변드리기 애매한데

저 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버튼의 기본원리라 생각되네요.

 

 

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 129,100
© SIRSOFT
현재 페이지 제일 처음으로