【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/
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:???0153nobodyさん
2005/12/02(金) 19:10:32ID:GbypoETy0154nobodyさん
2005/12/02(金) 20:49:36ID:???compiler.assign.php 見たらびっくりするぐらい簡単。
適当にいじってcompiler.append.php とかってすれば?
0155151
2005/12/04(日) 14:03:53ID:Mar0sa+Pありがとうございました。
実体はreturn行だけなんですね。
assignをappendに置換したらそのまま。
わかってみればびっくりするぐらい簡単でした。
0156nobodyさん
2005/12/04(日) 16:57:43ID:Lg1lZNcA双方単体では使えるのですが、
<?php
require_once("/var/www/common/xxxx/MySmarty.class.php"); //smarty本についてたファイル
require_once("jpgraph-2/src/jpgraph.php");
require_once("jpgraph-2/src/jpgraph_radar.php");
echo "testdayo";
?>
という、実処理なしのスクリプト(EUC-JP)でもエラーが出てしまいます。
JpGraph Error
General PHP error : var : Deprecated. Please use the
public/private/protected modifiers
環境は、
fedora core 4
Apache/2.0.54 (Fedora)
PHP Version 5.0.4
JpGraph2.0rc2/1.19 ※両方でテストしてみた。双方単体では動く。
λ...タスケテ
0157nobodyさん
2005/12/04(日) 16:59:53ID:???0158156
2005/12/04(日) 17:05:43ID:Lg1lZNcAMySmarty.class.phpが悪かったみたい(?)。
Smarty.class.phpにしたらエラーでなかったです。
もちょっと頑張ってみます。
0159nobodyさん
2005/12/05(月) 03:30:22ID:???Flexy,Regex,Standardありますが、どのような違いがあるのでしょうか。
0160nobodyさん
2005/12/09(金) 00:22:02ID:???サイト構築に、mod_rewriteを使ってルートのPHPにパスを渡して
それぞれのページを表示させているのですが、
PHPのテンプレートエンジンの中に、各ページのHTMLファイルに
PHPスクリプトを書いたときに適用させられるようなエンジンはないでしょうか?
鮎川さんのテンプレートクラスを使ってみたのですができませんでした。
わかりにくいですね…
・mod_rewrite
(RewriteRule ^(([0-9A-Za-z\-\_\/]+)\.html)$ default.php?file=$1 [L])
・default.php?file=test/index.html (ルートのPHP)
・main.html (ページ全体のHTML テンプレートタグを使って書いてある)
・test/index.html (default.phpが呼び出しているファイル)
↑このなかに<?php ほにゃらら ?> のPHPスクリプトを書いて実行させたい
(´・ω・`)わかりますでしょうか… よろしくお願い致しますm(_ _)m
0161nobodyさん
2005/12/09(金) 00:22:35ID:8G0pq1Vaサイト構築に、mod_rewriteを使ってルートのPHPにパスを渡して
それぞれのページを表示させているのですが、
PHPのテンプレートエンジンの中に、各ページのHTMLファイルに
PHPスクリプトを書いたときに適用させられるようなエンジンはないでしょうか?
鮎川さんのテンプレートクラスを使ってみたのですができませんでした。
わかりにくいですね…
・mod_rewrite
(RewriteRule ^(([0-9A-Za-z\-\_\/]+)\.html)$ default.php?file=$1 [L])
・default.php?file=test/index.html (ルートのPHP)
・main.html (ページ全体のHTML テンプレートタグを使って書いてある)
・test/index.html (default.phpが呼び出しているファイル)
↑このなかに<?php ほにゃらら ?> のPHPスクリプトを書いて実行させたい
(´・ω・`)わかりますでしょうか… よろしくお願い致しますm(_ _)m
0162nobodyさん
2005/12/09(金) 00:23:13ID:8G0pq1Va0163nobodyさん
2005/12/09(金) 00:35:41ID:???Smartyの{php}があるが、そういうのはコントローラで処理して
テンプレートには結果だけ渡すのが普通じゃないかな
0164nobodyさん
2005/12/09(金) 02:20:36ID:8G0pq1Va感謝です。
これを機にsmarty入門いたします。
0165nobodyさん
2005/12/09(金) 12:25:36ID:???0166163
2005/12/09(金) 17:51:16ID:???「テンプレート内」じゃなく、「テンプレートに埋め込む文章内」の
PHPを適用させたいのです。
無理でしょうか?なにか代替案があれば教えてくださいm(_ _)m
0167nobodyさん
2005/12/09(金) 18:11:55ID:???パカじゃねーの?
0168nobodyさん
2005/12/09(金) 18:23:01ID:???すごい勘違いしてたようです。
なかったことに
0169nobodyさん
2005/12/13(火) 00:37:27ID:+LOMjCdo別々にすることはできますか?
0170nobodyさん
2005/12/13(火) 01:08:06ID:???間に変換するフィルタを噛ましてやれば可能。
半素人なデザイナーとか、どうしてもSJISじゃないと
と言い張ったりするから。
0171nobodyさん
2005/12/13(火) 02:18:33ID:???0172nobodyさん
2005/12/14(水) 21:38:32ID:???0173nobodyさん
2005/12/14(水) 21:53:11ID:???0174nobodyさん
2005/12/15(木) 00:54:10ID:Ehe3PQsAsmartyじゃ駄目なの?
0175nobodyさん
2005/12/15(木) 12:08:28ID:???探せばあるよ、ガソバレ!
0176nobodyさん
2005/12/17(土) 20:01:40ID:???0177nobodyさん
2005/12/18(日) 10:40:41ID:???0178nobodyさん
2005/12/18(日) 11:43:26ID:???0179nobodyさん
2005/12/18(日) 12:06:49ID:???0180nobodyさん
2005/12/18(日) 15:38:25ID:???step=$var*2+1
等の式を指定したら変になる。
そのくらいうまいこと処理しろや!BOKENASU!
0181nobodyさん
2005/12/18(日) 21:51:49ID:???マジレスしとくと、
そんなことしなければ実現できない設計をした誰かが悪い。
テンプレートエンジンの第一目的は HTML とプログラムの分離なんだから。
綺麗に分離できる設計&プログラミングが要求される、と思う。
ツールを使いこなすには技術がいる。
0182nobodyさん
2005/12/19(月) 03:51:38ID:???10万以上のファイル書き出ししてます)が激しく思くなって
きていて、PHPオーバヘッドになっているのは確認したので、
何らかの対処をしようと思っています。
で、一度eAcceleratorとかと組み合わせて使ってみようかなぁと
思っているのですが、Smarty+eAcceleratorで動かしている方
いますか?
■ このスレッドは過去ログ倉庫に格納されています