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 を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

関連記事

Nucleus

今日はNucleusをインストールしてみました。 最初、インストール画面で真っ白になったけどhtac …

WDP覚え書

WDP(Web Diary Professional)のカスタマイズメモ。 ■画像をクリックした時、 …

IE8以下の人注意ですw

2011年6月8日、World IPv6 Dayというのがありますお。 IE9未満+フレッツ光の人は …

.htaccessでリダイレクト

検索で飛んでいらっしゃる方もけっこういるようなのですが、以前とディレクトリが変わったし、パーマリンク …

新宿ガムテープ

これ、凄いなー。 新宿駅なんて普段使わないから(笑)知らなかったけど。 作った人が警備員って。しかも …

カテゴリー

アーカイブ

サイト内検索