バージョン選択

フォーラム

メニュー

オンライン状況

59 人のユーザが現在オンラインです。 (46 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 59
もっと...

サイト内検索

質問 > その他 > 2.11j系 商品規格マトリックス表示について

その他

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
greanpice
投稿日時: 2013/10/13 13:49
対応状況: −−−
長老
登録日: 2011/7/12
居住地:
投稿: 180
2.11j系 商品規格マトリックス表示について
お世話になります。
eccube2.11.5を使用しておりますが、
商品詳細画面での規格のプルダウン表示を一覧表の表示にしたいのですが、やり方がいまいちわからず、苦戦しています。
どなたかご教授いただければ幸いです。
どうぞよろしくお願いいたします。
nekochan
投稿日時: 2013/10/13 21:49
対応状況: −−−
常連
登録日: 2011/6/17
居住地: 千葉県
投稿: 41
Re: 2.11j系 商品規格マトリックス表示について
[EC-CUBE]2.11.5
[レンタルサーバー]ファーストサーバー
[OS]Linux
[データベース]MySQL5.0
[WEBサーバ]Apache2.2

返信でなくてごめんなさい。
私も同じ問題で困っています。どなたか教えてください。

おおよそは、EC-Cube 公式完全ガイド(翔泳社)のp233のやり方でできますが、もう一工夫が必要のようです。翔泳社のサポートサイトにある2.12用のソースをダウンロードし、その中から、『規格のテーブル表示』に関する部分を抜きだし、2.11.5の下記二つのファイルの該当箇所に貼りつけました。
data/class/pages/products/LC_Page_Products_Detail.php
data/Smarty/templates/default/products/detail.tpl
<問題点>
ほぼ、これで出来ているのですが、お客さんが、うっかりどのラジオボタンにもチェックを入れず、「カゴに入れる」ボタンを押してしまった場合、『※ 規格を選択してください』という、アラーム画面になります。ここで買いたい規格選択のラジオボタンにチェックを入れて「カゴに入れる」ボタンを押せば、商品はカゴに入り、画面は元の商品詳細画面に戻るはずです。ところが、実際には「ご指定のページはございません。」というエラーページに遷移してしまいます(商品はカゴに入っています)。元の商品詳細画面に戻すにはどういう風に修正すればよろしいでしょうか?
pHP未熟者で、自力修正できません。お分かりになる方教えてください。

data/class/pages/products/LC_Page_Products_Detail.php への追加コード
3箇所有ります。
(1)1箇所目
* Page のプロセス.
*
* @return void
*/
function process() {
//この下の部分を追加
if (!empty($_POST["class"]))
{
$splited_class = explode("_", $_POST["class"]);

$_REQUEST["product_class_id"] = $splited_class[0];
$_REQUEST["classcategory_id1"] = $splited_class[1];
$_REQUEST["classcategory_id2"] = $splited_class[2];
}

parent::process();
$this->action();
$this->sendResponse();
}
//追加ここまで
/**
* Page のAction.
*
* @return void
*/


(2)2箇所目

// 規格1が設定されている
$this->tpl_classcat_find1 = $objProduct->classCat1_find[$product_id];
// 規格2が設定されている
$this->tpl_classcat_find2 = $objProduct->classCat2_find[$product_id];
//以下の1行を追加
$this->classTable = $this->getClassDataForTable($product_id);
$this->tpl_stock_find = $objProduct->stock_find[$product_id];
$this->tpl_product_class_id = $objProduct->classCategories[$product_id]['__unselected']['__unselected']['product_class_id'];
$this->tpl_product_type = $objProduct->classCategories[$product_id]['__unselected']['__unselected']['product_type'];

(3)3箇所目
/**
* デストラクタ.
*
* @return void
*/
function destroy() {
parent::destroy();
}
//以下を追加
function getClassDataForTable($product_id)
{
$this->arrProductsClass = $this->lfGetProductsClass($product_id);
$this->arrClassCat2 = array();

$classTable = array();

// 規格1、2が設定されている場合は規格1×規格2の配列を作成
if ($this->tpl_classcat_find1 == true && $this->tpl_classcat_find2 == true)
{
foreach ($this->arrProductsClass as $productsClass)
{
$key1 = $productsClass["classcategory_id1"];
$this->arrClassCat1[$key1] = $productsClass["classcategory_name1"];

$key2 = $productsClass["classcategory_id2"];
$this->arrClassCat2[$key2] = $productsClass["classcategory_name2"];
}

$x = 0; // x軸
$y = 0; // y軸

// 規格1行を作成
$classTable[$x][$y] = "";
$x++;

foreach ($this->arrClassCat1 as $key1 => $value1)
{
if ($value1 != "選択してください")
{
$classTable[$x][$y] = $value1;
$x++;
}
}
$x = 0;
$y++;

// 規格2列を作成
foreach ($this->arrClassCat2 as $key2 => $value2)
{
$classTable[$x][$y] = $value2;
$y++;
}

$x = 1;
$y = 1;

// マトリックスを作成
foreach ($this->arrClassCat1 as $key1 => $value1)
{
if ($value1 != "選択してください")
{
foreach ($this->arrClassCat2 as $key2 => $value2)
{
$classTable[$x][$y]["value"] = null;

// 選択した項目かチェック
if ($key1 == $_REQUEST["classcategory_id1"] && $key2 == $_REQUEST["classcategory_id2"])
{
$classTable[$x][$y]["checked"] = "checked";
}

// 商品の規格IDを取得
foreach ($this->arrProductsClass as $productsClass)
{
if ($productsClass["classcategory_id1"] == $key1 && $productsClass["classcategory_id2"] == $key2)
{
// 在庫チェック
if ($productsClass["stock_unlimited"] != 1 && $productsClass["stock"] == 0)
{
$classTable[$x][$y]["value"] = null;
}
else
{
if (!empty($productsClass["product_class_id"]))
{
$classTable[$x][$y]["value"] = $productsClass["product_class_id"]. "_". $key1. "_". $key2;
}
else
{
$classTable[$x][$y]["value"] = null;
}
}
}
}
$y++;
}
$x++;
}
}
}
else if ($this->tpl_classcat_find1 == true && $this->tpl_classcat_find2 == false)
{
foreach ($this->arrProductsClass as $productsClass)
{
$key1 = $productsClass["classcategory_id1"];
$this->arrClassCat1[$key1] = $productsClass["classcategory_name1"];
}

$x = 0; // x軸
$y = 0; // y軸

foreach ($this->arrClassCat1 as $key1 => $value1)
{
$classTable[$x][$y] = $value1;
$x++;
}
$x = 0;
$y++;

// マトリックスを作成
foreach ($this->arrClassCat1 as $key => $value)
{
$classTable[$x][$y]["value"] = null;

// 選択した項目かチェック
if ($key == $_REQUEST["classcategory_id1"])
{
$classTable[$x][$y]["checked"] = "checked";
}

// 商品の規格IDを取得
foreach ($this->arrProductsClass as $productsClass)
{
if ($productsClass["classcategory_id1"] == $key)
{
// 在庫チェック
if ($productsClass["stock_unlimited"] != 1 && $productsClass["stock"] == 0)
{
$classTable[$x][$y]["value"] = null;
}
else
{
$classTable[$x][$y]["value"] = $productsClass["product_class_id"]. "_". $key;
}
}
}
$x++;
}
}

return $classTable;
}
//以上追加終わり
/* プロダクトIDの正当性チェック */
function lfCheckProductId($admin_mode,$product_id) {
// 管理機能からの確認の場合は、非公開の商品も表示する。
if (isset($admin_mode) && $admin_mode == 'on') {


data/Smarty/templates/default/products/detail.tpl への追加

<!--▼買い物かご-->

<div class="cart_area clearfix">
<input type="hidden" name="mode" value="cart" />
<input type="hidden" name="product_id" value="<!--{$tpl_product_id}-->" />
<input type="hidden" name="product_class_id" value="<!--{$tpl_product_class_id}-->" id="product_class_id" />
<input type="hidden" name="favorite_product_id" value="" />

<!--{if $tpl_stock_find}-->
//以下に規格テーブル部分を追加(元のプルダウンリスト部分は削除)
<!--{if $tpl_classcat_find1 && $tpl_classcat_find2}-->
<!--{$tpl_class_name1|h}--> × <!--{$tpl_class_name2|h}-->

<!--{if $arrErr.classcategory_id1 != ""}-->
<br /><span class="attention">※ 規格を選択してください</span><br>
<!--{/if}-->
<table>
<!--{foreach from=$classTable key="key" item="value" name="dummy"}-->
<tr>
<!--{foreach from=$value key="key2" item="value2" name="dummy2"}-->
<!--{if $key == 0 || $key2 == 0}-->
<td><!--{$value2}--></td>
<!--{else}-->
<!--{if $value2.value != null}-->
<td><input type="radio" name="class" value="<!--{$value2.value}-->" <!--{$value2.checked}-->></td>
<!--{else}-->
<td>-</td>
<!--{/if}-->
<!--{/if}-->
<!--{/foreach}-->
</tr>
<!--{/foreach}-->
</table>

<!--{elseif $tpl_classcat_find1}-->
<!--{$tpl_class_name1|h}-->

<!--{if $arrErr.classcategory_id1 != ""}-->
<br /><span class="attention">※ 規格を選択してください</span><br>
<!--{/if}-->

<table>
<!--{foreach from=$classTable key="key" item="value" name="dummy"}-->
<tr>
<!--{foreach from=$value key="key2" item="value2" name="dummy2"}-->
<!--{if $key2 == 0}-->
<td><!--{$value2}--></td>
<!--{else}-->
<!--{if $value2.value != null}-->
<td><input type="radio" name="class" value="<!--{$value2.value}-->" <!--{$value2.checked}-->></td>
<!--{else}-->
<td>-</td>
<!--{/if}-->
<!--{/if}-->
<!--{/foreach}-->
</tr>
<!--{/foreach}-->
</table>
<!--{/if}-->
//以上追加終わり

<!--★数量★-->
<dl class="quantity">
k-kuwahara
投稿日時: 2013/10/31 20:54
対応状況: −−−
長老
登録日: 2013/4/16
居住地: Tokyo
投稿: 175
Re: 2.11j系 商品規格マトリックス表示について
nekochan様


こちら、「data/logs/」以下のerror.logに、何かヒントとなるようなエラーが出力されていないでしょうか?
もし未確認ならば、こちらを見ると何か分かるかもしれません。


こちら、参考意見までとさせていただきます。

以上、よろしくお願い致します。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は89,001名です
総投稿数は110,020件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2314
5
umebius
2085
6
yuh
1819
7
h_tanaka
1646
8
red
1570
9
mcontact
1296
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.