23)新着情報の一覧ページを作成する(ページング対応) – hetemlのサーバでEC-CUBE(2.11.5)を使ってみる

4月 2nd, 2012 カテゴリー EC-CUBE2.11

前回作成した商品レビューの一覧ページを作成する(ページング対応)と同様に、新着情報も新規ページを作成し、一覧ページにて情報を表示させるようにします。



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変更)を参考ください。

Sponsored Links

コメント

コメントする

  1. 匿名 より:

    http://pro-grammer.info/archives/1260
    こちらのソースを参考にさせていただいております。

    実際にページを作成したのですが、ページングのリンクをクリックしても次のページや前のページへ飛びません。
    同じphpファイル内にリンクを設置していますが、そちらは正常にページ遷移します。

    改善策がありましたらご回答の程お願いいたします。

    EC-CUBEバージョン 2.13.3
    PHPバージョン PHP 5.5.9

コメントする

Eメールアドレスは公開されません。