fulephpとjquery.autopager.jsで「もっと見る」を実装したのでメモ
PHP部分の実装
mvc的にはこういうのはviewに書くのがいいのかもしれませんが、僕は迷わずcontrollerに書いてます。
//全データ数を取得
$all_num = 何らかの処理//select count(*) from *** where ***とかですね
//ページング
$config = array(
'name'=>'pagination',
'per_page' => 5,//1ページの表示数
'uri_segment'=>'p',//ページ番号パラメータ名 2ページ目ならp=2がurlに付与されます
'total_items' =>$all_num,//全データ数
);
$pagination = Pagination::forge('pagination',$config);
//1ページ分のデータ取得
$list_item = 何らかの処理//select * from *** where *** limit 0,10とかですね
//viewの設定
$view = View::forge('template');
$view->set('list_item',$list_item);
return $view;
HTML部分の実装
<!-- jqueryとautopagerの読込み -->
<script src="//ajax.googleapis.com/ajax/libs/jquery/**/jquery.min.js"></script>
<?php echo Asset::js('jquery.autopager-1.0.0.js'); ?>
<!-- リスト部分 -->
<ul Id="list">
<?php foreach ($list_item as $item) { ?>
<li><?php echo $item['title']; ?></li>
<?php } ?>
</ul>
<!-- もっと見るボタン(=次へボタン) -->
<div id="more">
<?php
Pagination::instance('pagination')->__set(array(
'next-link' => '<a href="{uri}">もっとみる</a>',
'next-inactive-link' => ''
));
echo Pagination::instance('pagination')->next();
?>
</div>
<!-- autopager.jsを使ったjavascript部分の実装 -->
<script>
$.autopager({
content: '#list',
link: '#more a',
autoLoad: false,
start: function(current, next) {
$('.more a').hide();
},
});
$('#more a').click(function() {
$.autopager('load');
return false;
});
</script>