EC-CUBE
2010年03月09日
【EC-CUBE】携帯サイトで表示画像がリサイズされてしまう件
まぁ、メモ書きみたいな物なので、何かの参考になれば程度に置いておきますw
ちなみに、バージョンは2.4.3です。
ああ、私本職のプログラマーじゃないので、予めご了承下さい。
EC-CUBEの携帯サイトだが、表示画像をすべて自動的にリサイズして/html/upload/mobile_image/内に保存する仕様になっている。
対処方法を検索すると、一番簡単な方法は、/data/class/SC_MobileImage.phpの92行目付近の
// HTML中のIMGタグを変換後のファイルパスに置換する
foreach ($images[1] as $key => $value) {
$converted = $imageConverter->execute(preg_replace('|^' . URL_DIR . '|', HTML_PATH, $value));
if (isset($converted['outputImageName'])) {
$buffer = str_replace($value, MOBILE_IMAGE_URL . '/' . $converted['outputImageName'], $buffer);
} else {
$buffer = str_replace($images[0][$key], '<!--No image-->', $buffer);
}
}
上記部分のコメントアウトなのだが、これだと、PC用に投稿された商品画像がリサイズされないため、携帯ブラウザの容量制限に引っかかりやすくなることが危惧されます。
まぁ、対処方法とは言えないかもw
さらに他の方法がないか探すと、複数のPHPを修正しての対象方法などが見つかるが、うーん、もっと簡単な方法はないかと考える。
で、私なりに考えた解決方法。
/html/user_data/packages/テンプレートコード/img/の中に携帯サイト用のデザイン画像を置く/mobile/というディレクトリを作成。
次に上記、/data/class/SC_MobileImage.phpの92行目付近のコードを以下のように修正
// HTML中のIMGタグを変換後のファイルパスに置換する
foreach ($images[1] as $key => $value) {
if(!ereg("/img/mobile/", $value)) {
$converted = $imageConverter->execute(preg_replace('|^' . URL_DIR . '|', HTML_PATH, $value));
if (isset($converted['outputImageName'])) {
$buffer = str_replace($value, MOBILE_IMAGE_URL . '/' . $converted['outputImageName'], $buffer);
} else {
$buffer = str_replace($images[0][$key], '<!--No image-->', $buffer);
}
} else {
continue;
}
}
何をしたかというと、話は簡単で、$valueには変換元の画像パスが含まれている。
ならば、$valueの中に「/img/mobile/」が含まれている場合は、携帯デザイン用の画像なので変換を実行させなければ良いので
if(!ereg("/img/mobile/", $value))で$valueに「/img/mobile/」が含まれない場合は実行するとしました。
改良後、テストすると/html/upload/mobile_image/内に変換された商品画像だけが貯まっていく。
改良は以上です。
しかし、デザインカスタマイズをするためにプログラムを修正するのは、本当は嫌なんだよなー。
ちなみに、バージョンは2.4.3です。
ああ、私本職のプログラマーじゃないので、予めご了承下さい。
EC-CUBEの携帯サイトだが、表示画像をすべて自動的にリサイズして/html/upload/mobile_image/内に保存する仕様になっている。
対処方法を検索すると、一番簡単な方法は、/data/class/SC_MobileImage.phpの92行目付近の
// HTML中のIMGタグを変換後のファイルパスに置換する
foreach ($images[1] as $key => $value) {
$converted = $imageConverter->execute(preg_replace('|^' . URL_DIR . '|', HTML_PATH, $value));
if (isset($converted['outputImageName'])) {
$buffer = str_replace($value, MOBILE_IMAGE_URL . '/' . $converted['outputImageName'], $buffer);
} else {
$buffer = str_replace($images[0][$key], '<!--No image-->', $buffer);
}
}
上記部分のコメントアウトなのだが、これだと、PC用に投稿された商品画像がリサイズされないため、携帯ブラウザの容量制限に引っかかりやすくなることが危惧されます。
まぁ、対処方法とは言えないかもw
さらに他の方法がないか探すと、複数のPHPを修正しての対象方法などが見つかるが、うーん、もっと簡単な方法はないかと考える。
で、私なりに考えた解決方法。
/html/user_data/packages/テンプレートコード/img/の中に携帯サイト用のデザイン画像を置く/mobile/というディレクトリを作成。
次に上記、/data/class/SC_MobileImage.phpの92行目付近のコードを以下のように修正
// HTML中のIMGタグを変換後のファイルパスに置換する
foreach ($images[1] as $key => $value) {
if(!ereg("/img/mobile/", $value)) {
$converted = $imageConverter->execute(preg_replace('|^' . URL_DIR . '|', HTML_PATH, $value));
if (isset($converted['outputImageName'])) {
$buffer = str_replace($value, MOBILE_IMAGE_URL . '/' . $converted['outputImageName'], $buffer);
} else {
$buffer = str_replace($images[0][$key], '<!--No image-->', $buffer);
}
} else {
continue;
}
}
何をしたかというと、話は簡単で、$valueには変換元の画像パスが含まれている。
ならば、$valueの中に「/img/mobile/」が含まれている場合は、携帯デザイン用の画像なので変換を実行させなければ良いので
if(!ereg("/img/mobile/", $value))で$valueに「/img/mobile/」が含まれない場合は実行するとしました。
改良後、テストすると/html/upload/mobile_image/内に変換された商品画像だけが貯まっていく。
改良は以上です。
しかし、デザインカスタマイズをするためにプログラムを修正するのは、本当は嫌なんだよなー。
2010年02月15日
「EC- CUBEデザインカスタマイズ パック」始めました
「EC-CUBEで始めるオリジナルデザインのネットショップ 」
EC-CUBEを使用してのオリジナルデザインのネットショップ構築サービスを始めました。
初期費用:36万円
月額費用:45,000円のパックサービスです。
只今、キャンペーン中につき初年度月額費用:30,000円です。
※キャンペーンは、2010年4月30日まで
公式セキュリティフィックスやマイナーバージョンアップも込みにしてあるので、月額費用はそこそこかかりますが、その分初期費用を頑張って抑えました。
提供に関して条件があるので、詳しくは、当社ホームページをご覧下さい。







