2012年3月17日カテゴリー:

EC-CUBE:新着情報の表示件数制御をする

下記書籍をもとに書いています。詳しくは本をお読みください。

PCでは、新着情報がすべてが表示されてしまうので、多くなったら管理画面から削除するしかないのですが、この方法を使えば、そのような煩わしさはありません。

1 表示件数を指定する定数をmtb_constantsテーブルに登録する。
——————————————
id:NEWS_MAX_VIEW
name:0(←定数)
rank:1242(←適宜)
remarks:パソコン新着情報に表示する件数(全て表示する場合は「0」を指定)

id:NEWS_MAX_VIEW_MOBILE
name:1(←定数)
rank:1243(←適宜)
remarks:モバイル新着情報に表示する件数(全て表示の場合は「0」を指定)

id:NEWS_MAX_VIEW_SPHONE
name:3(←定数)
rank:1244(←適宜)
remarks:スマートフォン新着情報に表示する件数(全て表示の場合は「0」を指定)
——————————————

2 ■data/class/pages/frontparts/bloc/LC_Page_FrontParts_Bloc_News.phpに追加する場合
function lfGetNewsメソッドを下記に書き換え
[php]
function lfGetNews(){
$objQuery = SC_Query_Ex::getSingletonInstance();
$col = “*, cast(news_date AS date) AS news_date_disp”;
$from = “dtb_news”;
$where = “del_flg = 0”;

// ORDER句作成
$objQuery->setorder(“rank DESC”);

// 端末判定を行い、新着情報の表示件数を決定します
if(SC_Display_Ex::detectDevice() == DEVICE_TYPE_MOBILE)             //モバイル
$news_limit = NEWS_MAX_VIEW_MOBILE;
else if(SC_Display_Ex::detectDevice() == DEVICE_TYPE_SMARTPHONE)    //スマートフォン
$news_limit = NEWS_MAX_VIEW_SPHONE;
else                                                                //PC
$news_limit = NEWS_MAX_VIEW;

// 取得件数判定
if($news_limit != 0) $objQuery->setlimit($news_limit);

$arrNewsList = $objQuery->select($col, $from , $where);
return $arrNewsList;
}
[/php]

3 ■data/class/pages/rss/LC_Page_Rss.phpに追加する場合
function lfGetNewsメソッド内に追加
[php]
// 取得件数判定
if(NEWS_MAX_VIEW != 0) $objQuery->setlimit(NEWS_MAX_VIEW);
[/php]

4 テンプレートファイルを編集
 ■data/Smarty/templates/mobile/frontparts/bloc/news.tpl
 ■data/Smarty/templates/sphone/frontparts/bloc/news.tpl