前回作成した商品レビューの一覧ページを作成する(ページング対応)と同様に、新着情報も新規ページを作成し、一覧ページにて情報を表示させるようにします。
1)管理画面から新規で「新着情報一覧ページ」を作成します
管理画面:【デザイン管理】 ⇒ 「ページを新規入力」を選択し、必要事項を入力します。名称:新着情報一覧
URL:news_list
共通のヘッダーを使用する/共通のフッターを使用する にチェックを入れる
tplファイルには以下を挿入
<div class="bloc_outer"> <div id="news_area"> <h2><img src="<!--{$TPL_URLPATH}-->img/title/tit_bloc_news.jpg" alt="新着情報" /><span class="rss"><a href="<!--{$smarty.const.ROOT_URLPATH}-->rss/<!--{$smarty.const.DIR_INDEX_PATH}-->" target="_blank"><img src="<!--{$TPL_URLPATH}-->img/button/btn_rss.jpg" alt="RSS" /></a></span></h2> <div class="bloc_body"> <div class="news_contents" style="overflow:visible;max-height: 100%;height: 100%;"> <!--{section name=data loop=$arrNews}--> <!--{assign var="date_array" value="-"|explode:$arrNews[data].news_date_disp}--> <dl class="newslist"> <dt><!--{$date_array[0]}-->年<!--{$date_array[1]}-->月<!--{$date_array[2]}-->日</dt> <dt> <a <!--{if $arrNews[data].news_url}--> href="<!--{$arrNews[data].news_url}-->" <!--{if $arrNews[data].link_method eq "2"}--> target="_blank" <!--{/if}--> <!--{/if}--> > <!--{$arrNews[data].news_title|h|nl2br}--></a> </dt> <dd class="mini"><!--{$arrNews[data].news_comment|h|nl2br}--></dd> </dl> <!--{/section}--> </div> </div> </div> </div> <!--{$tpl_strnavi}-->
最後に「登録する」を選択。
管理画面はこれでOK!!
2)news_list.phpファイルを編集し、レビューの一覧を取得できるようにします
/user_data/news_list.phpに下記ソースをコピペします。
<?php require_once '../require.php'; require_once CLASS_EX_REALDIR . 'page_extends/LC_Page_Ex.php'; /** * ユーザーカスタマイズ用のページクラス * * 管理画面から自動生成される * * @package Page */ class LC_Page_User extends LC_Page_Ex { /** * Page を初期化する. * * @return void */ function init() { parent::init(); } /** * Page のプロセス. * * @return void */ function process() { parent::process(); $this->action(); $this->sendResponse(); } /** * Page のアクション. * * @return void */ function action() { $objQuery = SC_Query_Ex::getSingletonInstance(); $this->arrForm = $_REQUEST; //現在のページ番号取得 $this->tpl_pageno = $this->arrForm['pageno']; //新着情報の件数を取得する $count = 0; $linemax = $objQuery->count("dtb_news", "del_flg = '0'"); $this->tpl_linemax = $linemax; //1ページの表示件数取得 $page_max = SC_Utils_Ex::sfGetSearchPageMax($arrForm['search_page_max']); //$page_max = 3; //確認用にハードコードしました //ページ送りの取得 $urlParam = "pageno=#page#"; $objNavi = new SC_PageNavi_Ex($this->tpl_pageno, $linemax, $page_max,'fnNaviPage', NAVI_PMAX, $urlParam); $this->arrPagenavi = $objNavi->arrPagenavi; //表示文字列アサイン $this->tpl_strnavi = $objNavi->strnavi; //開始行番号取得 $startno = $objNavi->start_row; //取得範囲の指定(開始行番号、行数のセット) $objQuery->setLimitOffset($page_max, $startno); //新着情報を取得する $col = "* , cast(news_date as date) as news_date_disp"; $from = "dtb_news"; $where = "del_flg = 0 ORDER BY rank DESC"; $this->arrNews = $objQuery->select($col, $from, $where, $arrval); } /** * デストラクタ. * * @return void */ function destroy() { parent::destroy(); } } $objPage = new LC_Page_User(); register_shutdown_function(array($objPage, 'destroy')); $objPage->init(); $objPage->process();
問題なければ一覧ページでページングが表示されているはずです。
※レビューが10個以上なければページングされません。
/user_data/などのURLが気になる場合は、15)新規でページを追加する(URL変更)を参考ください。
http://pro-grammer.info/archives/1260
こちらのソースを参考にさせていただいております。
実際にページを作成したのですが、ページングのリンクをクリックしても次のページや前のページへ飛びません。
同じphpファイル内にリンクを設置していますが、そちらは正常にページ遷移します。
改善策がありましたらご回答の程お願いいたします。
EC-CUBEバージョン 2.13.3
PHPバージョン PHP 5.5.9