web関係 デザイン

EC-CUBE新着情報

投稿日:2010年1月29日

以前書いたように、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でアップロードします。

以上で終わり。
大事なのは、システムの管理画面で設定を変更すると、今まで作った内容がリセットされてしまうので、システムで設定するのは先に済ませておくことだとおもいます。

参考まで。

-web関係, デザイン
-


  1. EC-CUBEカスタマイズ(SMARTY関数のSECTION関数について)

    EC-CUBEカスタマイズ(SMARTY関数のSECTION関数について)の備忘録

    EC-CUBEの学校(http://www.eccube-school.jp/)

    を参考にカスタマイズを行った。

    私の中では、未だにSMARTY関数とは何ぞや?で…

  2. こじま より:

    はじめまして。
    以前、イヌブロブログ 様を参考にPC版を3件表示させることに成功したものです。
    その節はお世話になりました。
    今回は、
    モバイルサイトの新着情報を2件表示させ、リンクで別ページに全て表示させたいと思っているのですがなかなかできず四苦八苦しています。

    ヒントを頂けると幸いです。
    何卒宜しくお願いします

  3. フォクすけ より:

    >こじまさん
    はじめまして、こんにちは。
    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}–>

    おそらくここまでは出来ているのでは?と思いますが、リンクをつけて別ページで全件表示させるのは難しいですね。。
    ちょっと検証してみたいと思います。

関連記事

WordPressのバージョン情報を消す

WordPressを使っていて、ソースを見るとバージョン情報がMETAタグに載ってしまうので、これを …

IE6撲滅キャンペーンに参加しますた

もうIE6いらん!IE6大っ嫌い!! てことで、IE6撲滅キャンペーンに参加しました。 IE6で見て …

WordPressにYouTubeを好きなサイズで載せる

何を今更的なタイトルですが、YouTubeのオブジェクトタグでそのまま埋め込むと横幅が425pxとか …

天候不順

最近、天気がコロコロ変わりますな~。 暖かくなったり寒くなったり。 今日は気象病みたいなのか、頭の頭 …

yamagiwa

高級インテリアで有名な(俺の印象だけど) ヤマギワのホームページ。 整然としたレイアウトに落ち着いた …

カテゴリー

アーカイブ

サイト内検索