EC-CUBE 2.11.4 で新着情報の一覧ページを作る方法です。
初心者プログラマー奮闘記 様の記事を参考にさせて頂きました。
EC-CUBE 2.11全ていけると思いますが、バージョンによってはこのあたりの問題がありますので、先にこのあたりで解決してからやったほうがよさそうです。
まず、管理画面より、「デザイン管理」 ― 「PC」 - 「ページ詳細設定」より、新たに「新着情報一覧ページ」を作成します。
名称 お知らせ
URL news.php
共通のヘッダーを使用する 共通のフッターを使用する 両方チェック
TPLファイルには、以下を書き込みます。
<div class="bloc_outer">
<div id="news_area">
<h2>お知らせ一覧</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}—>
FTPソフトで、 /user_data/news.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();