【Smarty】PHPのテンプレートエンジン【Flexy】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2005/06/15(水) 10:35:52ID:???PHPのテンプレートエンジンを語るスレです。
Smarty:本家(英語)
http://smarty.php.net/
Smarty:日本語マニュアルとか
http://sunset.freespace.jp/smarty/
pear の HTML_Template たち
http://pear.php.net/package/HTML_Template_Flexy
http://pear.php.net/package/HTML_Template_IT
http://pear.php.net/package/HTML_Template_Sigma
http://pear.php.net/package/HTML_Template_Xipe
http://pear.php.net/package/HTML_Template_PHPLIB
patTemplate
http://www.php-tools.de/
http://www.php-j.com/tutorial/php/template.php
前スレ(現在dat落ち)【PHP】Smarty【Template】
http://pc8.2ch.net/test/read.cgi/php/1047225437/
0003nobodyさん
2005/06/15(水) 20:42:41ID:???0004前スレ984
2005/06/15(水) 22:16:41ID:???前スレッドの質問なんですが分かる人がいましたら、よろしくお願いします。
0005nobodyさん
2005/06/16(木) 01:43:00ID:???0006nobodyさん
2005/06/20(月) 19:46:15ID:???0007nobodyさん
2005/06/23(木) 10:42:54ID:???fileとbasedirをちゃんと設定してみてください。
0008nobodyさん
2005/06/24(金) 23:10:25ID:pYTM6kF20009nobodyさん
2005/06/24(金) 23:26:06ID:???この辺に書いてあるかな。
ttp://smarty.incutio.com/?page=SmartyFrequentlyAskedQuestions#other-1
0010nobodyさん
2005/06/25(土) 00:10:27ID:???ということは、例えば掲示板を作ったとして
書き込むのにお金を取るみたいなことも可能ですか?
0011nobodyさん
2005/06/25(土) 01:08:43ID:???モジュール毎か?
0013nobodyさん
2005/06/26(日) 06:20:15ID:???0015nobodyさん
2005/06/26(日) 11:39:53ID:???0016nobodyさん
2005/06/26(日) 13:16:50ID:???スマーチィで実現させる場合、
capture関数を使うみたいだけど、
スマーチィ内で使用する変数名が、各テンプレートでバッティングしないように
気を遣わなくちゃいけないよね?
なんか面倒くない?
0017nobodyさん
2005/06/26(日) 13:17:48ID:???だった
0018nobodyさん
2005/06/26(日) 13:19:16ID:???何だこれ使えばいいじゃん
馬鹿だ俺テヘヘ
ウヘラウヘラ
001913
2005/06/26(日) 13:20:03ID:???よろしくメカドック
0021nobodyさん
2005/06/26(日) 22:56:02ID:???0023nobodyさん
2005/06/27(月) 03:54:06ID:???0024nobodyさん
2005/06/27(月) 08:51:48ID:???0025nobodyさん
2005/06/29(水) 02:14:48ID:???両方使ったことある人どっちがおすすめですか?
0026nobodyさん
2005/06/29(水) 03:53:03ID:???0027nobodyさん
2005/07/07(木) 11:54:00ID:???0028nobodyさん
2005/07/07(木) 14:53:10ID:???関係ないけどSmarty他のファイルベースのキャッシュってどうなんだろ?
UNIXって同じディレクトリにファイルが何千もあると遅くなるって
聞いたことがあるし
inode使いまくりだから抵抗がある。
特にコンテンツ構成が変わる動的生成のページだったらキャッシュが山ほど増えそうだし。
SQLiteでやればいいんじゃないかなぁと思ってるんだけど。
DBクラス等でSQLiteをキャッシュに使ってる人いない?
0029nobodyさん
2005/07/07(木) 15:27:32ID:???inodeの実装によるような。
ディレクトリを線的探索する場合はファイル数に比例して
パフォーマンスは落ちるだろうけど、数千程度で実感する
パフォーマンスの低下は起きないんでないかな?
10年程前のLinuxのカーネルは確か1つのディレクトリに確保できる
ファイル数が限られるという制約があったと思うけど今はそんなこと
ないはずだし。
> SQLiteでやればいいんじゃないかなぁと思ってるんだけど。
それは本末転倒ではないか?素直にディレクトリ走査した方が早い気がする。
0030nobodyさん
2005/07/07(木) 15:39:47ID:???0031nobodyさん
2005/07/07(木) 16:17:13ID:???1テンプレート1キャッシュだし
0033nobodyさん
2005/07/08(金) 05:03:05ID:???一体どこらへんが?
0034nobodyさん
2005/07/08(金) 07:08:49ID:???ここらへん。
0036nobodyさん
2005/07/08(金) 10:38:17ID:???パラメータでキャッシュID振るんでしょ?そんときキャッシュディレクトリも
分けちゃえばいいんじゃないの?
0037nobodyさん
2005/07/10(日) 09:56:24ID:???この書き方でsyntaxエラーが出てしまったんですが、クラス変数を使って配列から取得したいんですが
書き方間違ってたら教えてください。
ちなみに、{$array.$obj->name}でも{$array[$obj]->name} こう変換されてしまってだめでした。
0038nobodyさん
2005/07/10(日) 12:55:05ID:???{$assing var=obj_name value=$obj->name}
{$array.obj_name}
0041nobodyさん
2005/07/15(金) 08:38:00ID:UMRZ8BPd0042nobodyさん
2005/07/15(金) 08:56:51ID:???0043nobodyさん
2005/07/15(金) 09:42:30ID:sLsGcdbzSMARTYの特定のテンプレートから外部サイトへリダイレクトさせるにはどうしたらいいでしょうか?
{PHP〜でLocationヘッダ出力してもダメでした。
0044nobodyさん
2005/07/15(金) 10:10:54ID:???html: <meta http-equiv="Refresh" content="10;URL=http://www.yahoo.com/">
smarty: {if $redirect}<meta http-equiv="Refresh" content="{$redirect.sec};URL={$redirect.url}">{/if}
0046nobodyさん
2005/07/15(金) 12:11:54ID:???004743
2005/07/15(金) 15:13:39ID:sLsGcdbzおお!なるほど!ありがとう!
0049nobodyさん
2005/07/30(土) 18:10:02ID:???0050nobodyさん
2005/07/31(日) 23:47:56ID:???0051nobodyさん
2005/08/03(水) 04:47:15ID:???0052nobodyさん
2005/08/07(日) 00:22:54ID:???Smartyでググると二番目に出てくるこのサイト激しくウザい
広告だらけでほとんどが他人のサイトへのリンク
何でこんな糞サイトが上位に来るんだよ
0053nobodyさん
2005/08/07(日) 00:36:09ID:???0055nobodyさん
2005/08/07(日) 15:17:30ID:???http://manage.nekosuke.net/cms.php?mode=menu
0057nobodyさん
2005/08/17(水) 04:04:43ID:zG9hS4+hどうやって参照できるの?
$assoc.$key
って適当にやったらエラーになった
教えてクリクリ
005857
2005/08/17(水) 04:06:40ID:???なんでさっきエラーになったんだろ
すまんこ
005957
2005/08/17(水) 04:12:54ID:???エラーにならないだけだ
どうしたらいいの?
0060nobodyさん
2005/08/17(水) 04:17:51ID:???http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&rls=GGLG,GGLG:2005-32,GGLG:ja&q=%E9%80%A3%E6%83%B3%E9%85%8D%E5%88%97+php
006157
2005/08/17(水) 04:23:31ID:???マニュアルにも載ってないところを見ると無理ぽ?
0063nobodyさん
2005/08/17(水) 18:30:38ID:???$assoc.$key => $assoc.key
マニュアルに載ってルゾルゾ
0064nobodyさん
2005/08/17(水) 19:33:53ID:???試してみたら$assoc.$keyでも$assoc[$key]でもOKだったんだが、
$keyにassignしてないとかいうオチじゃないよね?
>>63
Smartyで連想配列のキーを変数でアクセスしたいってことだと思う
0065nobodyさん
2005/08/17(水) 20:58:18ID:???$moe = array('a','b');
こんな感じので、
{foreach form=$moe item=i}{$hoge.$i}{/foreach}
こういう感じでしょ?
$iが$i.1とかだと{$hoge[$i.1]}にしないとだめなんだっけか。
0066nobodyさん
2005/08/18(木) 10:13:17ID:k8qTuvh+ほとんどそのままリプレースできんの?
使ってる人いる?
0067nobodyさん
2005/08/19(金) 11:32:37ID:???Smartyの $smarty->fetch() を使って整形した文字列を取得するスクリプトを組もうとしてるんですけど
Linuxのコンソール上で php ./test.php としてスクリプトを実行した時には問題なく動作するんですが
メールからパイプで呼び出すと
Warning: Smarty error: unable to read resource: "test.tpl"
となってしまい fetch でテンプレートをコンパイルしてくれません。
パイプからだと実行位置が違うか template_dir へのパスがうまく通ってないのかな?
と思って テンプレート指定の部分を
$smarty->fetch("file:/path/to/test.tpl");
とフルパスを与えて試したんですけど同じ結果になってしまいます。
テンプレートファイルのアクセス権も 777 にしてるのですがだめぽです。
テンプレート内のfetch関数は、セキュリティが有効な場合は$secure_dirにあるファイルしか読めないみたいなのですが
$smarty-fetch() でも何か同じような制限があるんでしょうか?
0068nobodyさん
2005/08/19(金) 11:49:29ID:???0069nobodyさん
2005/08/20(土) 00:26:52ID:CuJMKX6qその部分だけ、キャッシュを無効とかにできますのでしょうか。。
0070nobodyさん
2005/08/21(日) 10:04:09ID:???0071nobodyさん
2005/08/21(日) 13:35:48ID:???0073nobodyさん
2005/08/30(火) 02:00:43ID:Z/2p1wcU読み込み元PHPを基準?と考えて作る必要があるのでしょうか?
例えば、
/usr/local/apache2/htdocs/index.php
が
/usr/local/apache2/htdocs/templates/index.html
を読み込んで、
/usr/local/apache2/htdocs/templates/img/
中にindex.htmlで使う画像がある場合は、、、
…ドキュメントルート以下からのフルパスで全て指定するようにすれば、無問題なのかな?
どうでしょうか?
書いてる途中で気付いた、、、orz
0074nobodyさん
2005/08/30(火) 02:21:04ID:???HTMLで使う画像のパスはURIなわけで。
アクセスされたURIから見た(絶対|相対)URIになるわけだな。
0075SmartySmile
2005/09/01(木) 09:52:14ID:x5rzeuMlframexxx.tplで<frame src=xxx.tpl>みたいに指定して、
xxx.tplに<td>{$item}</td>みたいな感じで書いておいて、$itemに値をセットしてから
display(framexxx.tpl)って表示させると、
{$item}の部分がそのまま{$item}って表示されちゃいます。
srcで指定したtplの中までは解析してくれないのかな?
いい方法ないでしょうか?
0077nobodyさん
2005/09/06(火) 06:17:37ID:???ピュアPHPだとどうしても速度的にネックになりやすい部分だったDBの抽象レイヤやO/Rマッピングも
PDOが標準モジュールになったり、DB_DataObjectがPECL入りしたりしてるから、
テンプレートエンジンもモジュール化されて高速に(できれば標準に)なると嬉しいんだけど。
いくらHTML埋め込みが特徴だからって<?=を使うわけにもいかないし・・・
0078nobodyさん
2005/09/06(火) 08:45:22ID:???結局、<?=...なテンプレートをincludeする形に落ち着いたんだけど、
>>77
> いくらHTML埋め込みが特徴だからって<?=を使うわけにもいかないし・・・
なんでなんでー
0079nobodyさん
2005/09/06(火) 08:53:27ID:???0080nobodyさん
2005/09/07(水) 05:01:04ID:???short_open_tagをOnにしないと使えないから。
可搬性を考えるとOn前提のコーディングは出来ないからね
0082nobodyさん
2005/09/07(水) 10:02:52ID:???<?php echo ...
これで可搬性も担保できるお。
タイプ量が増えるからいや?
読みにくくなるいや?
0083nobodyさん
2005/09/08(木) 16:58:41ID:???>DB_DataObjectがPECL入りしたりしてるから、
ソース( ゚д゚)クレ
DBDOのこといってるの?
0084nobodyさん
2005/09/08(木) 22:21:24ID:???うん、DBDOのこと
中の人はFlexyの人でもあるから、テンプレートのPECL入りもありうるかなぁと思ったり
0085nobodyさん
2005/09/09(金) 01:36:30ID:???0086nobodyさん
2005/09/09(金) 22:03:07ID:???「それぞれの $template_dir のために別々の compile_id をセットしなければ、
同名のテンプレートはお互いに上書きされてしまいます。」
DocRoot/templates_c/
DocRoot/templates/index.tpl
DocRoot/templates/hoge/index.tpl
DocRoot/templates/hoge/piyo/index.tpl
DocRoot/index.php -> $smarty->display(DocRoot/templates/index.tpl);
DocRoot/hoge/index.php −> $smarty->display(DocRoot/templates/hoge/index.tpl);
DocRoot/hoge/piyo/index.php −> $smarty->display(DocRoot/templates/hoge/piyo/index.tpl);
2.6.1なんですが、これってやっぱり各々のindex.phpでcompile_idセットしないといけないですか?
実際"%%C5^C5B^D5GFCD64%%index.tpl.php"とか接頭語で別ファイルになってるけど。。。
0087名無しさん@そうだ選挙に行こう
2005/09/11(日) 01:16:03ID:???その接頭語はdisplay()に渡されたパス全体のCRC。あなたのやり方ならまあ大丈夫でしょう。
DocRoot/index.php
$smarty->template_dir='DocRoot/templates';
$smarty->display('index.tpl');
DocRoot/hoge/index.php
$smarty->template_dir='DocRoot/templates/hoge';
$smarty->display('index.tpl');
こういう使い方はまずい。
0088名無しさん@そうだ選挙に行こう
2005/09/11(日) 02:17:11ID:???ありがとうございます。なるほどCRCだったんですね。
って事はまずバッティングする事は無いですね、0%では無いけど(笑)
どうやら続きができそうです(^^)
0089nobodyさん
2005/09/13(火) 00:11:30ID:+9gUXOxC$smarty->template_dir='DocRoot/templates';
$smarty->compile_dir ='DocRoot/compdir/hoge';
$smarty->display('index.tpl');
DocRoot/hoge/index.php
$smarty->template_dir='DocRoot/templates/hoge';
$smarty->compile_dir ='DocRoot/compdir/fuga';
$smarty->display('index.tpl');
こういう使い方はどう?
0090nobodyさん
2005/09/13(火) 03:26:48ID:???「1つ以上の $template_dir を持っているが $compile_dir が1つしかない場合です」
に該当しないから普通に大丈夫だと思われ。
DocRoot/index.php
$smarty->template_dir='DocRoot/templates';
$smarty->compile_dir ='DocRoot/compdir';
$smarty->display('index.tpl');
DocRoot/hoge/index.php
$smarty->template_dir='DocRoot/templates/hoge';
$smarty->compile_dir ='DocRoot/compdir/hoge';
$smarty->display('index.tpl');
俺ならこっちの方が管理しやすケド
0091nobodyさん
2005/09/15(木) 05:08:57ID:4GZtFUq5http://search.yahoo.co.jp/bin/query?p=phptal+%C2%B0%C0%AD
0092nobodyさん
2005/09/16(金) 01:40:10ID:???ものすごい勢いで使われて「いません」よ。つかリザルトに国産のが引っかかってんね
ttp://phpoot.sourceforge.jp/
ttp://aloha.s151.xrea.com/studyphp/huel/
象嵌に植える?派生か知らんがどっちも無名だなプ。ベンチとか使用者のレポきぼん
0094nobodyさん
2005/09/22(木) 15:28:15ID:7V8YpZLH今日もネタもないのにageてやるからな!
 ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
∧_∧ ∧_∧ age
(・∀・∩)(∩・∀・) age
(つ 丿 ( ⊂) age
( ヽノ ヽ/ ) age
し(_) (_)J
0095nobodyさん
2005/09/26(月) 16:31:10ID:/MkqbBhFconfig_loadで読み込むことはできない?
0096nobodyさん
2005/09/27(火) 22:45:48ID:G3cqNu07学もなく、技術もなかった母は、
個人商店の手伝いみたいな仕事で生計を立てていた。
それでも当時住んでいた土地は、まだ人情が残っていたので、
何とか母子二人で質素に暮らしていけた。
娯楽をする余裕なんてなく、日曜日は母の手作りの弁当を持って、
近所の河原とかに遊びに行っていた。
給料をもらった次の日曜日には、クリームパンとコーラを買ってくれた。
ある日、母が勤め先から愛・地球博のチケットを2枚もらってきた。
俺は生まれて初めての万博に興奮し、
母はいつもより少しだけ豪華な弁当を作ってくれた。
愛・地球博の会場に着き、チケットを見せて入ろうとすると、係員に止められた。
母がもらったのは割引券で、これでは入場できないと言われた。
帰りの電車賃くらいしか持っていなかった俺たちは、会場の周辺を夕方まで散歩した。
電車の中で無言の母に「楽しかったよ」と言ったら、
うつむいた母は「母ちゃん、入場チケットだと思った。バカでごめんね」と言って
少し涙をこぼした。
俺は母につらい思いをさせた貧乏と無学がとことん嫌になって、
一生懸命に勉強した。
親元を離れて新聞奨学生として大学まで進み、
いっぱしの社会人になり毎月少しばかりの仕送りもできた。
結婚もして、孫を見せてやることもできた。
そんな母が去年の暮れに病気で亡くなった。
死ぬ前に一度だけ目を覚まし、うわごとのように「愛・地球博、ごめんね」と言った。
俺は「楽しかったよ」と言おうとしたが、最後まで声にならなかった。
0097nobodyさん
2005/09/28(水) 20:14:28ID:???万博にしたら泣けたのにな。
こないだ終わったばっかじゃん。
0098nobodyさん
2005/09/28(水) 21:48:47ID:???0099nobodyさん
2005/09/30(金) 03:18:14ID:+J65W0vg字下げしたら、それがHTMLにも出力されるし、
字下げしにくいと見にくい。どうしたものか…
0100nobodyさん
2005/09/30(金) 10:10:28ID:???かまわずタブで字下げしてるけど
気になるなら
一度文字列として取得したあとに
タブを除去して出力するとか
メールのテンプレートにもsmartyを使ってるけど
メールの場合はダイレクトに反映されてしまうのでそうしてるよ
■ このスレッドは過去ログ倉庫に格納されています