■サンプル
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{$name}
{php}
$filename = '{$name}';←ここに出力したい
if (file_exists($filename)) {
print "ファイルあり";
} else {
print "ファイルなし";
}
{/php}
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
当然ながら上記のような方法ではできないのですが、
うまく取得する方法はありますでしょうか?
本来はSmartyでやりたいのですが、オープンソースのEC-CUBE内に
設置するため、他の部分が把握できず困っています。
上記のようなことができればシンプルなコードにはなりませんが、
すべて解決しますのでご教授宜しくお願い致します。
以下はどうでしょうか?
{$name}
{php}
$filename = '{/php}{$name}{php}';←ここ
if (file_exists($filename)) {
print "ファイルあり";
} else {
print "ファイルなし";
}
{/php}
ひとつ、Smarty のインスタンスをグローバル変数として参照し、
get_template_vars() で割り当てられた値を得るというのを
思いつきました。
■PHPスクリプト hoge.php
$smarty = new Smarty; //ディレクトリ指定等は省略... $smarty->assign('name','foo'); $smarty->display('hoge.tpl');
■テンプレートファイル hoge.tpl
{$name} {php} global $smarty; $filename = $smarty->get_template_vars('name'); if (file_exists($filename)) { print "ファイルあり"; }else{ print "ファイルなし"; } {/php}
それから、{php}{/php} の中では $this という変数で Smarty のインスタンスにアクセスできるようです。
http://www.phppro.jp/phpmanual/smarty/language.function.php.html
{$name} {php} $filename = $this->get_template_vars('name'); if (file_exists($filename)) { print "ファイルあり"; }else{ print "ファイルなし"; } {/php}
と書いても動きました。
ご回答ありがとうございます!!
私が探し求めてたのはものズバリです!!
通常のsmartyの環境では動作確認できたのですが、
EC-CUBE内では動きませんでした。分かりにくくなるため
省いていたのですがEC-CUBE内ではSmartyのタグが
hiddenタグで囲まれています。
▼ここから
$filename = $this->get_template_vars('arrProductsClass[0].name');
$filename = $this->get_template_vars('arrProductsClass[0].name|escape');
$filename = $this->get_template_vars('');
▲ここまで
というのでOKかと思ったのですがいずれもうまくいきませんでした。
ご存知でしたら宜しくお願い致します。
以下はどうでしょうか?
{$name}
{php}
$filename = '{/php}{$name}{php}';←ここ
if (file_exists($filename)) {
print "ファイルあり";
} else {
print "ファイルなし";
}
{/php}
これは最初のほうに試しました・・
エラー表示になるかと思います。
一度お試しになってからご回答お願いします。
すごい手っ取り早い方法で
テンプレートにアサインする前に
$_GET['test'] = $name;
して
$filename = $_GET['test'];
しちゃえば
それができないので困っています。
これは最初のほうに試しました・・
エラー表示になるかと思います。
一度お試しになってからご回答お願いします。