[EC-CUBE tips]viewに渡したはずの値が表示されない?―page_extends/frontpartsの存在

こんにちは、やっとこさおひな様を出したinoueです。一週間限定公開!
さて。EC-CUBEで独自GETパラメータを追加して商品検索を行おうとした際に(ムダに)ハマってしまった話をしたいと思います。
今思えばメインで利用しているCakePHPに対する感覚が邪魔をしたともいえるお話なのですが…。
やりたいことは、下の図のような仕様です:
最初の実装
まずはコントローラのカスタマイズから。
data/class_extends/page_extends/products/LC_Page_Products_List_Ex.php 
に次のようにsizeプロパティを定義することでビューに取得したsizeパラメータを渡すことができます。
 
class LC_Page_Products_List_Ex extends LC_Page_Products_List {
    //サイズ検索用のパラメータ
    var $size
    
    :
    :
    /**
     * Page のプロセス.
     *
     * @return void
     */
    function process() {
    
        //サイズ検索用のパラメータの取得
        if (isset($_GET['size']) {
            $this->size = $_GET['size'];
            
            //サイズ検索の処理など(以下、略)
        } 
    
        parent::process();
    }
    :
    :
というのも、この LC_Page_Products_List_Ex の継承元の LC_Page_Products_List のprocessメソッド にて 次のような処理があるため、クラスのメソッドとして定義してあれば、その値はビューへと引き継がれることになります。
 
        $objView->assignobj($this);
        $objView->display(SITE_FRAME);
次にビューのカスタマイズ。 data/Smarty/templates/default/list.php(一覧ページのメイン部) と data/Smarty/templates/default/bloc/category.php(サイドのカテゴリー表示パーツ)に次のSmartyタグを挿入します。
 
<!--{$size}-->サイズの商品
ここまででカスタマイズOK!と表示を確認すると、結果は…メインにしかサイズが表示されていませんでした。なぜ?
足りなかったもの
$sizeをはじめ様々な値を追跡しても、そちらには問題なし。
あらためて、どのように表示が行われているかを確認していて、
data/class_extends/page_extends/frontparts/bloc/LC_Page_FrontParts_Bloc_Category_Ex.php 
というファイル(コントローラ)の存在に気づきました。
渡したつもりになっていましたが、サイドのビューには$sizeが渡っていなかったんですね。
ということで、気を取り直して、ここにもプロパティを追加。
 
class LC_Page_FrontParts_Bloc_Category_Ex extends LC_Page_FrontParts_Bloc_Category {
    //サイズ検索用のパラメータ
    var $size
これでやっと期待する表示が実現できました!
メイン部分で値渡していればサイドなどには渡るだろう、というのは大間違い、というのが今回の教訓。
使っているフレームワークの構造を冷静に確認しないといけないですね。
みなさんも気を付けてくださいね!
![[EC-CUBE tips]viewに渡したはずの値が表示されない?―page_extends/frontpartsの存在](https://bashalog.c-brains.jp/images/cat_tools.png)



