EC-CUBE 商品詳細に在庫数表示

上記コードを表示させたいところに表示。

商品詳細ページのファイルは下記。

EC-CUBEの商品の登録項目内容の追加

「EC-CUBEの商品の登録項目内容の追加」

商品詳細ページに入力項目を追加したいと思います。
例として今回は家具サイトの例として「サイズ(W*D*H)」を追加します。

データベース(以下、DB)にカラムを追加する

dtb_productsに1カラム追加。
カラム名「comment7」
データ型「text」

商品詳細ページの編集

管理ページのデザイン管理>ページ詳細設定>商品詳細ページを開き、サイズを表示したい部分に、

<!–{$arrProduct.comment7}–>

と記述する。

サイズ表示しないようにするには、

<!–{$arrProduct.comment7|escape}–>

と記述する

商品登録ページの編集

data/Smarty/templates/default/admin/products/product.tplのファイルを開き、メーカーサイトの項目の下あたりに、

つづく

商品カテゴリーを全部表示(開いたままにする)2.11.4

カテゴリーブロックを以下のように書き換えるだけ。

要は元のカテゴリーブロックを下記のように修正。

上記の※印の3行を削除。

商品一覧ブロックを作る 2.11.X

html/frontparts/bloc/product_list.php を新規作成

data/class_extends/page_extends/frontparts/bloc/LC_Page_FrontParts_Bloc_Product_List_Ex.php を新規作成

[php]
<?php

// {{{ requires
require_once(CLASS_EX_REALDIR . "page_extends/frontparts/bloc/LC_Page_FrontParts_Bloc_Product_List_Ex.php");

// }}}
// {{{ generate page

$objPage = new LC_Page_FrontParts_Bloc_Product_List_Ex();
register_shutdown_function(array($objPage, "destroy"));
$objPage->init();
$objPage->process();

?>
[/php]

data/class/pages/frontparts/bloc/LC_Page_FrontParts_Bloc_Product_List.php を新規作成

[php highlight=”44″]
<?php

// {{{ requires
require_once CLASS_REALDIR . ‘pages/frontparts/bloc/LC_Page_FrontParts_Bloc.php’;

/**
* Product_List のページクラス.
*
* @package Page
*/
class LC_Page_FrontParts_Bloc_Product_List extends LC_Page_FrontParts_Bloc {

// }}}
// {{{ functions

/**
* Page を初期化する.
*
* @return void
*/
function init() {
parent::init();
$bloc_file = ‘product_list.tpl’;
$this->setTplMainpage($bloc_file);
}

/**
* Page のプロセス.
*
* @return void
*/
function process() {
if (defined("MOBILE_SITE") && MOBILE_SITE) {
$objView = new SC_MobileView();
} else {
$objView = new SC_SiteView();
}

$objQuery = new SC_Query_Ex();
$objProduct = new SC_Product_Ex();

//$objQuery->setLimitOffset(10);
//$objQuery->setOrder("update_date desc");
$this->arrProducts = $objProduct->lists($objQuery);

$objView->assignobj($this);
$objView->display($this->tpl_mainpage);
}

/**
* デストラクタ.
*
* @return void
*/
function destroy() {
parent::destroy();
}
}

?>
[/php]

$this->arrProducts = $objProduct->lists(&$objQuery);の44行目で過去のバージョン2.11辺りのQueryだとlists(&$objQuery);の表記でしたが&無しで記述。 $this->arrProducts = $objProduct->lists($objQuery); data/Smarty/templates/default/frontparts/bloc/product_list.tpl を新規作成

[php]
<!–{if count($arrProducts) > 0}–>
<div class="bloc_outer clearfix">
<div id="productlist_area">
<h2>商品一覧リスト</h2>
<div class="bloc_body clearfix">
<!–{foreach from=$arrProducts item=arrProduct}–>
<div class="product_item clearfix">
<div class="productImage">
<a href="<!–{$smarty.const.P_DETAIL_URLPATH}–><!–{$arrProduct.product_id|u}–>"><img src="<!–{$smarty.const.ROOT_URLPATH}–>resize_image.php?image=<!–{$arrProduct.main_list_image|sfNoImageMainList|h}–>&width=40&height=40" alt="<!–{$arrProduct.name|h}–>" /></a>
</div>
<div class="productContents">
<h3>
<a href="<!–{$smarty.const.P_DETAIL_URLPATH}–><!–{$arrProduct.product_id|u}–>"><!–{$arrProduct.name|h}–></a>
</h3>
<p class="sale_price">
<span class="price"><!–{$arrProduct.price02_min|sfCalcIncTax:$arrInfo.tax:$arrInfo.tax_rule|number_format}–> 円</span>
</p>
</div>
</div>
</dl>
<div class="clear"></div>
<!–{/foreach}–>
</div>
</div>
</div>
<!–{/if}–>
[/php]

スタイルシート追記

[css]
<style type="text/css">
div#productlist_area h2 {
background-color:#de5e17;
text-align:center;
color:#fff;
padding:7px 0 7px 0;
}
div#productlist_area div.productImage {
float:left;
width:40px;
padding:0 8px 0 0;
}
div#productlist_area div.productContents {
float:left;
width:100px;
}
div#productlist_area div.product_item {
padding:5px 0 5px 5px;
}
</style>
[/css]

データベースに新規ブロック情報を登録

[php]
insert into dtb_bloc values(10,10,’product_list’,’product_list.tpl’,’product_list’,now(),now(),’frontparts/bloc/product_list.php’,0);
[/php]

Warningが表示されたので掲示板等参考に下記を実行。

[php highlight=”7″]
<?php

// {{{ requires
require_once CLASS_REALDIR . ‘pages/frontparts/bloc/LC_Page_FrontParts_Bloc.php’;
////中略////

$this->arrProducts = $objProduct->lists(&$objQuery);

$objView->assignobj($this);
$objView->display($this->tpl_mainpage);
}

/**
* デストラクタ.
*
* @return void
*/
function destroy() {
parent::destroy();
}
}

?>
[/php]

data/class/pages/frontparts/bloc/LC_Page_FrontParts_Bloc_Product_List.phpの部分で、本文44行目(上記7行目) $this->arrProducts = $objProduct->lists(&$objQuery); $this->arrProducts = $objProduct->lists($objQuery);

としたら表示が消えました。

EC-CUBE 2.11 Smarty 主要ディレクトリパス一覧

[html]
<!–{$TPL_URLPATH}–>
/html/user_data/packages/XXXX(使用中のテンプレ)

<!–{$smarty.const.USER_TEMPLATE_REALDIR}–>
html/user_data/packages/

<!–{$smarty.const.TOP_URLPATH}–>
/html/

<!–{$smarty.const.ROOT_URLPATH}–>
/html/

<!–{$smarty.const.HTML_REALDIR}–>
/html/

<!–{$smarty.const.HTTPS_URL}–>
https://ドメイン

<!–{$smarty.const.P_DETAIL_URLPATH}–>
/html/products/detail.php?product_id=

<!–{$smarty.const.IMAGE_SAVE_URLPATH}–>
/html/upload/save_image/

<!–{$smarty.const.DATA_REALDIR}–>
/data/

<!–{$smarty.const.CLASS_REALDIR}–>
/data/class/

<!–{$smarty.const.CLASS_EX_REALDIR}–>
/data/class_extends/

<!–{$smarty.const.TEMPLATE_REALDIR}–>
/data/Smarty/templates/default/

<!–{$smarty.const.TEMPLATE_ADMIN_REALDIR}–>
data/Smarty/templates/admin/

<!–{$smarty.const.TEMPLATE_TEMP_REALDIR}–>
html/upload/temp_template/

<!–{$smarty.const.GRAPH_URLPATH}–>
/html/upload/graph_image/

<!–{$smarty.const.IMAGE_TEMP_URLPATH}–>
/html/upload/temp_image/

<!–{$smarty.const.CART_URLPATH}–>
/html/cart/

<!–{$smarty.const.ADMIN_LOGIN_URLPATH}–>
/html/shopmng/

<!–{$smarty.const.ADMIN_SYSTEM_URLPATH}–>
/html/shopmng/system/

<!–{$smarty.const.ADMIN_PRODUCTS_URLPATH}–>
/html/shopmng/products/

<!–{$smarty.const.ADMIN_ORDER_URLPATH}–>
/html/shopmng/order/

<!–{$smarty.const.MOBILE_IMAGE_URLPATH}–>
/html/upload/mobile_image/

<!–{$smarty.const.MOBILE_TOP_URLPATH}–>
/html/

<!–{$smarty.const.MOBILE_CART_URLPATH}–>
/html/cart/

<!–{$smarty.const.MOBILE_P_DETAIL_URLPATH}–>
/html/products/detail.php?product_id=

[/html]

EC-CUBE テンプレートのファイル構成

テンプレートをパッケージングしながら作成中です。
テンプレ用に格納場所と概要を寄せ集めてみました。
デフォルトの状態では、下記に格納されています。

[html gutter=”false” highlight=”1,2″]
root/data/Smarty/templates/default
root/user_data/default
[/html]

以下フォルダ構成
“EC-CUBE テンプレートのファイル構成” の続きを読む

レビュー一覧ページ作成 ec-cube2.11以降

まず管理画面にログインして、デザイン管理>PC>レイアウト設定 から、ページを新規入力します。
URLは review_list.php として、以下のコードを貼り付けて保存します。

次に、html/user_data/review_list.php を開いて、次のように修正します。

data/Smarty/templates/default/user_data/review_list.tpl を以下のように変更します。

以上。

ブロック化は以下。

デザイン管理>PC>ブロックの設定新規ブロックで下記を作成。
ブロック名:お客様の声一覧
ファイル名:review_list_bloc

トップページのブロックで表示する場合、html直下のindex.php下記のような感じで書き換え。

基本的には同じ作業。
画像とかは適当にかえましょう。
(レビュー自体未投稿だと空欄なので適当に用意しておきましょう。)

tpl(ページ詳細等)からphpを呼び出す方法。

下記のコード追加でPHPをインクルード可能。

またはSmartyからPHPを実行することが出来ます。
パスは開いたときのURLからの相対パスorサーバーの絶対パス。

ファイルパスは下記で調べる。

コレで別のPHPアプリも起動可能。掲示板/Blogなど。

「特定商取引法」項目のカスタマイズ

特定商取引法の項目追加の件 古物系(オークション)や中古家電販売をされている方は許可番号をどうしたって入力しないとなりません。
(場合によっては数県分入力せねばいけないときもありマスが。)

参考例として、項目「運営責任者」の下に項目「許可番号等」を追加する例を記載します。
今回の追加作業にはDBの操作が必要になるので、自己責任でバックアップとりましょう。

追加分カラム名を「law_no1」としました。

増やす場合は重複しなければあとは任意で好きなだけ増やしましょう。

基本MySQLしかいじったことないので以下はMySQL中心です。

1.\data\class\pages\admin\basis\LC_Page_Admin_Basis_Tradelaw.php 管理画面用の追加。

・「パラメータ情報の初期化」の「運営責任者」の下に下記を追加する。

 

 

2.\data\Smarty\templates\admin\basis\tradelaw.tpl 管理画面用テンプレ変更 ・「運営責任者」のデータ部分の下に下記を追加する。

 

 

\data\Smarty\templates\default\order\index.tpl (「利用ガイド」での「特定商取引法」ボタン押下後の表示テンプレート) ・「運営責任者」のデータ部分の下に下記を追加する。

 

 

携帯スマフォも同様に追加。 \data\Smarty\templates\sphone\order\index.tpl \data\Smarty\templates\mobile\order\index.tpl 携帯

 

 

絵文字は好きなの使いましょう。 (ネットで「絵文字コード」とかググれば一覧表が出てくるはずなので。) スマフォ

 

 

最後にデータベース追記 dtb_baseinfo の中にカラム追加。 カラム「law_no1」を追加。 (カラム形式はtext)

 

特定商取引法の文字数制限アップについて/data/mtb_constants_init.php

今日、特商法の部分を記入していたら文字数制限に到達w
なのでいじりましたw

/data/mtb_constants_init.php
/data/class/pages/admin/basis/LC_Page_Admin_Basis_Tradelaw.php
/data/Smarty/template/admin/basis/tradelaw.tpl
この3つを主にいじります。

手順は二段階。
1.もともとの入力制限数を解除
2.文字数チェック自体要らないので削除
3.入力時に文字をカウントしてるので解除

1./data/mtb_constants_init.phpの変更点

下記に変更。多分250行から260行付近です。

MTEXT_LEN が特商法の入力で一番文字数の必要なところ。
配送や返品に関してだと思います。
なのでありったけの文字数突っ込みましたw

2./data/class/pages/admin/basis/LC_Page_Admin_Basis_Tradelaw.php
入力して多かったらまた入力してくれ!みたいなことを行っている部分を削除します。
125から145行目あたりで解除したい項目の下記のコードを削除
「,」も削除してください。じゃないとエラーになるはず。

,”MAX_LENGTH_CHECK”

となりの「”EXIST_CHECK”」は未入力チェックっぽいのでいじらずw

3./data/Smarty/template/admin/basis/tradelaw.tpl
入力時のフォームで文字数をカウントしてるのでいっそのこと解除。
Smartyの都合か1.で変更してもなぜかすぐに反映されなくて、じれったかったので文字カウントごと消してやりました。

maxlength=”

この文が書いてあるような箇所で文字数増やしたいところを片っ端から削除。
これ消せばOKですが、あとはお好みで下記の文章も消しましょう。

(上限文字)

今日、もらった文章をそのままコピペで行こうかと思って突っ込んだら文字数制限で、ちょっとイラっとしながらも、どうせDBで制御してんだろ!とか思いながらDBのぞいてましたが見当たらず。
なので、ググりながらいじりながらようやく正解が出ましたよw

代引きとか配達方法の文言入れるの考えたらどうやったって200文字以上いくw
あとできれば古物商とか許可番号とかいろいろ増やせれば楽なのにねw

一応、特定商取引法の項目の追加も一度やっているのであとで書きます・・・・記憶のあるうちにw