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}–>

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

comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

関連記事

WordPressアップグレード

久しぶりにWordPressをアップグレードしました。 以前のバージョンは2.6.xだったので慎重に …

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

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

IE7で消えるパンくず

さて、最近はプライベートな日記はmixiのほうに書いております。 こちらは犬関係か仕事関係の覚え書き …

EC-CUBE

EC-CUBE(オープンソースECサイト構築システム)をXREA(CORESERVER)にインストー …

スライド画像のプラグイン「Meteor Slides」を入れてみた

このブログはTwentyelevenの子テーマを使ってるのですが、Twentyelevenのヘッダ画 …

カテゴリー

アーカイブ

サイト内検索