【EC-CUBE】現在のページのURLを取得してテンプレートで(QRコードを)表示する。

ページのQRコードを動的に生成させる場合などに、現在のページそのもののURLを取得してテンプレートへ出力するには、PHPでURLを取得して、変数を定義しておく→tplファイルで、その変数を表示、というやり方も使える。

要は、

https://bton.papalabs.net/?p=355

https://bton.papalabs.net/?p=358

↑この記事の複合技。

先の記事は、EC-CUBEでプロダクトやカテゴリの変数を情報として使う前提でコードを組んでいるので、その他のページには使えない。でも、こちらのやり方であれば、その他のシステムにも応用が利く。但し、一覧ページの場合は、そのページそのものというのは、一覧のページということになるから、「一覧ページで各商品ページのURLをQRコードで表示したい」という場合は、先のやり方を使う。

1)現在のページURLを取得するPHPコードを保存する。

下記のコードを「urlget.php」という名称で作成し、EC-CUBEのルートディレクトリへ保存。(別に変えてもかまわない。)

<?php

$thisURL=’http://’.htmlspecialchars($HTTP_SERVER_VARS[‘HTTP_HOST’],ENT_QUOTES).htmlspecialchars($HTTP_SERVER_VARS[‘REQUEST_URI’],ENT_QUOTES);

define(’CONFIG_THIS_URL’,$thisURL);  
?>

2)作成した「urlget.php」を読み込む。

/require.php

の適当な位置(Ver.2.3RC1の場合、L27とかが分かりやすい。)に

require_once($require_php_dir . “/urlget.php”);

と追記し、「urlget.php」を呼び出す。

3)テンプレートに表示用のコードを追加。

そのページそのもののQRコードを表示させたいテンプレートに、

<img src=”<!–{$smarty.const.SITE_URL}–>php/qr_img.php?d=<!–{$smarty.const.CONFIG_THIS_URL}–>&e=M&s=3&t=j”>

または、

<img src=”<!–{$smarty.const.URL_DIR}–>php/qr_img.php?d=<!–{$smarty.const.CONFIG_THIS_URL}–>&e=M&s=3&t=j”>

と記載する。(QRコード表示用のPHPへのパスの表示が変わるだけで結果は同じなので、どっちでもOK。)

qr_img.phpへのパスと格納ディレクトリに矛盾がないか確認のこと。(アップロードしたディレクトリ構造によって上記パスは変わる)