ECCUBE2系でページを追加する

ECCUBE2系で新しくページを追加する方法を書きたいと思います。

<h1>追加するファイル</h1>

```
・data/class/pages/news/LC_Page_News.php
・data/class_extends/page_extends/news/LC_Page_News_Index_Ex.php
・data/Smarty/templates/default/news/news.tpl
・html/news/index.php
```
<h1>dtb_page_layoutにレコードを追加</h1>

今回使用したSQLはこちら
```
INSERT INTO `dtb_pagelayout` (`device_type_id`, `page_id`, `page_name`, `url`, `filename`, `header_chk`, `footer_chk`, `edit_flg`, `author`, `description`, `keyword`, `update_url`, `create_date`, `update_date`, `meta_robots`) VALUES ('10', '29', '新着情報', 'news/index.php', 'news/news', '1', '1','2', NULL, NULL, NULL, NULL, CURRENT_TIME(), CURRENT_TIME(), NULL);
```

<table>
    <thead>
        <tr>
            <th colspan="2">dtb_pagelayout</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>device_type_id</td>
            <td>端末種別<br>
設定する値はdata/mtb_constants_init.phpに記載してあります。</td>
        </tr>
        <tr>
            <td>page_id</td>
            <td>ユニークID</td>
        </tr>
        <tr>
            <td>page_name</td>
            <td>ページの名前</td>
        </tr>
        <tr>
            <td>url</td>
            <td>URL</td>
        </tr>
        <tr>
            <td>filename</td>
            <td>htmlファイルが置いてある場所</td>
        </tr>
        <tr>
            <td>header_chk</td>
            <td>ヘッダチェックフラグ</td>
        </tr>
        <tr>
            <td>footer_chk</td>
            <td>ヘッダチェックフラグ</td>
        </tr>
        <tr>
            <td>edit_flg</td>
            <td>管理画面から変更ができるようにしたい場合は2を設定する</td>
        </tr>
    </tbody>
</table>

ここまでの作業で画面が表示されるところまで出来ました！
ヘッダーとフッダーのみが表示されてるかと。

![スクリーンショット 2022-12-02 12.00.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2991768/ff30e349-069e-f044-792e-d6b75d56744e.png)

<h1>表示する処理を書く</h1>

処理を書くファイルはこちらです。
※何か表示させたいので、今回は新着情報を出してみます。
data/class/pages/news/LC_Page_News.php
action()にやりたいことを書く

```
class LC_Page_News extends LC_Page_Ex
{
    /** @var 新着情報 */
    public $arrNews;

    /**
     * Page を初期化する.
     *
     * @return void
     */
    public function init()
    {
        parent::init();
        $this->tpl_mainpage = 'news/index.tpl';
    }

    /**
     * Page のプロセス.
     *
     * @return void
     */
    public function process()
    {
        parent::process();
        $this->action();
        $this->sendResponse();
    }

    /**
     * Page のアクション.
     *
     * @return void
     */
    public function action()
    {
        $objNews = new SC_Helper_News();

        //新着情報を取得
        $this->arrNews = $objNews->getList();
    }
}
```

表示するところはblocのnewsからコピペして少し編集
data/Smarty/templates/default/news/index.tpl
```
<div class="block_outer">
    <h2><img src="<!--{$TPL_URLPATH}-->img/title/tit_bloc_news.png" alt="新着情報" /></h2>
    <!--{section name=data loop=$arrNews}-->
    <!--{assign var="date_array" value="-"|explode:$arrNews[data].cast_news_date}-->
    <dl class="newslist">
        <dt><!--{$date_array[0]}-->年<!--{$date_array[1]}-->月<!--{$date_array[2]}-->日</dt>
        <dt>
            <a
            <!--{if $arrNews[data].news_url}--> href="<!--{$arrNews[data].news_url}-->" <!--{if $arrNews[data].link_method eq "2"}--> target="_blank"
            <!--{/if}-->
            <!--{/if}-->
            >
            <!--{$arrNews[data].news_title|h|nl2br}--></a>
        </dt>
        <dd class="mini"><!--{$arrNews[data].news_comment|h|nl2br}--></dd>
    </dl>
    <!--{/section}-->
</div>
```

では下記にアクセスしてみましょう。
http://localhost/news/

![スクリーンショット 2022-12-05 5.43.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2991768/505e555e-00db-d1cf-6759-70b045cfe6eb.png)

はい、表示されるようになりました！
結構簡単にできますね。

もし管理画面で表示のカスタマイズをしたい場合は、
<b>デザイン管理＞PC＞ページ詳細設定</b>
から追加したファイルを選択すれば編集できます。
![スクリーンショット 2022-12-05 5.55.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2991768/f7e112dd-7fe3-b2ec-c25c-364681572a47.png)