PC에서는 스티커가 12개씩 로딩이되지만, 모바일에서는 반응형을 구현을 위해 스티커가 5개씩만 출력되고, 다음페이지를 눌러야 출력이 되는 형태로 기존에 구현이 되어 있습니다.
아래가 그 코드인데요
function getCommentStickerList(){ $logged_info = Context::get('logged_info'); $sticker_array = $this->getDefaultSticker(); //debugPrint($stocker_array); $defaultStickerCount = countobj($sticker_array); $page = Context::get('page') ? Context::get('page') : 1; $date = date('YmdHis'); $list_count = Mobile::isMobileCheckByAgent() ? 5 : 12; if($logged_info){ $args = new stdClass(); $args->page = $page; $args->list_count = $page == 1 ? ($list_count-$defaultStickerCount) : $list_count; $args->page_count = 2; $args->order_type = 'asc'; $args->member_srl = $logged_info->member_srl; $args->date = $date; $output2 = executeQueryArray('sticker.getStickerMylist', $args); $count = $page > 1 || $defaultStickerCount == 5 ? $defaultStickerCount : 0; if($page > 1){ unset($sticker_array); $sticker_array = array(); $prev_page = new stdClass(); $prev_page->page = $page-1; $prev_page->list_count = $list_count; $prev_page->order_type = 'asc'; $prev_page->member_srl = $logged_info->member_srl; $prev_page->date = $date; $output = executeQueryArray('sticker.getStickerMylist', $prev_page); $prev_data = $output->data; $prev_page_count = countobj($output->data); if($prev_page_count > $list_count-$defaultStickerCount){ end($prev_data); $countMovePos = $defaultStickerCount && $defaultStickerCount - ($list_count - $prev_page_count) > 0 ? $defaultStickerCount - ($list_count - $prev_page_count) : $defaultStickerCount; for($i=1; $i<$countMovePos; $i++){ prev($prev_data); } for($i=$countMovePos; $i>0; $i--){ $current = current($prev_data); $args = new stdClass(); $args->sticker_srl = $current->sticker_srl; $args->no = 0; $output1 = executeQuery('sticker.getStickerMainImage', $args); $obj = new stdClass(); $obj->sticker_srl = $current->sticker_srl; $obj->title = $current->title; $obj->main_image = $output1->data->url; if($i !== 1){ next($prev_data); } array_push($sticker_array, $obj); $count++; } } } foreach($output2->data as $key=>$sticker){ if($count >= $list_count){ break; } $args1 = new stdClass(); $args1->sticker_srl = $sticker->sticker_srl; $args1->no = 0; $output1 = executeQueryArray('sticker.getStickerMainImage', $args1); $obj = new stdClass(); $obj->sticker_srl = $sticker->sticker_srl; $obj->title = $sticker->title; $obj->main_image = $output1->data[0]->url; array_push($sticker_array, $obj); $count++; } //$this->add("page_navigation", $output2->page_navigation); } $this->add("sticker", $sticker_array); }
PHP8에서는 모바일에서의 스티커 목록 페이징이 제대로 되지 않습니다
즉 페이지는 PC버전에서의 12개 기준으로 페이지가 나눠지고
모바일에서는 PC버전과 달리 5개씩 출력되므로 페이지가 더 필요함에도 불구하고, 페이지 계산이 제대로되지 않네요
예)
사용자는 총 30개의 스티커를 보유중
PC에서는 12개씩 출력하니까 3페이지면 30개 출력 가능
모바일에서는 5개씩 출력하니까 6페이지가 필요, 그러나 PC기준으로 계산된 3페이지에 도달하면 다음 페이지 버튼 클릭시 '마지막 페이지입니다' 라는 메시지 발생