バージョン選択

フォーラム

メニュー

オンライン状況

80 人のユーザが現在オンラインです。 (72 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 80
もっと...

サイト内検索

質問 > フロント機能 > 一覧ページに ページ番号をつけたい時

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
easoto
投稿日時: 2015/6/19 16:22
対応状況: −−−
半人前
登録日: 2015/5/8
居住地:
投稿: 19
一覧ページに ページ番号をつけたい時
ただ今一覧ページを作成しているところで
phpファイルで

    $objQuery = SC_Query_Ex::getSingletonInstance();
$col = '*';
    $from = 'dtb_news';
    $objQuery->setOrder('create_date desc');
    $arrNews = $objQuery->select($col, $from);
    $this->arrNews = $arrNews;

こーゆ風に一覧の情報を引っ張ってきてからテンプレートページに下のような

<pre> <1><2><3><4><5><next>

などページ番号をつけてページごとに10件の商品などを表示したいと思いますが、どーゆ風に書いていけばいいのかどうか教えていただけますか?
tsuji
投稿日時: 2015/6/19 17:11
対応状況: −−−
仙人
登録日: 2013/11/19
居住地:
投稿: 958
Re: 一覧ページに ページ番号をつけたい時
easoto 様


商品一覧ページでページングが行われているので、
参考にされたらよいと思います。


----------------
****************************************
株式会社システムフレンド
辻 拓也(takuya tsuji)
改造専門店・EC-CUBE工房
****************************************

easoto
投稿日時: 2015/6/19 17:41
対応状況: −−−
半人前
登録日: 2015/5/8
居住地:
投稿: 19
Re: 一覧ページに ページ番号をつけたい時
返信ありがとうございます。

一覧ページ一応参考してみたんですが、どんな感じで組み込みされているかちょっと理解ができなくて質問してみました。
単純にコピして張り付けることで機能が作動するわけではなかったのでphpファイルではどの作業をしてテンプレートにはどーユー風に書いていけばいいのかちょっとだけ詳しく説明して頂くのは不可能でしょうか?
忙しいところ申し訳ございません。
yuh
投稿日時: 2015/6/20 0:18
対応状況: −−−
登録日: 2013/1/9
居住地: 大阪
投稿: 1819
Re: 一覧ページに ページ番号をつけたい時
LC_Page_Products_List.phpを例に出すと

       $this->tpl_linemax  = $this->lfGetProductAllNum($arrSearchCondition);
       //↑ここで該当の全データ数をとってる。
       
        $urlParam           = "category_id={$this->arrSearchData['category_id']}&pageno=#page#";
	//↑ここで/products/list.php?の後ろにつける部分を作ってる。この場合だと選択されたカテゴリIDを引き回してページNoをつけてる。
        $this->objNavi      = new SC_PageNavi_Ex($this->tpl_pageno, $this->tpl_linemax, $this->disp_number, 'eccube.movePage', NAVI_PMAX, $urlParam, SC_Display_Ex::detectDevice() !== DEVICE_TYPE_MOBILE);
	//↑最初の引数から
	//1.今何ページ目か
	//2.全データ数
	//3.1ページに表示させる数
	//4.'eccube.movePage'はたぶんCSSのクラスか何かとは思うけど、CSS嫌いだから基本無視。
	//5. ページ番号の最大表示数量5とかだと   「1」「2」「3」「4」「5」みたいな感じだったはず
	//6.上で設定してるURLの後ろにつける部分
	//7.SC_Display_Ex::detectDevice() !== DEVICE_TYPE_MOBILEここはそのままでいいと思う。
	
        $this->arrProducts  = $this->lfGetProductsList($arrSearchCondition, $this->disp_number, $this->objNavi->start_row, $objProduct);
	//ここで必要なのは
	//$this->disp_number, $this->objNavi->start_rowの二つだけ。
	//クエリの LIMIT ? OFFSET ? の部分


なんで上のソースを参考にして作ればできると思います。
$this->tpl_linemaxの全データ数は単純なテーブルの場合SELECT COUNT(*) FROM tableとか。

やってることは現在のページが〜ページ目だから、1ページに〜件表示させるとして
データの〜件目から〜件目までを取得すればいいのかを調べてるだけですね。

MYSQLとかだと
CALC_FOUND_ROWS()とかを使えば1回のクエリでまとめて取得できるんで全部自分で書いてしまってもいいかもしれないです。

POSTGRESQLだとCOUNT(*) over() as cnt
とかで代用するかですね。

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は88,886名です
総投稿数は110,000件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2313
5
umebius
2085
6
yuh
1819
7
h_tanaka
1646
8
red
1570
9
mcontact
1295
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.