質問 > フロント機能 > 【2.11.0】ページングについて教えてください。 |
フロント機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
ゲスト |
投稿日時: 2011/8/7 15:53
対応状況: −−−
|
Re: 【2.11.0】ページングについて教えてください。 http://www.kudzilla.com/~hic/eccube-dev/image/pager.jpg
貼り付けて、過不足を調整した結果が、上記画面ですが、 取り敢えず「表示させるだけ」、、、としては、合ってますか? 追記: 調整したのは、スクリーンショット画像ではなく、ちゃんと php,tpl,css です。。。 |
|
kobakura |
投稿日時: 2011/8/7 16:57
対応状況: −−−
|
一人前 登録日: 2011/6/10 居住地: 投稿: 106 |
Re: 【2.11.0】ページングについて教えてください。 なにぶん初心者ですので、自分の答え方でお伝えいたします。
ご容赦ください。 引用: LC_Page_Admin_Products_Review.phpでは、以下の名称で値を利用しているようです。 ここでしょうか? /** * レビュー検索結果の取得 * * @param array $arrForm フォームデータ * @param string $where WHERE文 * @param array $arrval WHERE文の判定値 * @return array レビュー一覧 */ function lfGetReview($arrForm, $where, $arrval) { $objQuery =& SC_Query_Ex::getSingletonInstance(); // ページ送りの処理 $page_max = SC_Utils_Ex::sfGetSearchPageMax($arrForm['search_page_max']); if (!isset($arrval)) $arrval = array(); $from = "dtb_review AS A LEFT JOIN dtb_products AS B ON A.product_id = B.product_id "; $linemax = $objQuery->count($from, $where, $arrval); $this->tpl_linemax = $linemax; $this->tpl_pageno = isset($arrForm['search_pageno']) ? $arrForm['search_pageno'] : ""; // ページ送りの取得 $objNavi = new SC_PageNavi_Ex($this->tpl_pageno, $linemax, $page_max, 'fnNaviSearchPage', NAVI_PMAX); $this->arrPagenavi = $objNavi->arrPagenavi; $startno = $objNavi->start_row; // 取得範囲の指定(開始行番号、行数のセット) $objQuery->setLimitOffset($page_max, $startno); // 表示順序 $order = "A.create_date DESC"; $objQuery->setOrder($order); //検索結果の取得 //レビュー情報のカラムの取得 $col = "review_id, A.product_id, reviewer_name, sex, recommend_level, "; $col .= "reviewer_url, title, comment, A.status, A.create_date, A.update_date, name"; $from = "dtb_review AS A LEFT JOIN dtb_products AS B ON A.product_id = B.product_id "; $arrReview = $objQuery->select($col, $from, $where, $arrval); return $arrReview; } この部分は新規ページindex.phpに貼りつけました。 引用: それぞれの値は、phpとsmartyでやりとりされていますが、 /admin/products/review.tplの <!--★★検索結果一覧★★--> <form name="form1" id="form1" method="post" action="?"> <input type="hidden" name="<!--{$smarty.const.TRANSACTION_ID_NAME}-->" value="<!--{$transactionid}-->" /> <input type="hidden" name="mode" value="search" /> <input type="hidden" name="review_id" value="" /> <input type="hidden" name="search_pageno" value="<!--{$tpl_pageno|h}-->" /> <!--{foreach key=key item=item from=$arrHidden}--> <!--{if $key ne "search_pageno"}--> <input type="hidden" name="<!--{$key}-->" value="<!--{$item|h}-->" /> <!--{/if}--> <!--{/foreach}--> <h2>検索結果一覧</h2> <div class="btn"> <span class="attention"><!--検索結果数--><!--{$tpl_linemax|h}-->件</span> が該当しました。 <!--{if $smarty.const.ADMIN_MODE == '1'}--> <a class="btn-normal" href="java script:;" onclick="fnModeSubmit('delete_all','',''); return false;"><span>検索結果をすべて削除</span></a> <!--{/if}--> <a class="btn-normal" href="java script:;" onclick="fnModeSubmit('csv','',''); return false;"><span>CSV ダウンロード</span></a> </div> <!--{if $arrReview > 0 & $tpl_linemax > 0}--> <!--{include file=$tpl_pager}--> <!--検索結果表示テーブル--> <table id="products-review-result" class="list"> <tr> <th>投稿日</th> <th>投稿者名</th> <th>商品名</th> <th>おすすめレベル</th> <th>表示・非表示</th> <th class="edit">編集</th> <th class="delete">削除</th> </tr> <!--{section name=cnt loop=$arrReview}--> <tr> <td><!--{$arrReview[cnt].create_date|h|sfDispDBDate}--></td> <td><!--{$arrReview[cnt].reviewer_name|h}--></td> <td><!--{$arrReview[cnt].name|h}--></td> <!--{assign var=key value="`$arrReview[cnt].recommend_level`"}--> <td><!--{$arrRECOMMEND[$key]}--></td> <td class="menu"><!--{if $arrReview[cnt].status eq 1}-->表示<!--{elseif $arrReview[cnt].status eq 2}-->非表示<!--{/if}--></td> <td class="menu"><a href="java script:;" onclick="fnChangeAction('./review_edit.php'); fnModeSubmit('','review_id','<!--{$arrReview[cnt].review_id}-->'); return false;">編集</a></td> <td class="menu"><a href="java script:;" onclick="fnModeSubmit('delete','review_id','<!--{$arrReview[cnt].review_id}-->'); return false;">削除</a></td> </tr> <!--{/section}--> </table> <!--検索結果表示テーブル--> <!--{/if}--> </form> をはりつけました。 がしかし、新規ページのソースをみると <!--{foreach key=key item=item from=$arrHidden}--> <!--{if $key ne "search_pageno"}--> <input type="hidden" name="<!--{$key}-->" value="<!--{$item|h}-->" /> <!--{/if}--> <!--{/foreach}--> の部分の表示がありません。 引用: lfInitParamメソッドにあるパラメータの記述も移植されていますか? ↓これですか? /** * パラメータ情報の初期化を行う. * * @param SC_FormParam $objFormParam SC_FormParam インスタンス * @return void */ function lfInitParam(&$objFormParam) { $objFormParam->addParam("投稿者名", "search_reviewer_name", STEXT_LEN, 'KVas', array("MAX_LENGTH_CHECK"),"",false); $objFormParam->addParam("投稿者URL", "search_reviewer_url", STEXT_LEN, 'KVas', array("MAX_LENGTH_CHECK"),"",false); $objFormParam->addParam("商品名", "search_name", STEXT_LEN, 'KVas', array("MAX_LENGTH_CHECK"),"",false); $objFormParam->addParam("商品コード", "search_product_code", STEXT_LEN, 'KVas', array("MAX_LENGTH_CHECK"),"",false); $objFormParam->addParam("性別", "search_sex", INT_LEN, 'n', array("MAX_LENGTH_CHECK"),"",false); $objFormParam->addParam("おすすめレベル", "search_recommend_level", INT_LEN, 'n', array("MAX_LENGTH_CHECK"),"",false); $objFormParam->addParam("投稿年", "search_startyear", INT_LEN, 'n', array("MAX_LENGTH_CHECK", "NUM_CHECK"),"",false); $objFormParam->addParam("投稿月", "search_startmonth", INT_LEN, 'n', array("MAX_LENGTH_CHECK", "NUM_CHECK"),"",false); $objFormParam->addParam("投稿日", "search_startday", INT_LEN, 'n', array("MAX_LENGTH_CHECK", "NUM_CHECK"),"",false); $objFormParam->addParam("投稿年", "search_endyear", INT_LEN, 'n', array("MAX_LENGTH_CHECK", "NUM_CHECK"),"",false); $objFormParam->addParam("投稿月", "search_endmonth", INT_LEN, 'n', array("MAX_LENGTH_CHECK", "NUM_CHECK"),"",false); $objFormParam->addParam("投稿日", "search_endday", INT_LEN, 'n', array("MAX_LENGTH_CHECK", "NUM_CHECK"),"",false); $objFormParam->addParam("最大表示件数", "search_page_max", INT_LEN, 'n', array("MAX_LENGTH_CHECK"),"",false); $objFormParam->addParam("ページ番号件数", "search_pageno", INT_LEN, 'n', array("MAX_LENGTH_CHECK"),"",false); $objFormParam->addParam("レビューID", "review_id", INT_LEN, 'n', array("MAX_LENGTH_CHECK"),"",false); } は貼りつけました。 引用: initメソッドにある以下の記述は移植されていますか?$masterData = new SC_DB_MasterData_Ex(); 移植しました。 引用: 表示されないというのは、レビューが表示されないという事でしょうか? レビューは表示されています。 しかし、今の表示はfukap様よりご提案いただいた http://ec-cube.nakweb.com/blog/447.html を使い、表示させています。 ↑が影響しているのでしょうか? <!--{include file=$tpl_pager}-->は全く出てきません。 ですのでpager.tplをそのままコピペして張り付ければ 現在100件あるお客様の声を10分割(1〜10)のページングは出るのですが、クリックしてもまったく反応はありません。 引用: 元々無い機能を作り出すのは、大変ですよね。 おっしゃる通りですが、皆様のありがたいアドバイスので必ず作りたいです。よろしくお願いいたします。 |
kobakura |
投稿日時: 2011/8/7 17:00
対応状況: −−−
|
一人前 登録日: 2011/6/10 居住地: 投稿: 106 |
Re: 【2.11.0】ページングについて教えてください。 引用:
はい合っています。 これを新規ページでやりたいのです! |
kobakura |
投稿日時: 2011/8/7 18:01
対応状況: −−−
|
一人前 登録日: 2011/6/10 居住地: 投稿: 106 |
Re: 【2.11.0】ページングについて教えてください。 Ringo様
試しに管理画面/admin/products/review.tplとphpを完全コピペして表示させてみました。 http://www.kudzilla.com/~hic/eccube-dev/image/pager.jpg のようになりました。 しかし、pagerが出ません。 なぜなのでしょう? |
468 |
投稿日時: 2011/8/7 18:37
対応状況: −−−
|
神 登録日: 2008/10/26 居住地: 投稿: 3217 |
Re: 【2.11.0】ページングについて教えてください。 pagerが出ないとおっしゃられるのは、
2ページ以降が表示できないという事でしょうか? ページ番号をクリックしても何も起こらないという事であれば、 Javascriptの移植が終わっていないのではないかと思います。 以下の記述を、テンプレート内に追記してみていただけますか? <script> // ページナビで使用する function fnNaviSearchPage(pageno, mode) { document.form1['search_pageno'].value = pageno; document.form1['mode'].value = mode; document.form1.submit(); } </script> 管理画面のレビュー管理では、 /html/user_data/packages/admin/js/admin.js内の関数を onclickイベントで読んでいるようでしたので・・・。 ただ、商品詳細ページなどでは、formタグが既に存在していると思いますので、 id属性とname属性を変更して1ページ内での重複を取り除いておいたほうが良いかと思います。 2ページ目への移動のつもりが、商品がかごに入ったりと別のボタンをクリックした時の動きが発生する可能性があります。 formタグのid属性やname属性を変更した場合は、 上記、javascript内のdocument.form1←ココは変更後の値に修正してください。 以上、よろしくお願い致します。 |
ゲスト |
投稿日時: 2011/8/7 19:08
対応状況: −−−
|
Re: 【2.11.0】ページングについて教えてください。 ↓のURL内の「test_code」内の「2. フロントページへのページャの組込み」に
スクリーンショットのための修正箇所を「pager.rtf」として置きました。 468様の内容と合わせることで、かなりの線まで行けるのではないでしょうか。。。 pagerはcssへの追加(admin側からのコピー)で出るはずです。 |
|
kobakura |
投稿日時: 2011/8/7 20:09
対応状況: −−−
|
一人前 登録日: 2011/6/10 居住地: 投稿: 106 |
Re: 【2.11.0】ページングについて教えてください。 468様
Ringo様 本当にありがとうございます。 <script> // ページナビで使用する function fnNaviSearchPage(pageno, mode) { document.form1['search_pageno'].value = pageno; document.form1['mode'].value = mode; document.form1.submit(); } </script> を追加しページングできました! あとは現在、admin/products/reviewのphpをそのまま コピペしている状況なので、新規ページ(例:URL/voice.php) にアクセスすると検索ページが出てきて、検索ボタンを押して はじめてお客様の声が紹介されます。 これを最新お客様の声を1ページ目に表示させるには どこを削除、訂正したらよろしいでしょうか? よろしくお願いいたします。 |
ゲスト |
投稿日時: 2011/8/7 20:24
対応状況: −−−
|
Re: 【2.11.0】ページングについて教えてください。 1.強制的にmodeで"search"が渡って来たことにするか
2.swich case文群を削除してcase "search"の処理を実行させるか のいづれでも、表示すると思います。 「1.」は修正が少ない。 「2.」は余計な記述が無くなる。 といった感じかと。。。 |
|
kobakura |
投稿日時: 2011/8/7 21:37
対応状況: −−−
|
一人前 登録日: 2011/6/10 居住地: 投稿: 106 |
Re: 【2.11.0】ページングについて教えてください。 引用:
は、下記のような部分を消していけばいいのですか? function action() { ・ ・ 1)ここ→ switch ($this->getMode()) { case 'delete': $this->lfDeleteReview($this->arrForm['review_id']); 2)ここを残す?→ case 'search': すみません。 あと一歩くらいなのですが・・・。 |
ゲスト |
投稿日時: 2011/8/7 22:24
対応状況: −−−
|
Re: 【2.11.0】ページングについて教えてください。 phpでのswitch構文のコメント化
テンプレート内での「search待ちif文」のコメント化
取り急ぎ、、、動作確認してみました。 |
|
« 1 (2) 3 » |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |