01

12月2009年

[EC-CUBE カスタマイズ日誌] 第 7 回 カテゴリに説明を付けたい

tanaka 09:57 AM

  • はてなブックマークに登録
  • livedoorクリップに登録
  • Yahoo!ブックマークに登録
  • deliciousに追加

洗濯物を干すときはYahoo!天気情報を見ているtanakaです。後から雨が降りそうでも干したいときは東京アメッシュを見ながらとりこむタイミングを見計らっています。…といっても結局干していることを忘れてぬれることもありますけど。

さて、EC-CUBEカスタマイズの連載7回目は、カテゴリに、その説明を追加する方法を紹介します。作業内容としては、データベースを拡張し、それを編集・表示するロジックを管理画面、ユーザ画面に追加します。

概要

カテゴリに説明文を追加して、サイドメニューのカテゴリリストに表示するようにします。

1.データベース修正

説明文を保存するカラムを追加します。

ALTER TABLE dtb_category ADD COLUMN description text;

2.管理画面の修正

管理画面 → カテゴリ管理で、説明文の入力と保存ができるようにしましょう。

テンプレートの修正 - data/Smarty/templates/default/admin/products/category.tpl

カテゴリ一覧に説明文の列を追加します。

139行目付近(カテゴリ名の次)

<td width="160">説明</td>

153行目付近(<td align="center">…編集中…</td>の直前)

<td>
 <a href="<!--{$smarty.server.PHP_SELF|escape}-->" onclick="fnModeSubmit('tree', 'parent_category_id', <!--{$arrList[cnt].category_id}-->); return false"><!--{$arrList[cnt].description|escape}-->
</td>

入力フォームにテキストフィールドとエラーメッセージを追加します

126行目付近

<span class="red12"><!--{$arrErr.description}--></span>

128行目付近

<input type="text" name="description" value="<!--{$arrForm.description|escape}-->" size="30" class="box30" maxlength="<!--{$smarty.const.STEXT_LEN}-->"/>

ロジックの修正 - data/class/pages/admin/products/LC_Page_Admin_Products_Category.php

データの取得・バリデーション・保存のロジックを追加します。

114行目付近

$description = $oquery->get("dtb_category", "description", $where, array($_POST['category_id']));

117行目付近

$this->arrForm['description'] = $description;

283行目付近

$col = "category_id, category_name, level, rank";
// ↓下のように書き換える
$col = "category_id, category_name, level, rank, description";

293行目付近

$this->objFormParam->addParam("説明", "description", STEXT_LEN, "KVa", array("SPTAB_CHECK","MAX_LENGTH_CHECK"));

これで管理画面で説明文の入力・保存ができるようになります。

3.ユーザ画面の修正

ショップのお客さんに説明が見えるようにします。

テンプレートの修正 - data/Smarty/templates/default/bloc/category.tpl

46行目付近

サイドメニューのカテゴリツリーに説明を追加します。下のソースを、テンプレート中のカテゴリリストを表示する部分(li → aタグの中の、<!--{$arrTree[cnt].category_name|escape}-->の後に記述します)

<!--{$arrTree[cnt].description|escape}-->

ロジックの修正 - data/class/helper/SC_Helper_DB.php

データの取得のロジックを追加します。

608行目付近

$col .= " cat.description,";

まとめ

書き換える箇所が多いように感じるかもしれませんが、EC-CUBEで必要な処理が少し理解できるよいサンプルだと思います。

バシャログスタッフによるWebサイト制作サービス

トラックバック

このエントリーのトラックバックURL
http://c-brains.jp/cgi-bin/mt/###/2071
###はmt-tb.cgiに変更してください。

コメントを投稿

ページの先頭へ

POPULAR TAGS
  • バシャログスタッフによるWebサイト制作サービス

ARCHIVE

RECENT COMMENTS

Neennates on [使えるCSSテクニックVol.2] CSS を使った見栄えの良いページャー
You could easily be making mon
toyama on 【Fireworks】あなたのワークスペース、どんなレイアウト?
> maki さん コメントありがとうございます。 レイヤー
maki on 【Fireworks】あなたのワークスペース、どんなレイアウト?
初期設定のまま、パネル1列で作業してました。。 今までレイヤ
tomo on [使える CSS テクニック] CSSで実現するプルダウンメニュー
sakai様 早速ご返答ありがとうございます。 子供がho
sakai on [使える CSS テクニック] CSSで実現するプルダウンメニュー
>RodMond さん コメントありがとうございます。 自