2014年12月26日金曜日

【ECキューブ】あらかじめの処理を伴うページやブロックを追加する

ECキューブのディフォルトのページには、ページのクラスとその拡張クラスとが紐付いていて、いろいろPHPで複雑なことが出来る。

大雑把に言って4つのPHPファイルがワンセットになってる。
■HTML側のPHP(URLに対応するもの)
 例:products/list.php
■テンプレートファイル
 例:data/Smarty/templates/default/products/list.tpl
■DATA側、ECキューブ標準の処理の書かれたクラスファイル
 例:data/class/pages/products/LC_Page_Products_List.php
■DATA側、ユーザーが拡張処理を書くための拡張クラスファイル
 例:data/class_extends/page_extends/products/LC_Page_Products_List_Ex.php

これらのファイルがあらかじめいろいろな処理をして、テンプレートで使える変数や配列を作っている。
管理画面から新規に作成したページで、他のページが使っているECキューブの変数が使えないのは、ECキューブ標準ページはこれらのファイルによってあらかじめ処理を経てきているから。
なので、新規追加ページでECキューブのいろいろな変数を使いたい場合、上記のクラスファイルや拡張クラスファイルを同様に追加して、処理を書いておかないといけない。


で、
そういう感じでPHPで色々なことを仕込んだ、ブロックも作りたい。

【方法】
管理画面からブロックを新規作成。

\public_html\frontparts\bloc に、block_任意の名前.php というファイル(※)を作成。
\public_html\data\class_extends\page_extends\frontparts\bloc に、LC_Page_FrontParts_Bloc_任意の名前_Ex.php という拡張クラスファイルを作成。その処理の内容は、同ディレクトリにある他のクラスを参考に。
このクラスファイルを、このHTMLディレクトリ側のPHPから呼び出す。

データベース管理画面に入り、「dtb_blocテーブル」を開く。
追加したブロックの「php_path」コラムに、「frontparts/bloc/block_任意の名前.php」と入力。(※)で作成したファイル。

LC_Page_FrontParts_Bloc_任意の名前_Ex.phpに、処理を書く!

2014年12月24日水曜日

【JavaScript】ポップアップで開いたウインドウを閉じた際、それを開かせた親のウインドウで何かする

情報入力をさせるWebページで、追加情報の入力のためにポップアップウィンドウを追加で開かせて、そこでの入力が完了してポップアップを閉じた際、開かせた親ページで表示更新なんかをさせたい場合。

window.openerというJavaScriptでのオブジェクトで、「自分を開かせた親のウィンドウ」を取得できる。
親のウィンドウ側のページにJavaScript関数(例えば「updateWhenRegistered()」みたいな名前で)を作っておいて、子ウィンドウの閉じるボタンあたりに


 onClick="javascript:window.close(); window.opener.updateWhenRegistered();"



というコードを仕込んでおけば、子ウィンドウから親ウィンドウのJavaScriptを実行できる。

2014年12月2日火曜日

データベース検索メモ NULLに注意

あるコラムを検索条件に入れるとして、そのコラムがNULLのとき、検索結果は問答無用でfaiseになってしまう。

NULLを取得するためには、「IS NULL」を使う。「col_a == null」とかでは拾えない。