前提:
EC-CUBEver | PHP | MySQL |
---|---|---|
2.12.6 | 5.3.3 | 5.1.73 |
・各商品には規格の一つとして「延長保証」が含まれています。
・各商品の[商品詳細画面]については、規格として延長保証に関する情報を表示することができている状態です。(画像を参照)
編集した内容に関しては以下となります。
(編集もしくは追加した行は★マーク部となります)
/path/to/data/class/pages/products/LC_Page_Products_Detail.php
php
1class LC_Page_Products_Detail extends LC_Page_Ex { 2 function action(){ 3 ...中略... 4 // 追加項目(商品規格情報の取得) 5 $this->arrProductsClassList = $this->lfGetProductsClass($product_id); ★ 6 ...中略... 7 } 8}
/path/to/data/Smarty/templates/default/products/detail.tpl
smarty
1<div id="undercolumn"> 2 <form name="form1" id="form1" method="post" action="?"> 3 <input type="hidden" name="<!--{$smarty.const.TRANSACTION_ID_NAME}-->" value="<!--{$transactionid}-->" /> 4 <div id="detailarea" class="clearfix"> 5 <div id="detailphotobloc"> 6 ...中略... 7 <!--{if $tpl_classcat_find1}--> 8 <div class="classlist"> 9 <!--▼規格1--> 10 <h2>延長保証</h2> 11 <!--{foreach from=$arrProductsClassList item="kikaku1" key="key"}--> ★ 12 <label/><input type="radio" name="classcategory_id1" value="<!--{$kikaku1.classcategory_id1}-->" /><!--{$kikaku1.classcategory_name1}--></label> ★ 13 <!--{$kikaku1.price02|number_format}-->円 ★ 14 <!--{/foreach}--> ★ 15 <!--▲規格1--> 16 ...中略... 17 </div> 18 </div> 19 </form> 20</div> 21
課題:
上記のようなラジオボタンと「商品規格」の情報を [商品一覧画面] でも表示させたいのですが、
上の二つのファイルに倣って編集したのですが、ラジオボタンが表示されません。
/path/to/data/class/pages/products/LC_Page_Products_List.php
内には、...Detail.php と同様に lfGetProductsClass() は定義してあるのですが、
以下のようなエラーがEC-CUBEエラーログ上に出力されます。
Fatal error(E_ERROR): Call to undefined method SC_Product_Ex::lfGetProductsClass() on [/var/www/html/data/class/pages/products/LC_Page_Products_List.php(273)] from ::1 customer_id = 1
原因及び解決策をご教示いただける方、お願いします!!
見よう見まねで編集していたため、処理の流れなども含めて教えていただけると幸いです。
追記
SC_Product_Exではなく、
・LC_Page_Products_Detail.php
・LC_Page_Products_List.php
に lfGetProductsClass() を追記しておりました。
_Detail.php の場合は以上は無かったのですが、同じコードを _List.php 内に記載したらエラーとなってしまった状態です。
また、lfGetProductsClass() を SC_Product_Ex に記載し直し、以下のように
list.tpl 内に @var_dump を設置しましたが、結果は下の画像の通りです。
smarty
1<!--{if $tpl_classcat_find1[$id]}--> 2 $tpl_classcat_find1[$id]=<!--{$tpl_classcat_find1[$id]|@var_dump}--> 3 <div class="classlist"> 4 <dl class="size01 clearfix"> 5 <!--▼規格1--> 6 <h2>延長保証</h2> 7 $arrProductsClassList=<!--{$arrProductsClassList|@var_dump}--> 8 <!--{foreach from=$arrProductsClassList item="kikaku1" key="key"}--> 9 <label/><input type="radio" name="classcategory_id1" value="<!--{$kikaku1.classcategory_id1}-->" /><!--{$kikaku1.classcategory_name1}--></label> 10 <!--{$kikaku1.price02|number_format}-->円 11 <!--{/foreach}--> 12 <!--▲規格1--> 13 </dl> 14 <!--{if $tpl_classcat_find2[$id]}--> 15 <dl class="size02 clearfix"> 16 <!--▼規格2--> 17 <dt><!--{$tpl_class_name2[$id]|h}-->:</dt> 18 <dd> 19 <select name="classcategory_id2" style="<!--{$arrErr.classcategory_id2|sfGetErrorColor}-->"> 20 </select> 21 <!--{if $arrErr.classcategory_id2 != ""}--> 22 <p class="attention">※ <!--{$tpl_class_name2[$id]}-->を入力して下さい。</p> 23 <!--{/if}--> 24 </dd> 25 <!--▲規格2--> 26 </dl> 27 <!--{/if}--> 28 </div> 29 <!--{/if}-->
現在のSC_Product_Ex.phpの中身は下記の通りです。
php
1require_once CLASS_REALDIR . 'SC_Product.php'; 2 3class SC_Product_Ex extends SC_Product { 4 5 /* 商品規格情報の取得 */ 6 function lfGetProductsClass($product_id) { 7 $objProduct = new SC_Product_Ex(); 8 return $objProduct->getProductsClassFullByProductId($product_id); 9 } 10 11} 12
あなたの回答
tips
プレビュー