【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/
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を使ってるけど
メールの場合はダイレクトに反映されてしまうのでそうしてるよ
0102nobodyさん
2005/09/30(金) 11:42:18ID:???0103nobodyさん
2005/09/30(金) 11:43:06ID:???0104nobodyさん
2005/10/03(月) 08:22:20ID:???昔はソースも綺麗じゃないと!と思ってやってたけど、めんどくさくなって来た。
ただ、CSSで「display:inline」使ったりとか、インデントは入るとレンダリングされた時にも余計なスペースも入るような場合だけ気にしてる。
010599
2005/10/03(月) 12:46:20ID:???俺も気にしないで字下げすることにしたよ。
ソースのキレイさなんてたいした意味ないもんな。
0106nobodyさん
2005/10/07(金) 00:51:44ID:OUR64i5+テンプレート中で定義するにはどうすればいいの?
0107nobodyさん
2005/10/07(金) 07:51:59ID:j2nZGy0l参照方法によるんじゃない
0108nobodyさん
2005/10/07(金) 12:19:03ID:???0109nobodyさん
2005/10/14(金) 04:03:34ID:IJV8gZEDヽ(・∀ ・)ノ <TALをつかいなよー!
(( ノ( )ヽ ))
< >
0110nobodyさん
2005/10/27(木) 19:57:17ID:Q3CXlK3DPEARのPagerとか、Pager_Slidingを使うと良いのでしょうか?
ttp://www.go-pear.org/manual/ja/package.html.pager.intro.php
ttp://www.go-pear.org/manual/ja/package.html.pager-sliding.intro.php
SmartyでPEARを使う方法がよくわかりません。
0111nobodyさん
2005/11/02(水) 05:16:03ID:???動作変わるんだね
分かりにくいわBOKE(><)
0113nobodyさん
2005/11/12(土) 03:12:11ID:???よく考えたらクラスのStatic変数をネームスペースとして使えるじゃん。
糞重いSmartyなんていらねーよバキャロコノヤロ
0114nobodyさん
2005/11/12(土) 03:19:27ID:???0115nobodyさん
2005/11/12(土) 07:19:38ID:???グローバル空間汚れないじゃん。
今まで何だったんだバキャロコノヤロ
0116nobodyさん
2005/11/14(月) 12:15:20ID:???if-endif
foreach-endforeach
なんて書き方があったんだとはじめて知った。
PHP自体がテンプレート的存在として生まれているのに、
テンプレートエンジンなど必要だろうか。
否、いらない。
0117nobodyさん
2005/11/14(月) 12:24:14ID:???例えば、次のような感じで表示に使うテンプレートを切り替えられれば便利じゃね?
if($status){
setTemplate('success.html'); // 成功時のテンプレートファイル
}else{
setTemplate('error.html'); // 失敗時のテンプレートファイル
}
0119nobodyさん
2005/11/14(月) 13:05:00ID:???0120nobodyさん
2005/11/15(火) 10:25:55ID:???0121nobodyさん
2005/11/15(火) 10:51:49ID:???予防的防衛というか
テンプレエンジン要らないOOP要らないコンテナ要らないSOAP要らない
Struts要らないモデリングツール要らないデザパタは無駄・・・etc
個人的に以下の二点かなあとか思った
これを満たす新技術には「どこがいいんだよ馬鹿」厨が発生するような
・誰にでも利用価値があるわけじゃないもの
・学習コストのかかるもの
0122nobodyさん
2005/11/15(火) 11:14:20ID:???これ大事。
だが今必要なのはAjaxPagesではないか
0123nobodyさん
2005/11/15(火) 11:54:09ID:???Smarty の html_select_time で各 select リスト同士を区切る文字を指定したいのですが、
html_select_date の field_separator のようなものが発見できません。
なので時間の場合、00:00:00のような表示ができないのですが、
皆様はどのようにされていますか?教えてください。
0124nobodyさん
2005/11/15(火) 12:46:47ID:???プラグイン実装なんだから好きに変えれ。
0125123
2005/11/15(火) 14:05:51ID:???そうですよね。
やっぱ自分で実装するしかないみたいですね。
ソース見たら簡単にできたので、自分で実装しました。
ありがとうございました。
0126nobodyさん
2005/11/17(木) 06:59:13ID:bEealcPT0127nobodyさん
2005/11/17(木) 10:52:46ID:???例えば
<input type="text" name="foo" value="hoge">
を表現するElementをfreezeすると、レンダリング結果は
hoge
になる。
ただしdepreciatedなメソッドだし、
Elementの種類によってはうまく動かない。
(マニュアルにも「this probably needs more thought..」とある)
要するに、使わない方が良いし気にしなくても良い。
0128nobodyさん
2005/11/17(木) 11:02:53ID:bEealcPTありがとうございます。
しかし、どういう用途に使うのか、よくわかりませんね・・
0129nobodyさん
2005/11/17(木) 14:18:08ID:???入力フォームの確認画面とかに使う
HTML_QuickFormにも同様のメソッドがあるよ
でもフォームであれこれしたいならFlexyで全部やるよりQFに任せたほうがいいと思う
0130nobodyさん
2005/11/17(木) 15:00:34ID:bEealcPTそかそか、なるほどー
QFの方は、使ったことあります。でもちょっと微妙〜な感じでした。
FlexyよりQFがいいと言われると、うーん、となりますねぇ。
0131nobodyさん
2005/11/17(木) 18:42:41ID:Z3PKuVv1ありますか?
0132nobodyさん
2005/11/17(木) 20:33:18ID:???0133nobodyさん
2005/11/18(金) 07:15:31ID:???HTMLの中に<? ?>を入れるのとどう違うのかがいまいち理解できない。
0134nobodyさん
2005/11/18(金) 07:21:59ID:???PHPで巨大なプログラムを書く是非については論じない。
0135nobodyさん
2005/11/18(金) 15:05:35ID:???>>133
配布してるスクリプトならshort_open_tagはOffでお願いします(;´Д`)人
0136nobodyさん
2005/11/19(土) 18:43:18ID:ZxbspkY2ほとんど使われていないのはどうして?
0137nobodyさん
2005/11/19(土) 18:57:11ID:ZxbspkY2http://capsctrl.que.jp/kdmsnr/wiki/bliki/?MovingAwayFromXslt
ここ読んだら、ちょっとわかった気がした・・
しかし、Rubyは海外での評価が上がってるなぁ。
0138nobodyさん
2005/11/19(土) 19:02:01ID:ZxbspkY20141nobodyさん
2005/11/24(木) 01:51:46ID:???0142nobodyさん
2005/11/24(木) 04:04:23ID:???スレ違い。今日は気分がいいから誘導。
【PHP】フレームワークについて語るスレ【総合】
http://pc8.2ch.net/test/read.cgi/php/1123608068/
0145nobodyさん
2005/11/25(金) 18:34:56ID:jDxpSmO4これ定説。
よって、Smartyの勝ち。
0146nobodyさん
2005/11/27(日) 14:44:01ID:???Flexy も日本人でがんばる人が出てくれば。
0147nobodyさん
2005/11/27(日) 14:48:26ID:???maple関連のエロイ人も使ってるのかな?Flexy。
ちょろっとマニュアル見たけど、良さそうだよね。
Smartyと違って、PEARコマンドでインストール、アップグレード
出来るの便利だし。
0148nobodyさん
2005/11/27(日) 19:31:54ID:???一応 Smarty も PEAR コマンドで管理できますよ。(Pearified: http://pearified.com/)
0150149
2005/11/27(日) 22:21:40ID:???Viewの部分、SmartyとFlexy両方使えるようにしようと思ってる。
やっぱこの二つが今HOTかなぁと思うし。Smartyは前からだけど。
0151nobodyさん
2005/12/02(金) 18:48:49ID:GbypoETyappend()関数みたいなのがあればいいのになー
{assign var="foo[bar]" value="hoge"}
{assign var="foo.bar" value="hoge"}
どっちもダメ
0152nobodyさん
2005/12/02(金) 18:52:18ID:???■ このスレッドは過去ログ倉庫に格納されています