新着情報のバックナンバーを作る -EC-CUBE-
<<
作成日時 : 2007/07/26 12:37
>>
トラックバック 0 / コメント 0
クライアントのECサイトとしてオープンソースの"EC-CUBE"を利用している。

導入実績として主にVPSサーバである"ラピッドサイト"か低コストな"CPI"にて実装している。
尚、現在使用しているバージョンは"1.3.0"である。
"EC-CUBE"には新着情報を登録して管理する機能が実装されている。
新着情報はパーツ化されており、トップページや商品一覧などに任意で表示させることができる。
しかし、この新着情報のパーツは配置するページに応じてデザインを変えたり、表示できる記事数が決まっているため過去のものが表示されなくなる。

そこでページに応じてデザインを変えたり、表示できる数を任意に決めるためには新着情報を表示するプログラムを用意することになる。
まず"EC-CUBE"の公開ディレクトリ、"index.php"がある階層に「backnumber」というフォルダを作る。
ここでの名前は任意だ。
次にこの「backnumber」フォルダの中に下記のソースを記述して"index.php"という名前でEUC保存する。
<?php
require_once("../require.php");
class LC_Page {
function LC_Page() {
/** 必ず指定する **/
$this->tpl_mainpage = 'backnumber/index.tpl';
$this->tpl_page_category = 'backnumber';
$this->tpl_title = 'お知らせ一覧';
}
}
$objPage = new LC_Page();
$objView = new SC_SiteView();
// レイアウトデザインを取得
$objPage = sfGetPageLayout($objPage, false, DEF_LAYOUT);
//新着情報取得
$objPage->arrNews = lfGetNews();
// 画面の表示
$objView->assignobj($objPage);
$objView->display(SITE_FRAME);
//-------------------------------------------------------
/* 新着情報取得 */
function lfGetNews(){
global $tmp_id;
$conn = new SC_DBConn();
$sql = "SELECT
news_id,
news_date,
rank,
news_title,
news_comment,
news_url,
news_select,
link_method,
creator_id,
create_date,
update_date,
del_flg,
cast(substring(news_date,1,10) as date) as news_date_disp
FROM dtb_news
WHERE del_flg = '0'
ORDER BY news_date_disp DESC, news_id DESC";
$list_data = $conn->getAll($sql);
return $list_data;
}
?>
次にテンプレートファイルがある「/data/Smarty/templates/」フォルダ内に「backnumber」というフォルダを作る。
ここでの名前も任意だ。
この「backnumber」フォルダの中に下記のソースを記述して今度は"index.tpl"という名前でEUC保存する。
<table width="" border="0" cellspacing="0" cellpadding="0" summary=" ">
<tr><td height="15"></td></tr>
<tr>
<td bgcolor="#cccccc" align="center">
<table width="" border="0" cellspacing="1" cellpadding="10" summary=" ">
<!--{section name=data loop=$arrNews}-->
<tr>
<td width="100%" bgcolor="#ffffff" class="fs12">
<!--{if $arrNews[data].news_url}--><p><a href="<!--{$arrNews[data].news_url}-->" <!--{if $arrNews[data].link_method eq "2"}-->target="_blank"<!--{/if}--> ><!--{/if}--><!--{$arrNews[data].news_title|escape|nl2br}--><!--{if $arrNews[data].news_url}--></a></p><!--{/if}--> (<!--{$arrNews[data].news_date_disp|escape}-->)
<p><!--{$arrNews[data].news_comment|escape|nl2br}--></p>
</td>
</tr>
<!--{/section}-->
</table>
</td>
</tr>
</table>
テンプレートファイルはデフォルトの"EC-CUBE"のデザインのまま利用したが、カスタマイズしている場合はそれに合わせしてデザインすることになる。
新着情報は複数あり「section」でループさせているのでTABLEタグやDIVタグを使うならコーディングに注意が必要だ。
|