以前書いたように、EC-CUBE(新着情報で苦闘)のエントリーはバージョンが古くなっていて、2.x系にはそのまま使えないと思います。
というか、書き方が悪く、自分で読み返してもよくわかりませんでした(笑)
ということで、改めてEC-CUBE2.x系の新着情報をカスタマイズしてみたいと思います。
今回やることは、トップページに新着情報を2件、別ページに全て載せるというものです。
EC-CUBE 2.4.1、PHP 5.2.5、PostgreSQL 8.2.4、サーバーはXREAです。
1. 管理画面⇒デザイン管理⇒ページ詳細設定から、新規にページを作ります。
名称は「ニュース一覧」など適当に。URLの欄にはnewsallなどと入れます。
そして「登録」ボタンをクリック。
すると「ニュース一覧」というページができています。
2. 「新規ブロック」を作成します。
「ブロック編集」から名前は適当に(わかるように)、拡張子tplのところは、PHPファイルと同じにしておいたほうが混乱しなくていいでしょう。
(この場合、newsall.tpl)
3. 「レイアウト設定」から1で作った「ニュース一覧」をクリックし、2で作ったブロックを真ん中下辺りに配置します。
「保存」をクリックします。
4. ここからが難題なのですが、XREAの場合、先ほど作ったnewsall.php、newsall.tplともに所有者がapacheになってると思います。
このままでは動かないので、XREAの管理パネルから所有者の変更をします。反映までしばらくかかるので少し待ちます。
5. /user_data/にnewsall.phpが出来ているので、ftpでダウンロードして、エディタで開き、以下を全文ペーストします。
<?php
// {{{ requires
require_once("/virtual/inublo/public_html/store/require.php");
require_once(CLASS_PATH . "pages/LC_Page.php");
/**
* ユーザーカスタマイズ用のページクラス
*
* 管理画面から自動生成される
*
* @package Page
*/
class LC_Page_User extends LC_Page {
// }}}
// {{{ functions
/**
* Page を初期化する.
*
* @return void
*/
function init() {
parent::init();
$this->tpl_column_num = 3;
<strong>$this->arrNews = array();//追加</strong>
}
/**
* Page のプロセス.
*
* @return void
*/
function process() {
$objView = new SC_SiteView();
$objLayout = new SC_Helper_PageLayout_Ex();
// レイアウトデザインを取得
$objLayout->sfGetPageLayout($this);
<strong> //以下追加
//新着情報取得
$conn = new SC_DBConn();
$sql = "SELECT *, cast(news_date as date) as news_date_disp FROM dtb_news WHERE del_flg = '0' ORDER BY rank DESC";
$this->arrNews = $conn->getAll($sql);</strong>
// 画面の表示
$objView->assignobj($this);
$objView->display(SITE_FRAME);
}
/**
* デストラクタ.
*
* @return void
*/
function destroy() {
parent::destroy();
}
}
// }}}
// {{{ generate page
$objPage = new LC_Page_User();
register_shutdown_function(array($objPage, "destroy"));
$objPage->init();
$objPage->process();
?>
そして元の場所に上書きアップロード。
6. news.tplを/data/Smarty/templates/default/bloc辺りから探してきてftpでダウンロード。
これをエディタで開き
<!--{section name=data loop=$arrNews}-->
を
<!--{section name=data loop=$arrNews <strong>max=2</strong>}-->
に変更。
ニュース一覧ページへリンクを貼る場合は下のコードをどっかに貼っておけばいいと思います。
<a href="<!--{$smarty.const.URL_DIR}-->user_data/newsall.php">NEWS一覧>></a>
そして、このnews.tplを元の場所ではなく /user_data/packages/default/bloc/にftpでアップロードします。
以上で終わり。
大事なのは、システムの管理画面で設定を変更すると、今まで作った内容がリセットされてしまうので、システムで設定するのは先に済ませておくことだとおもいます。
参考まで。
EC-CUBEカスタマイズ(SMARTY関数のSECTION関数について)
EC-CUBEカスタマイズ(SMARTY関数のSECTION関数について)の備忘録
EC-CUBEの学校(http://www.eccube-school.jp/)
を参考にカスタマイズを行った。
私の中では、未だにSMARTY関数とは何ぞや?で…
はじめまして。
以前、イヌブロブログ 様を参考にPC版を3件表示させることに成功したものです。
その節はお世話になりました。
今回は、
モバイルサイトの新着情報を2件表示させ、リンクで別ページに全て表示させたいと思っているのですがなかなかできず四苦八苦しています。
ヒントを頂けると幸いです。
何卒宜しくお願いします
>こじまさん
はじめまして、こんにちは。
EC-CUBEは最近さわってないのですっかり忘れていましたが、モバイルサイトではnews.tplをだいたい以下のように書くと2件表示できます。
<!–{section name=data loop=$arrNews max=2}–>
<!–{if count($arrNews) > 0}–>
<center>
―――――――――<br>
<!–{if $arrNews[data].news_url}–><a href=”<!–{$arrNews[data].news_url|escape}–>”><!–{/if}–>
<!–{$arrNews[data].news_title|escape|nl2br}–>
<!–{if $arrNews[data].news_url}–></a><!–{/if}–>
<br>
<!–{$arrNews[data].news_comment|escape|nl2br}–>
―――――――――<br>
</center>
<!–{/if}–>
<!–{/section}–>
おそらくここまでは出来ているのでは?と思いますが、リンクをつけて別ページで全件表示させるのは難しいですね。。
ちょっと検証してみたいと思います。