EC-CUBEのモバイルサイトにQRコードを埋め込もうとして非常に苦労した件

EC-CUBEのモバイルサイトにQRコードを埋め込もうとして非常に苦労した件

eccube

QRコードの生成にはPEARのパッケージ「Image_QRCode」を使用

モジュール自体の使い方は
PHPでちょっと奥に突っ込んだQRコード生成 – PHPに惚れました。
を参考にしました

何はともあれダウンロード

~~~
wget http://download.pear.php.net/package/Image_QRCode-0.1.1.tgz
tar zxvf Image_QRCode-0.1.1.tgz
~~~

中身の確認

~~~
Image image data doc tests
~~~

まずここがはまるポイント
普段sambaを使ってwindows環境で作業をしているのですがImageとimageディレクトリがwindowsだと同じものと判断されて中身がちゃんと見れない・・・
なので作業はlinux上でやりましょう

EC-CUBE上に設置する

data/module/以下に配置をします
~~~
module/Image/QRCode.php
module/Image/QRCode/
module/image/
module/data/
~~~
名前の問題を受けないようにこんな風に配置
配置を換えたのでQRCode.phpを書き換えます
~~~
public function __construct($options = array())
{
$this->path = “@[email protected]” . DIRECTORY_SEPARATOR . “Image_QRCode” .
DIRECTORY_SEPARATOR . “data”;
if (“@[email protected]” == “@” . “[email protected]”) {
// development path
$this->path = dirname(__FILE__) . “/data”;
}

$this->image_path = “@[email protected]” . DIRECTORY_SEPARATOR . “Image_QRCode” .
DIRECTORY_SEPARATOR . “image”;
if (“@[email protected]” == “@” . “[email protected]”) {
// development path
$this->image_path = dirname(__FILE__) . “/image”;
}
~~~
pearのモジュールなのにpearを呼んでない。不思議!

表示する

html/qr.phpを新規で作成
~~~
makeCode(htmlspecialchars($_GET[‘qrcode’], ENT_QUOTES));
?>
~~~

表示したいtplに以下のタグを記入
*hogehogeをQRコードにしたい文字列にしてください
~~~
携帯サイトでの問題を解決

data/class/helper/SC_Helper_Mobile.php 244行目をコメントアウト
~~~
// 端末に合わせて画像サイズを変換する。
//ob_start(array(‘SC_MobileImage’, ‘handler’));
~~~

html/require.phpに追記
~~~
/* qr.phpのときだけ、リダイレクト解除 */
if(!preg_match(“/qr.php/i”, $path)) {
header(“Location:”. SC_Utils_Ex::sfRmDupSlash($url . $path));
exit;
}
~~~

これでよーやくトップページにQRコードが表示されます。
携帯でクーポンを表示したい、なんて時に使える気がするので共有なのでした