【PHP】 Smarty 隔離スレ 【テンプレート】
レス数が900を超えています。1000を超えると表示できなくなるよ。
0001nobodyさん
2008/02/02(土) 00:21:09ID:6cKcKeTp0805nobodyさん
2009/11/26(木) 15:52:24ID:???0806nobodyさん
2009/11/26(木) 16:04:59ID:???なぜmodifier?function作れば?
0807803
2009/11/26(木) 23:09:48ID:tP8Fcb0C>>804
header.tplって、単独のページとしては存在しないあくまでパーツのテンプレートなので、
index.tplに対するindex.phpの様なコントローラ(?)のファイルってheader.tplにはないのではと
考えたのですが…(header.phpにアクセスすることはないと思うので)
思い違いなのでしょうか?
>>806
勉強不足なのかもしれません、functionについて調べてみます。ありがとうございます。
0809803
2009/11/27(金) 01:09:41ID:???あ、親のページでってことですか、、なるほど!
1)ページのテーマ(animalとか)を引き渡されてDBに働きかけるphpを外部化し、
2)それをheader.tplの親のanimal.php, car.phpなどに読み込んで、
3)結果をincludeタグ渡す
って感じでいいかな。
これならデータの取得部分が複数にばらけることもないのか。。
これのデータ取得の順番を変えたものがfunctionでやるってパターンかもしれない
ありがとうございます。チャレンジしてみます
0810nobodyさん
2009/11/29(日) 07:42:11ID:wdDHDadn<?php
$var = "abc";
function smarty_function_hogefunc($params, &$smarty){
global $var;
return $var;
}
?>
上記の内容で <div>text</div>{hogefunc} としてもabcを出力しません、なぜでしょうか?
パスが通ってることは確認済みで、 $var="abc"; を echo "abc" とした場合、
abc<div>text</div>の形で出力するようです。
変数のスコープのチョンボをしてるのかなと考えてはみたんですが…
function …{〜} の外に書かれたものは正常に処理されないという仕様なんでしょうか?
申し訳ありませんが、ご意見宜しくお願いします
0811nobodyさん
2009/11/29(日) 13:22:28ID:???0812nobodyさん
2009/11/29(日) 14:16:45ID:???してみればいいじゃない。
0813810
2009/11/29(日) 23:16:09ID:???functionの中でreturn "abc"; すると、それは返すんです。
なんでかなぁ
>>811
わかりにくかったみたいですみません
0814nobodyさん
2009/11/30(月) 09:19:43ID:???・print_r($_GLOBALS)してみる
・echo $varしてみる
0815nobodyさん
2009/12/02(水) 14:25:43ID:1PNbu+TXhttp://www.youtube.com/watch?v=DyzzLwlIcpE
http://www.myspace.com/ametsub3110
http://www.youtube.com/watch?v=BDD9MZUTQzs
http://www.myspace.com/serphinjapan
(http://www.apple.com/jp/quicktime/download/)
http://www.jimbeard.com/boomer.html
http://www.jimbeard.com/Beard%20mp3s/Song%20of%20the%20Sun%20128/Camieff%20Wb.01_01.mp3
http://www.jimbeard.com/Beard%20mp3s/Song%20of%20the%20Sun%20128/Parsley%20Trees%20Wb.01_01.mp3
http://www.jimbeard.com/Beard%20mp3s/Truly%20128/Hand%20to%20Hand%20Wb.01_01.mp3
http://www.jimbeard.com/Beard%20mp3s/Truly%20128/Gonna%20Tell%20on%20You%20Wb.01_01.mp3
0816nobodyさん
2009/12/04(金) 17:16:31ID:???ブラウザで見るソースとcacheフォルダのキャッシュを見ると、DOCTYPEタグより上にプラグインの中身が出てしまってるんです
0817816
2009/12/05(土) 18:55:21ID:???insertプラグインって中でechoしちゃダメなのかreturnしないとイケないのか
キャッシュオフのときは正常に見えるから気付かなかった
0818nobodyさん
2009/12/07(月) 16:47:15ID:???0819nobodyさん
2009/12/09(水) 10:32:51ID:AWY/enbH0820819
2009/12/10(木) 15:56:47ID:???0821nobodyさん
2009/12/13(日) 22:00:00ID:???これだとだめなん?
ttp://www.smarty.net/manual/ja/caching.cacheable.php
0823nobodyさん
2009/12/15(火) 15:00:29ID:???のエラーが出る際に、
自分で作った404エラーページ(のテンプレ)を読み込むことはできますでしょうか?
0824nobodyさん
2009/12/15(火) 15:56:24ID:???$error_reportingを参照したらいいとおもう。
0825823
2009/12/15(火) 16:39:30ID:???0826nobodyさん
2009/12/25(金) 18:27:23ID:???マニュアルはサンプルとか説明が簡単すぎて知りたい情報が出てこないのですが・・・
例えばdefault_resource_typeプロパティで、デフォルトのfile以外の値を知りたいのに、それどころかサンプルすら書かれていなかったり困ります
リソースプラグインの事ももっと知りたいんですが見つかりません
PEARでも感じましたが、なんでこう情報が少ないんでしょうかね?
マニュアルとそのコピー以外の情報が出てきません
0827nobodyさん
2009/12/25(金) 19:02:01ID:???無いのは君の理解力だろう。
Smartyに至ってはマニュアルあれば大抵は事足りる。
リソースプラグインに関しても、マニュアル読んでわからん人には無縁なんじゃねぇかな。
あれ以上丁寧な解説求めるなら金払ってスクールにでも通えばいい。
0828nobodyさん
2009/12/25(金) 21:36:44ID:???謎があったら追い掛けてみたら?
0830nobodyさん
2009/12/27(日) 00:20:26ID:???「俺の知りたい情報が無い」ってだけじゃ、教える側もわからんだろう
default_resource_typeにしたって、リファレンスのテンプレートリソースとリソースプラグインの項目に十二分な情報載ってると思うしなぁ
ここまで枯れた技術なのに、情報が足りないってのは調べる力か理解力が無いとしか思えないんだが
0831nobodyさん
2009/12/27(日) 11:58:44ID:???0832nobodyさん
2009/12/27(日) 13:02:13ID:???0833nobodyさん
2009/12/27(日) 19:56:19ID:???「もし情報があったとしたら〜」なら同意できるんだけどな。
ブログなんかでちょこっと取り上げているサイトはあっても
ユーザー同士で語り合うようなコミュニティは無い。
マニュアル見ろよってのは当たり前の行為で、
Smartyはそれ以上の使い方(サイト構築のテンプレ利用など)があるから
使い方やアイディアをまとめたサイトがあれば良いとは思う。
0834nobodyさん
2009/12/27(日) 21:01:57ID:???0836nobodyさん
2009/12/29(火) 11:34:24ID:???0837nobodyさん
2010/01/06(水) 21:51:18ID:???マニュアルって簡潔にまとめられてるからね
>>833の言ってるようなことは俺は分かるね
Webだけじゃなく、他にも構築する時にここどうすればいいんだっけ?って時に調べられないからね
情報が少なすぎて
0838nobodyさん
2010/01/07(木) 09:11:46ID:???日本語で複数出版されてるのは恵まれてる方だと思う。
まとめサイトは自分で立ち上げて、ある程度充実させられれば
他の人も情報を集めてくれるようになるかもよ。
0839nobodyさん
2010/01/07(木) 15:20:10ID:???Smarty入門しか知らないけれど・・・?
0840nobodyさん
2010/01/07(木) 16:37:46ID:???0841nobodyさん
2010/01/07(木) 23:58:21ID:???$smarty->assignで割り当てるのは変数だからキャッシュじゃないし
0842nobodyさん
2010/01/08(金) 00:03:40ID:???0843nobodyさん
2010/01/08(金) 09:13:25ID:???WEBに溢れている情報を漁るだけで、大抵の事は答え一歩手前まで調べられるだろ・・・
0844nobodyさん
2010/01/08(金) 10:58:43ID:???0845nobodyさん
2010/01/08(金) 11:57:09ID:???0846nobodyさん
2010/01/08(金) 12:11:21ID:???0847nobodyさん
2010/01/09(土) 17:17:11ID:???0848nobodyさん
2010/01/17(日) 19:36:43ID:???0849nobodyさん
2010/01/18(月) 03:14:17ID:???0850nobodyさん
2010/01/18(月) 11:28:14ID:???2枚以上のテンプレートをdisplay()する場合もあるし
0851nobodyさん
2010/01/18(月) 14:06:09ID:AGLkXiCO$smarty->assign('pref', array('01' => '北海道', '02' => '青森'));
{$pref.01}
で北海道が取れていたのだけど、
Smarty3Beta板では
{$pref['01']}
としないと取れなくなったのは仕様変更ですか?
0852nobodyさん
2010/01/18(月) 14:06:25ID:YiIR+7Mx$hoge = array(
array("name" => "aaaaa", "value" => 1),
array("name" => "bb", "value" => 2),
array("name" => "ccc", "value" => 3),
array("name" => "dddddd", "value" => 4)
);
$fuga = array(
array("value" => 2), array("value" => 4)
);
上記二つのような配列変数があります。
Smartyを使って、$hogeの内容をチェックボックスとして表示しようと思っています。
また、$fugaの内容と一致するvalueの部分を選択状態にしておきたいです。
(例)
□aaaaa ■bb □ccc
■dddddd
テンプレート側でどのように指定すれば、上記方法を実現できるでしょうか。
{foreach}を使おうと思ってるんですが・・・
0855nobodyさん
2010/01/18(月) 15:59:06ID:???foreachでやるなら普通にループさせて
要素を出すところでifで比較してchecked入れればいいんじゃない?
$fugaのデータ構造がそのまま使えなくてちょい面倒だけど
予め使いやすいように変換するか、更にループさせて全件比較すればいいかと
0856nobodyさん
2010/01/20(水) 22:11:47ID:q80CCbb+interface iSmarty { const MY_NAME = "foo"; }
class MySmarty extends Smarty implements iSmarty {/*設定*/}
{$smarty.const.MY_NAME}
値fooが表示されることを期待したのですが、MY_NAME(定数名)が表示されてしまいます。
マニュアルの{$smarty.const}の項を見ると、defineによる例が掲載されていて
確かにdefineで定義されていれば正しく値が表示されます。
バージョン2.1なのでちょっと古いのかなとも思うんですが、
php5のコードを追加するのは無理でしょうか。
0857856
2010/01/20(水) 23:35:47ID:???拡張も考えてみたのですが、もとがphp4ですから、こちらのPHP環境と合わせて考えると
サブクラスで定義した"クラス定数"をテンプレートから呼び出すことは
おそらく無理と判断しましたm(_ _)m
確かなことは言えませんが、クラスを変数で参照できるphp5.3以降でなら
プラグイン等で機能追加できるような気がします。
0858nobodyさん
2010/01/21(木) 04:40:11ID:???マニュアルの例はもうちょっと落ち着いて見直してみたほうがいいと思うけど
0859nobodyさん
2010/01/29(金) 18:46:34ID:???インサートプラグインが1ページに5、6個あるとかなり速度低下してきてしまう
0861859
2010/01/30(土) 10:34:45ID:???今はindex.tplに{insert name="hoge"}って書いて
[insert.hoge.php]
function smarty_insert_hoge($params, &$smarty) {
if(!$smarty->is_cached('plugin_hoge.tpl', "plugin|hoge")) {
DBからデータを取ってきてassign
}
return $smarty->fetch('plugin_hoge.tpl', "plugin|hoge");
}
DBに更新を加える時にclear_cacheという感じでやってるんですが、作り方としておかしいですか?
こういうインサートプラグインが増えてくると、is_cachedとfetchをその分しなきゃいけないんで遅くなってると思うんですが
smarty3だと改善されてるんでしょうか?
0862nobodyさん
2010/01/30(土) 11:59:30ID:???0863nobodyさん
2010/01/30(土) 12:29:50ID:???http://www.smarty.net/manual/ja/caching.cacheable.php
0864nobodyさん
2010/01/30(土) 14:12:57ID:???0866nobodyさん
2010/01/30(土) 15:09:07ID:???方法がよく分からない。
結局require_once "Smarty.class.php"しなきゃいけないんだよね?
意味分かる人教えてください
Smartyの読み込みコスト(時間)を削減する
ttp://code.xenophy.com/?p=73
0867nobodyさん
2010/01/30(土) 16:02:16ID:???効果も0.01秒だし
0868nobodyさん
2010/01/30(土) 16:56:45ID:???0869nobodyさん
2010/01/30(土) 16:57:37ID:???0870nobodyさん
2010/01/30(土) 17:23:46ID:???0871nobodyさん
2010/01/30(土) 17:31:09ID:???0872nobodyさん
2010/01/30(土) 18:09:30ID:???うちのサイトだと0.01秒早くなったら速度2倍だぜ
0873nobodyさん
2010/01/30(土) 18:11:35ID:???0875nobodyさん
2010/01/31(日) 16:37:31ID:tjv1ZgGAコンパイルエラーになりますが、たまにパーミッション設定を忘れたりして
こういう現状が度々あります。
忘れず確認すれば良い事ですが、なにか効率の良い方法はないでしょうか?
0876nobodyさん
2010/01/31(日) 16:53:46ID:???0877nobodyさん
2010/01/31(日) 17:59:24ID:tjv1ZgGA・コンパイル用のディレクトリがない場合、自動的に作成
と言うぐらいしか思いつきません
後者はis_dirでチェックすればいいと思うのですが、前者は方法自体わかりません・・・
0880nobodyさん
2010/02/02(火) 14:53:16ID:???0881nobodyさん
2010/02/02(火) 14:54:00ID:???0882nobodyさん
2010/02/02(火) 16:28:53ID:???0884nobodyさん
2010/02/03(水) 01:26:14ID:???PHPっぽく数学処理出来るのはいいよね。Smarty3。
開発に時間かけ過ぎてて、既に腐り始めている気がするけど。
extend欲しいな。
0885nobodyさん
2010/02/05(金) 12:00:27ID:1wZyvV1Qそういうのは最新版では治ってるの?
0886nobodyさん
2010/02/05(金) 16:09:07ID:???0887nobodyさん
2010/02/05(金) 18:17:12ID:???0888nobodyさん
2010/02/06(土) 16:55:05ID:???じゃ、nodefaultsにすりゃいいかというと、フォームのユーザが追加できるようにしている場合、
デフォルトの値(フォームのセレクトとか)にエスケープしたい文字があると途端に無理が出る
結局ロジック側でh()するしかなくなる
0889nobodyさん
2010/02/09(火) 13:31:36ID:Af+mgrun"Content-Type: image/jpeg"的な意味で。
0890nobodyさん
2010/02/10(水) 09:26:09ID:???0893nobodyさん
2010/02/12(金) 21:11:24ID:???displayやfetchしてる所でget_file_contentするだけだろ
しょーもな
0894nobodyさん
2010/02/12(金) 21:12:15ID:???0895nobodyさん
2010/02/17(水) 16:31:45ID:???確かにSmartyが有用なケースが思いつかない。
0896nobodyさん
2010/02/20(土) 12:34:03ID:???0897nobodyさん
2010/02/20(土) 12:44:55ID:???0898nobodyさん
2010/02/20(土) 17:16:25ID:0jUjLrgq変数に格納されたテンプレートを使うために
変数用のリソースプラグインを使って試行錯誤してるのですが
相談させてください。
このリソースプラグインに変数(テンプレートの内容)を渡す方法ですが
2つ思いつきました。
1つは
$hoge = "ここにテンプレートの内容";
$smarty->fetch("var:hoge");
のように変数名を渡して
プラグイン側で グローバル変数の$hogeの内容を取得。
しかしグローバル変数を使うというのがちょっと気になります。
もう1つの案は
$smarty->fetch("var:{$hoge}");
としてテンプレートの内容自体を渡す方法。
しかしこれだと長い名前の中間ファイル(template_cにできるファイル)
が作られてなんだか気持ちが悪いです。
毎回コンパイルでいいので中間ファイルは作られないほうがいいのですが
それもできない感じ。
みなさんはどうしてますか?
0899nobodyさん
2010/02/20(土) 22:01:34ID:???グローバル変数じゃなくてSmartyにassignされた変数を見るようにすればいいんじゃねーの?
0900898
2010/02/24(水) 09:57:22ID:???規制でかけなかった・・・
結局Smartyを拡張してプロパティを追加したら
プラグイン側で普通に見れました
>>899
ありがとうございます
なるほど、それは気づきませんでした
そのほうが手軽ですね
0901nobodyさん
2010/03/03(水) 01:14:47ID:???フレームワークをやったことなかったけど、比較的わかり易い。
0902nobodyさん
2010/03/03(水) 16:18:29ID:???http://www.kuwata-lab.com/presen/LL2007LT.pdf
14-15ページを見た感じだと制御はPHPそのままで
PHPタグ外部分はわざわざechoするのか・・・
0903nobodyさん
2010/03/04(木) 15:15:33ID:jG8+9EsN0904nobodyさん
2010/03/05(金) 09:36:42ID:???レス数が900を超えています。1000を超えると表示できなくなるよ。