なんかどこかで昔に書いたような気がするのだけど、記事が見つけられなかったのでやってみました。
dtb_products の中に含まれる要素だと簡単に検索項目に追加できるのですが、
これが dtb_products_class に含まれる要素を使いたいとなると、難易度が一段上がります。
ポイントは、検索対象テーブルにdtb_products_classを加えるSQLを書けるかどうかと、
条件句に product_code を追加できるかですね。
以下のような方法で一応実現できました。
1.data/class/pages/products/LC_Page_Products_List.php の lfGetSearchCondition メソッドで以下の部分を修正
// 分割したキーワードを一つずつwhere文に追加
foreach ($names as $val) {
if (strlen($val) > 0) {
$searchCondition['where'] .= ' AND ( alldtl.name ILIKE ? OR alldtl.comment3 ILIKE ? OR pc.product_code ILIKE ?) ';
$searchCondition['arrval'][] = "%$val%";
$searchCondition['arrval'][] = "%$val%";
$searchCondition['arrval'][] = "%$val%";
}
}
2.data/class/SC_Product.php の findProductIdsOrder と findProductCount メソッドで以下の部分を修正
$table = <<< __EOS__
dtb_products AS alldtl LEFT JOIN dtb_products_class as pc ON alldtl.product_id = pc.product_id
__EOS__;
いつも思うけど、dtb_products に alldtl というエイリアスを設定するのはやめてほしいなぁ。











