最近またZen Cart なんですが

しばらく、自分開発のコンパクトなPHPカートを作っていたのですが、最近またZen Cart を弄ってます。

コンパクトなPHPカート(名前はまだない)は、それはそれで、既存のブログに追加したり、HTMLで既に出来上がっているサイトに簡単に追加できるので、便利なんですが。
(個人的には、MODxでサイト構築して、SnippetsでPHPカートに飛ばしたりする方法がいい感じになってきている)

ところが、最近の受注案件では、一からの構築と、高機能を求められるのでそういった部分には、「高機能ショッピングカート」としてZen Cart が必要になってくるわけです。

OsCommerce やEC-CUBE といった選択肢もあるのですが。

  • OsCommerce は、対応モジュールも豊富で、Zen Cart に近い部分が多いので良いのですが、Zen Cart のオーバーライド機能や、テンプレート管理機能に関してちょっと遅れ気味な感じがするので(勉強不足?)。
  • EC-CUBE は、バージョン2に上がったのですが、まだ対応しているサーバーが少ないのと、ちょっとしたカスタマイズにも高額のコストがかかり、気軽には導入できない感じです。一般的なECサイトで、デザインだけカスタマイズできればいいのであれば、EC-CUBE のAjaxなレイアウト管理は、おすすめです。

取引先の業種にもよるのですが、ちょっと特殊なことをやろうとするとZen Cart でないと“小回り”が利かなかったりするんですね。

【Zen Cart】注文管理の検索結果で詳細が白紙

注文管理画面で、例えば「山本」で検索し、山本さんの注文一覧を表示させたとします。

山本さんといっても目的の「山本 太郎」さんの他に「山本 次郎」さんや、「山本 花子」さんなども検索に引っ掛かってくる。

この一覧画面で、一番最初の山本さんの情報を見るには、問題ないのですが、2番目以降の山本さんをクリックした場合、「白紙の検索結果」画面が表示されてしまう。

対策前のURL

「山本」で検索した時の一覧のURLは、
http://www.zencart.com/admin/orders.php?search=%BB%B3%CB%DC

一覧から2つ目以降をクリックした時のURLは、
http://www.zencart.com/admin/orders.php?search=山本&page=1&oID=1013

search= 以下の文字列がURLエンコードされずにそのまま出力されてしまっています。

試しにURL内の「山本」を元の %BB%B3%CB%DC に置き換えてみると正しく動作します。

なので、この一覧ページ内のURLを組み立てているphpファイルを探して対応する変更をします。

html_output.php の処理

今回のエラーの原因は、日本語などのマルチバイト文字で検索した場合に一覧の2つ目以降の行のリンク先URLにマルチバイト文字列がURLエンコードされずに出力されているのが原因です。

/admin/includes/functions/html_output.php
のファイルを変更します。

変更前 : function zen_href_link 内の if ($parameters == ”) のところ..
<html_output.php 43行目あたり>

if ($parameters == ”) {
  $link = $link . $page;
  $separator = ‘?’;
} else {
  $link = $link . $page . ‘?’ . $parameters;
  $separator = ‘&’;
}

変更後 : else 内に以下のif文を追加します..

if ($parameters == ”) {
  $link = $link . $page;
  $separator = ‘?’;
} else {

/** ここから追加 **/
  if ( $_GET[‘search’] ){
    $parameters = str_replace($_GET[‘search’], urlencode($_GET[‘search’]), $parameters);
  }

/** ここまで追加 **/
  $link = $link . $page . ‘?’ . $parameters;
  $separator = ‘&’;
}

Zen Cart カスタマイズ

人は忘却する葦である。

とか言う言葉をどっかで聞いた事がある。

Zen Cart のカスタマイズ(どこのファイルいじれば、ここがこうなるとか・・・)、忘れた。

大体の流れは、分かっているんだけど、 その度にいちいちメインから辿ってる自分がまどろっこしい。。

かといって、「たぶんココ!」って、変更したらうまく表示しなかったり。

外部記憶装置が必要みたいです<俺
+Googleデスクトップの脳ミソ版って出ないのかなー