【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へのパスと格納ディレクトリに矛盾がないか確認のこと。(アップロードしたディレクトリ構造によって上記パスは変わる)