[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 06/08 11:25 / Filesize : 245 KB / Number-of Response : 924
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【PHP】 Smarty 隔離スレ 【テンプレート】



1 名前:nobodyさん [2008/02/02(土) 00:21:09 ID:6cKcKeTp]
まぬあるwww.smarty.net/manual/ja/

643 名前:nobodyさん mailto:sage [2009/08/26(水) 12:19:29 ID:???]
キャッシュしてできたファイルの中にSmartyタグって入れられないよね?

検索フォームがあったとして
<input name="keyword" type="text" value="{$smarty.post.keyword}">

として検索後にデフォルト値を入れてるんだけど、
キャッシュしたらこういう事が出来ないと思って。

644 名前:nobodyさん mailto:sage [2009/08/26(水) 13:37:23 ID:???]
>>643
insertタグで出来るんじゃね?

あと検索結果画面だと思うけど、それってキャッシュするべきじゃなくね?w
するにしてもSmarty側でするもんじゃないと思う。

645 名前:nobodyさん mailto:sage [2009/08/26(水) 14:37:50 ID:???]
そのキーワード毎にキャッシュしたいのならば、それをキャッシュIDにすれば。

646 名前:nobodyさん mailto:sage [2009/08/26(水) 23:01:41 ID:???]
>>644-645
ページのサイドバーをキャッシュしているんだが、
その箇所に検索フォームやログインフォームが入っているんだよ。
確かにキャッシュするべきじゃないが、
部分毎にわかるとキャッシュする意味がないかな?とも思ったり。

やっぱり、設計に問題あるかも・・。

647 名前:nobodyさん [2009/08/28(金) 14:54:05 ID:45fY5t7E]
サイドバーの質問が出てるので聞きます
dbの返り値次第でサイドバーのデザインが数パターンに変わる場合、smartyのif文で書き分けするしかないのかな?
正直{if}に限らず醜いんで多用したくないんですよね…

部分的にデザインパターンを読み込むなど、他の解決方法はないですか?

648 名前:nobodyさん mailto:sage [2009/08/28(金) 15:03:05 ID:???]
コントローラ側で制御すれば?

649 名前:nobodyさん mailto:sage [2009/08/28(金) 15:25:18 ID:???]
テンプレートを数パターン用意すれば?

650 名前:nobodyさん [2009/08/28(金) 16:29:28 ID:45fY5t7E]
>>648−648
そうですね、それがいいですね
ありがとうございました

651 名前:nobodyさん [2009/08/28(金) 16:30:15 ID:45fY5t7E]
>>648-649でした
ありがとう



652 名前:nobodyさん [2009/08/28(金) 17:53:20 ID:MIAE9vSw]
Smartyテンプレif文条件式で、自作のSmartyプラグイン関数を
呼び出すことはできないのでしょうか?



653 名前:nobodyさん mailto:sage [2009/08/28(金) 19:07:18 ID:???]
できるんじゃね?

654 名前:nobodyさん [2009/09/02(水) 05:34:35 ID:55UeyG/q]
{assign}の中で、修飾子プラグインをvalueにもたせることできますか?

{assign var=uType value=$resultAry.uType|NumToText} みたいなことをしたいんですが
試してみてもタグがモロ出しになって修飾子が実行されてないようです。
仕様でしょうか?
書き方が変だとしたら、対処法を教えてください。よろしくお願いします。

655 名前:nobodyさん mailto:sage [2009/09/02(水) 09:19:59 ID:???]
タグがモロ出し の意味がわからない。

656 名前:nobodyさん mailto:sage [2009/09/02(水) 09:35:13 ID:???]
>>654
capture

657 名前:nobodyさん mailto:sage [2009/09/03(木) 08:24:48 ID:???]
>>655,656
ありがとうございました

658 名前:nobodyさん mailto:sage [2009/09/06(日) 21:25:22 ID:???]
負荷テストで調べたんだが、キャッシュって結構効いてるな
1000アクセスある場合を想定してテストしたんだが、
約10〜15%ほどページの読み込みが早かった

659 名前:nobodyさん mailto:sage [2009/09/07(月) 08:07:01 ID:???]
なにをいまさら・・

660 名前:nobodyさん mailto:sage [2009/09/07(月) 22:10:32 ID:???]
>>659
まあ、実感するのはなかなか難しいからな。

661 名前:nobodyさん [2009/09/07(月) 23:17:57 ID:K7GASBY+]
二次元配列を出力しようとすると、
Warning: htmlspecialchars() expects parameter 1 to be string, array given in パス modifier.escape.php on line 26
というエラーが出ます。
調べたところ、色々なサイトで同じ問題を扱ってるのを見つけました。
questionbox.jp.msn.com/qa4209668.html
pcmemorogu.blog14.fc2.com/blog-entry-20.html など

が、これらでの答えの通り、FOREACHする配列全てに $ary|smarty:nodefaults としてみたんですが
まだ完全に上記のエラーが消えません。
他にどんな可能性があるでしょうか?
配列だけでなく、通常のassignされた変数に対しても文字列でなければセットすべきなのでしょうか?
とりあえずやっていますが、変化がありません



662 名前:nobodyさん mailto:sage [2009/09/07(月) 23:25:11 ID:???]
アウトプットフィルタにhtmlspecialcharsが指定されてるんじゃないの?

つか二次元配列を出力しなければならない例が思いつかないけど

663 名前:nobodyさん [2009/09/07(月) 23:49:42 ID:K7GASBY+]
>>662
ありがとうございます
すいません、お礼書きつつ修正重ねてたら上手くいきました
foreachやsectionの中の配列だけでなく、ifの条件節部分でも配列に対しては|smarty:nodefaultsする必要があったようです。

if($testAry|count >0) を
if($testAry||smarty:nodefaults|count >0) にしたら治りました

お騒がせしました。ありがとうございました

664 名前:nobodyさん mailto:sage [2009/09/08(火) 00:19:32 ID:???]
modifier.escape.phpを修正する方が早いよ

665 名前:nobodyさん [2009/09/08(火) 00:25:48 ID:qSoCHGpf]
>>664さんはそうしてますか?
どう修正したらいいのやら、、と、調べたらありました。

blog.asial.co.jp/309
-----
# function smarty_modifier_escape($string, $esc_type = 'html', $char_set = 'ISO-8859-1')
# {
# // 配列が渡ってきたら何もせずにreturn
# if (is_array($string)) return $string;
# switch ($esc_type) {
# case 'html':

たしかにこれでよさそう。
664さんが別の方法で対応してるなら教えてもらえると嬉しいです。比べつつ勉強したいので。
自分で弄る自信はまだないんですよね、知らないところで悪影響でそうで…

666 名前:nobodyさん mailto:sage [2009/09/08(火) 00:43:09 ID:???]
>>665
if (is_array($string)) return $string; 
で運用してるけど特に問題は無いよ。
配列が来た場合は、全ての要素を再帰的に処理するとかも試したけど、何か不都合があって止めた記憶・・・。

plugins_fix ディレクトリを作り、modifier.escape.php をコピーして修正を施す。
$smarty->plugins_dirの先頭にplugins_fixディレクトリを追加する。
って方法で修正を当てている。
default_modifiers使うと{debug}にも影響が出るから、同様に修正を当てたファイルをplugins_fixディレクトリに置いてる。

667 名前:nobodyさん [2009/09/08(火) 00:47:00 ID:qSoCHGpf]
>>666
詳しい説明ほんとにありがとうございました
debugってまだやったことないのでそっちはわからないですが、参考にさせてもらいます
ありがとうございました。

668 名前:nobodyさん mailto:sage [2009/09/20(日) 18:33:32 ID:???]
だれか公式以外でsmartyダウンロードできるところ知らない?
クソ公式落ちまくっててDLできないんだけど
www.smarty.net/
だれかソースくらいは分散しとけって忠告してやれよ

669 名前:nobodyさん mailto:sage [2009/09/20(日) 18:55:26 ID:???]
落とせるじゃん

670 名前:nobodyさん mailto:sage [2009/09/20(日) 19:52:57 ID:???]
復旧した

671 名前:nobodyさん mailto:sage [2009/09/24(木) 18:00:24 ID:???]
初心者なのであまり良く分からないのですが、テンプレートエンジンはSmarty以外に別のテンプレートも同時使用出来るのでしょうか?
JavaScriptのライブラリのように互いに干渉してしまったりするのでしょうか?

また、調べてみると、何かテンプレートを扱う為にはPHPを学んでいても1〜数週間は馴れるまでかかると書いてありました
ですのでまず最初に一つテンプレートを使用してみようと思っているのですが、やはりSmartyが一番良いのでしょうか?



672 名前:nobodyさん mailto:sage [2009/09/24(木) 18:07:40 ID:???]
まずテンプレート抜きでPHPを身に付けたほうがいいかと

673 名前:nobodyさん mailto:sage [2009/09/25(金) 14:31:20 ID:???]
SmartyってPHP習得した後にやろうとするとハッキリ言って困惑するよな
何だコレ?って感じ
今までPHP学習してきたのってあんま意味無いじゃんって思ったよ
例えばforeachとかさ
HTML?っても最初思った



674 名前:nobodyさん mailto:sage [2009/09/25(金) 14:34:03 ID:???]
PHP習得した後にやらないでいつやるんだよ

675 名前:nobodyさん mailto:sage [2009/09/25(金) 15:24:47 ID:???]
誰もが通る道さ・・・
それを不毛と感じるか、テンプレートエンジンの利点に気がつけるかでPGとしての資質がわかる。

676 名前:nobodyさん mailto:sage [2009/09/25(金) 15:39:52 ID:???]
いや普通につくればphpのforeachもsmartyのforeachも必要だろ。


677 名前:nobodyさん mailto:sage [2009/09/25(金) 21:46:51 ID:???]
そういう事言ってるんじゃないだろ。

678 名前:nobodyさん mailto:sage [2009/09/25(金) 21:47:21 ID:???]
じゃどういうことよ

679 名前:nobodyさん mailto:sage [2009/09/25(金) 22:57:18 ID:???]
同じforeachでも書き方が違って、最初戸惑うってことだろ?

680 名前:nobodyさん mailto:sage [2009/09/25(金) 22:59:20 ID:???]
えっ

681 名前:nobodyさん mailto:sage [2009/09/25(金) 23:47:30 ID:???]
ちゅう



682 名前:nobodyさん mailto:sage [2009/09/26(土) 02:10:40 ID:???]
Smarty 3 is almost here!
[24-Sep-2009] Yes, yes I know. The Smarty 3 beta is taking much longer than expected, but we wanted to be sure we had everything right.
Our preliminary performance tests are already showing us very promising speed improvements over Smarty 2 (2-5x on average), and we're not done! To recap,
Smarty 3 is a 100% rewrite from the ground up, and it is PHP 5 only. We will be getting a feature list up with the Beta, but let me give a quick summary:

683 名前:nobodyさん mailto:sage [2009/09/26(土) 04:04:41 ID:???]
早くなるのはいいな。でも、100%書き直したとなると、いろいろ仕様変わってるのかな。

684 名前:nobodyさん mailto:sage [2009/09/26(土) 09:50:48 ID:???]
100パー書き直したのと、仕様が変わるかどうかは直結しない話でしょう。
むしろ直結するのはバグ率。

685 名前:nobodyさん mailto:sage [2009/09/26(土) 15:22:15 ID:???]
3触ったけどまだ重くて使い物にならないよ。パーサがまともになったせいだろうけど、レンダリングがかなり遅い。
まだかなりバギーだし仕様も固まり切ってないみたいだし、正式リリースは来年末くらいじゃね。

686 名前:nobodyさん mailto:sage [2009/09/28(月) 02:57:25 ID:???]
>>684
直結はしないがPHP周辺ではよくある話だな。
関数を修正してみたら引数の書き方が変わったでござるの巻

687 名前:nobodyさん mailto:sage [2009/09/28(月) 17:38:33 ID:???]
Smarty以外で他にいいテンプレートって何?

688 名前:nobodyさん mailto:sage [2009/09/28(月) 19:12:27 ID:???]
>>687
ttp://www.mimoi.com/product/53

689 名前:nobodyさん mailto:sage [2009/09/29(火) 19:25:53 ID:???]
一応技術板なんだしせめてこのぐらいは・・・
www.j-tsugawa.com/jt-020621-EB3101-G.jpg

690 名前:nobodyさん mailto:sage [2009/09/29(火) 19:36:34 ID:???]
プラスチックが乾いてて、持ち上げようとしただけで割れてしまいそうだ・・・

691 名前:nobodyさん mailto:sage [2009/10/01(木) 12:03:22 ID:???]
流れ図記号は全部○を使っているのは俺だけだろうか。



692 名前:nobodyさん [2009/10/01(木) 18:28:48 ID:KASc2bqu]
//PHP側
$list[0]["text"] = '{ImageBox file="test.jpg"}';

//テンプレート側
{foreach from=$list item="data"}
{$data.text}
{/foreach}

独自関数「ImageBox」で指定したファイルが表示されるようにしたいと思い、
配列をforeachで出力させようとしました。
しかし、{ImageBox}の箇所が変換されずにそのまま文字として出力されます。

指定方法が間違っているのでしょうか?
わかりづらいかと思いますが、アドバイスいただければ助かります。

693 名前:nobodyさん mailto:sage [2009/10/01(木) 20:50:56 ID:???]
PHP側では展開されません。

694 名前:nobodyさん mailto:sage [2009/10/01(木) 21:02:54 ID:???]
そりゃ$list[0]["text"]の内容を書き出してるだけだからな。

phpなら可変関数使うところだが
Smartyはプラグインで可変関数の実装を作らないとダメかも。

695 名前:692 mailto:sage [2009/10/02(金) 00:20:33 ID:???]
>>694
foreachで出力される時に、
変数内のSmarty関数も変換されると思ったのですが、
どうやら違うみたいなんですね・・。

プラグインで実装させるとか、難しそうだ・・・

696 名前:nobodyさん mailto:sage [2009/10/02(金) 00:35:40 ID:???]
そのImageBOXで出力されるものを$out_ImageBOXとか変数に入れ込んでおけば?

697 名前:柏アラフォーパパン& ◆.d6LNJ2fbM.9 [2009/10/02(金) 15:06:34 ID:bCUcRsfE]
dsd

698 名前:nobodyさん mailto:sage [2009/10/03(土) 17:55:56 ID:???]
文字列をテンプレート処理出来るメソッドでも作ればいいんじゃないかね。
$list[0]["text"] = $smarty->fetchFromString('{ImageBox file="test.jpg"}');

699 名前:nobodyさん mailto:sage [2009/10/03(土) 17:57:12 ID:???]
$list[0]["text"] = 'test.jp';

{foreach from=$list item="data"}
{ImageBox file=`$data.text`}
{/foreach}

じゃ駄目なのか?

700 名前:nobodyさん mailto:sage [2009/10/03(土) 18:51:58 ID:???]
よほど特殊な処理をさせたいのでなければ>>699に落ち着くと思う。
まあそういうのはやはりPHPでやるべきだろうな。
smartyは最終出力だけにしておこう。


701 名前:692 mailto:sage [2009/10/04(日) 00:06:35 ID:???]
>>699-700
その方法だと$listに必ず「ImageBox」が無いと駄目です。
ブログみたいに他のタグも挿入したい場合使えないので、
変数(というか配列に入れた値)に、Smartyタグを入れる事を思いつきました。

それで698さんが掻かれているようなプラグインを作って
一旦Smartyタグを処理させてから配列に入れれば、
foreachで出力しても表示されます。
しかし、当然ながらコンパイルファイルが作成されるので
その分ページの生成に時間がかかることになってしまいました・・。
(キャッシュを使えば良いだけですが、なんか気になりました



702 名前:692 mailto:sage [2009/10/04(日) 00:08:43 ID:???]
ちなみに以下のサイトを参考にしました。
ttp://d.hatena.ne.jp/lapis25/20080908/1220861488

>>698さんのソースを頼りに検索したらヒットしました。
凄く参考になりました。ありがとうございます。


703 名前:nobodyさん [2009/10/11(日) 13:15:33 ID:gYB28ahJ]
すみません、質問です
smartyで{if}の中で出力したりすると、このsmartyタグのせいで発生した改行やらスペースやらが
HTMLにもモロに出てしまって美しくありません
どうにかする方法ないでしょうか?

704 名前:nobodyさん mailto:sage [2009/10/11(日) 14:25:24 ID:???]
{strip}{/strip}
で囲うべし。

705 名前:nobodyさん mailto:sage [2009/10/11(日) 15:23:00 ID:???]
>>704
かっこわるいです。次の方お願いします。

706 名前:nobodyさん mailto:sage [2009/10/11(日) 15:43:55 ID:???]
反論ではないけど、
おれはHTMLの頭から終わりまでstripで囲ってるよ。
改行、空白によるブラウザの変なバグにも遭遇しないし、
何より若干ではあるものの軽くなる。
かっこいいかどうかで言えば、おれは改行なしのほうがかっこいいと思う。

707 名前:nobodyさん mailto:sage [2009/10/11(日) 16:11:57 ID:???]
意図した改行を入れたい場合はどうしてるん?
<textarea>の中身とか

708 名前:nobodyさん mailto:sage [2009/10/11(日) 17:59:26 ID:???]
>>704
おおー、そうだそれがありました
ありがとうございました

>>707
<textarea><$hoge|nl2br></textarea>じゃ対処できないもの?

709 名前:nobodyさん mailto:sage [2009/10/11(日) 18:22:54 ID:???]
改行を残したい箇所を
逆にliteralで囲う。

710 名前:nobodyさん mailto:sage [2009/10/12(月) 00:52:20 ID:???]
JavaScriptとか、改行に意味を持つ言語が混在する可能性を考えると一括して{strip}するのは得策じゃない気がする。

711 名前:nobodyさん mailto:sage [2009/10/13(火) 01:13:00 ID:???]
>>703
そこまで気にするなら
{if}
{assign var="hoge"}
{else}
{assign var="hoge"}
{/if}
<textarea>
{$hoge}
</textarea>



712 名前:nobodyさん [2009/10/13(火) 23:52:48 ID:B+0jNtpm]
Smarty3期待アゲ

713 名前:nobodyさん [2009/10/14(水) 00:10:46 ID:k/3ZY/k4]
質問です。

↓の、アンパサンドって何の意味があるのでしょうか?

$smarty =& new Smarty;




714 名前:nobodyさん mailto:sage [2009/10/14(水) 00:27:06 ID:???]
参照代入

715 名前:nobodyさん mailto:sage [2009/10/14(水) 00:36:04 ID:???]
>>713
ないよ。

PHP4でも5でもnewはリファレンスを返すんだけど、
PHP5でそれが明言されるまではnewを=するとnewなオブジェクトがコピーされるという迷信があった。
だから=&と書いてるところがたまにあるけど、Smartyマニュアルでも普通に=だ。
要するに、単なる誤解が生んだもの。

716 名前:nobodyさん mailto:sage [2009/10/14(水) 00:47:30 ID:???]
>>715
ほんとに? 俺も参照代入だよって説明どこかで読んだなぁ
あの解説ウソついたのかしら?

717 名前:nobodyさん mailto:sage [2009/10/14(水) 01:06:18 ID:???]
4なら意味あると思うが

718 名前:nobodyさん mailto:sage [2009/10/14(水) 01:30:24 ID:???]
>>715
つ ttp://jp2.php.net/manual/ja/language.oop.newref.php
どこでそんな嘘をきいたん?

ちなみに5でも代入で変数のコピーが行われるのは同じ。
違うのはオブジェクトのコピー時の内部動作がハッシュテーブルの複製から
オブジェクトの実体の参照カウンタ操作になっている点。(zvalの参照カウンタとは別ね)

719 名前:nobodyさん mailto:sage [2009/10/14(水) 03:14:45 ID:???]
ちょっとコード書いて実験すればわかるだろ
俺面倒だからパスね

720 名前:nobodyさん mailto:sage [2009/10/15(木) 18:15:01 ID:???]
みんなこんな曖昧なままに済ましてきたってことはあまり使ってない機能ってことかな
俺も使った覚えないわ、マニュアル本にも例なんてないし。損してるんだろうか。。

721 名前:nobodyさん mailto:sage [2009/10/16(金) 11:58:47 ID:???]
オブジェクトのリファレンスか。
使い道が思いつかんでもないが実際に
使う場面ってそうそうなさそうな。




722 名前:nobodyさん mailto:sage [2009/10/20(火) 06:10:16 ID:???]
Smarty 3だれか使ってみた??

723 名前:nobodyさん mailto:sage [2009/10/20(火) 10:43:32 ID:???]
使ってみた

724 名前:nobodyさん mailto:sage [2009/10/21(水) 00:53:52 ID:???]
Smarty3微妙だなぁ・・・相変わらず癖の強いコーディングで読むの疲れる。
extendリソースがあるんだけど、使い方解る人いる?

725 名前:nobodyさん mailto:sage [2009/10/21(水) 10:25:55 ID:???]
結局Smartyなんてassign、display、{if}、{foreach}だけで十分じゃん
というかコレが核だと思う
後は必要に応じて・・・って感じで十分だし

726 名前:nobodyさん mailto:sage [2009/10/21(水) 10:59:25 ID:???]
Smarty3のプラグインは何故グローバル関数なんだろ?
どこら変がPHP5 OOPなんだよ

727 名前:nobodyさん mailto:sage [2009/10/21(水) 22:34:20 ID:???]
プロパティもメソッドも全部publicは鬼だ
一方、__callでメソッドの外部化をしてる

extendリソースってどれ??

728 名前:nobodyさん mailto:sage [2009/10/22(木) 01:31:12 ID:???]
>>727
sysplugins/internal.resource_extend.php
ソースコメント読む限りでは他テンプレートエンジンのextendっぽいんだけど、
リソースとして定義されてるので、どう使っていいかよくわからんw

getTemplateSource()読むと、超強引にblockタグとか置換してるみたいなのであまり有用ではなさそうだけど・・・('A`;
2から乗り換える利点がまだ見えないなぁ

729 名前:nobodyさん mailto:sage [2009/10/22(木) 11:33:30 ID:???]
>>725
そんなこといったらPHPだって

730 名前:nobodyさん mailto:sage [2009/10/24(土) 20:08:39 ID:???]
smarty使ってるレンタルブログサイトとかないの?

731 名前:nobodyさん mailto:sage [2009/10/25(日) 04:49:32 ID:???]
>>730
あるとしてもユーザにSmartyフォーマットでのカスタマイズを許可するとは考えにくいな。



732 名前:nobodyさん mailto:sage [2009/10/25(日) 08:28:37 ID:???]
>>730
別にsmartyに限らず、独自の記法などで対応してるところはある。
Smartyじゃないとダメなら自分で作ればいいジャマイカ。

733 名前:nobodyさん mailto:sage [2009/10/27(火) 00:14:32 ID:???]
中身はsmartyだけど、smartyフォーマットは使わせないようにして
<%hogehogeLoop>と書いたら{section name=hoge loop=$id} になるように置換してるブログシステムはあるかもしれない
大体は自前でやってるか、MovableTypeの改造版じゃないかな

734 名前:nobodyさん mailto:sage [2009/10/27(火) 12:20:20 ID:???]
>>725
それだけしか使わないならもっと速いテンプレートエンジンあるんじゃない?

735 名前:nobodyさん mailto:sage [2009/10/27(火) 12:23:42 ID:???]
>>734
それなんてPHP?

736 名前:nobodyさん mailto:sage [2009/10/27(火) 20:55:46 ID:???]
カラーミーショップ プロ
ttp://shop-pro.jp/

ブログじゃなくてネットショップだけど、テンプレートにsmarty使ってるね
EC CUBEの改造版なんだろうけど

737 名前:nobodyさん mailto:sage [2009/10/27(火) 21:04:25 ID:???]
Smartyでレンタルブログ運営したら重くてしかたないんじゃない?
ユーザー大量にいたらキャッシュ効かせても厳しい気がする

738 名前:nobodyさん mailto:sage [2009/10/28(水) 05:06:51 ID:???]
それは設計の問題であり、Smatyが原因にはなり得ない。

739 名前:nobodyさん mailto:sage [2009/10/28(水) 11:11:33 ID:???]
Smartyの設計の問題ってことですね

740 名前:nobodyさん mailto:sage [2009/10/28(水) 13:46:19 ID:???]
おしい。Smartyを使う人の設計の問題。

741 名前:nobodyさん mailto:sage [2009/10/28(水) 15:26:33 ID:???]
>>737
気のせい



742 名前:nobodyさん mailto:sage [2009/10/29(木) 11:06:44 ID:???]
いい話題がありませんねー

743 名前:nobodyさん mailto:sage [2009/10/29(木) 21:54:28 ID:???]
gooブログの有料版の説明のとこにこんな記述がある
{include file="/home/gooblog/Smarty/blog/templates/comment_link.tpl"}

パスにSmarty入ってますがな

744 名前:nobodyさん mailto:sage [2009/10/30(金) 22:56:36 ID:???]
実際にロジックとテンプレート合わせないとテンプレート側の文法の間違い分からないの?

745 名前:nobodyさん [2009/11/01(日) 07:20:38 ID:ZF01kyEW]
Smarty 3.0 Beta 1 Released

746 名前:nobodyさん mailto:sage [2009/11/01(日) 10:57:23 ID:???]
>>744
確かにできないな
まあ元々プログラマーと別環境で作業すること自体難しい気はするが。
>>745
モノリンガルの俺には厳しいようだ

747 名前:nobodyさん mailto:sage [2009/11/01(日) 11:05:45 ID:???]
>>745
突撃してみるか

748 名前:nobodyさん [2009/11/09(月) 13:54:09 ID:jgJG5jOb]
テンプレートに定義していないコード(例えば{test}など)がある場合、
Smarty errorが表示されます。

このエラーを表示しない方法はないのでしょうか?
PHPのエラー表示をしない事で対処するしかないのでしょうか?

749 名前:nobodyさん mailto:sage [2009/11/09(月) 14:06:20 ID:???]
trigger_errorしてるところをスキップしちゃえば?

750 名前:nobodyさん [2009/11/09(月) 20:59:58 ID:I33d9sv+]
$error_reporting
↑これ?

751 名前:nobodyさん [2009/11/11(水) 19:01:43 ID:0BFUpwQj]
Smartyって、テンプレートの中にテンプレートを読み込むようなことできる?
ある変数の値によって、特定の領域の内容をかなりダイナミックにレイアウトごと変更させたいんだけど
変化のバリエーションがかなり多いんで{if}でパターン分け記述するのはあまり現実的じゃないんだよね

外部でhtmlとして整形したものを丸ごとコントローラでassignさせて飲み込ませるしかないかな?



752 名前:nobodyさん mailto:sage [2009/11/12(木) 03:03:02 ID:???]
そのレベルも調べられないお前には無理だ。

753 名前:nobodyさん [2009/11/12(木) 07:44:56 ID:dv0ticwo]
Smarty 3.0 Beta 2 Released

754 名前:nobodyさん mailto:sage [2009/11/12(木) 11:31:04 ID:???]
>>752
おー、サンキューサンキュー♪
includeって機能があったんだね、この辺から調べてみるよ
たすかったわほんと、ありがとね

755 名前:nobodyさん mailto:sage [2009/11/12(木) 12:04:54 ID:???]
test

756 名前:754 [2009/11/12(木) 19:22:51 ID:SoSJwGM8]
ごめん、相談させて欲しい
hoge.tplに
{insert name="hogeAction" title="テスト" script="hoge_action.inc.php"}
って書いて、
同じディレクトリにあるhoge_action.inc.php に
<?php
function smarty_hogeAction($param, $smarty){
return 'あいうえお';
}
?>
って書いたんだけど「あいうえお」の出力がされない。
($param, $smarty)の引数を消して function smarty_hogeAction(){… とやってもダメだ。
何が問題かな? ご意見よろしくお願いします

757 名前:nobodyさん mailto:sage [2009/11/12(木) 19:58:44 ID:???]
書き間違えた
× smarty_hogeAction
○ insert_hogeAction
でやってます

758 名前:756 mailto:sage [2009/11/12(木) 22:52:47 ID:???]
どうも、自己解決しました。
お騒がせしました

759 名前:nobodyさん mailto:sage [2009/11/13(金) 13:18:08 ID:???]
どういう解決方法?

760 名前:756 mailto:sage [2009/11/13(金) 14:36:48 ID:???]
勘違いしてたというか参考にしてたページがわかりにくかったというか、
要するに
.tplでの記述は {insert name="hogeAction"}
スクリプトファイルは insert.hogeAction.php
ファイルの格納場所は /pluginsディレクトリ
として入れてりゃ良いだけの話だった。自前modifierとかわらんかった。
insertタグのscript属性とかなくても良いものを必須みたいに書いてたり、
関数名(function insert_hogeAction(-,-){-})を嘘書いてるサイトみて
変なことやりまくってたよ。恥。

761 名前:nobodyさん mailto:sage [2009/11/13(金) 14:58:34 ID:???]
公式マニュアル見ればよかったのにね



762 名前:756 mailto:sage [2009/11/13(金) 15:11:57 ID:???]
>>761
うん、公式がイマイチわからなくて他のサイトみてたらハマっちゃって。
今また公式見返してるけどやっぱりよくわからない
www.smarty.net/manual/ja/language.function.insert.php
「{insert} 関数の名前は、 ネームスペースの衝突を避けるために "insert_" によって始まる必要があります。」
ってあるけど、それじゃ上手くいかなくて
smarty_insert_hogeAction() って形でやっと上手くいったからなぁ…

こっちの方が公式よりわかりやすかった、俺が物わかり悪いんだろうけど
www.y2sunlight.com/ground/?PHP5.0%2F8.Smarty%A4%F2%CD%FD%B2%F2%A4%B9%A4%EB

763 名前:nobodyさん mailto:sage [2009/11/13(金) 15:22:56 ID:???]
そりゃプラグインとしてファイルを自動読み込みさせてるからだ
www.smarty.net/manual/ja/plugins.naming.conventions.php
>PHP ファイル内で定義する プラグイン関数 は次のように指定します。
>smarty_type_name()


764 名前:756 mailto:sage [2009/11/13(金) 16:02:41 ID:???]
>>763
そうなの。おおお、疑問の本質に近づいてきた、質問させて。
じゃあsmarty_insert_xxx じゃなくて insert_xxx()ってのはプラグイン(別ファイル自動読み込み)じゃないのか。
そもそもinsert_xxx()ってどこに書くの?
$smarty->assign("msg","hello"); みたいな処理を書いてるコントローラ?の.php?
それがわからなくてあっちこっち見る迷走がスタートしたんだ

765 名前:nobodyさん mailto:sage [2009/11/13(金) 16:19:30 ID:???]
偉そうなので教えん

766 名前:nobodyさん mailto:sage [2009/11/13(金) 20:01:32 ID:???]
自分で試せばいいのに。

767 名前:nobodyさん mailto:sage [2009/11/14(土) 14:51:09 ID:???]
キャッシュ効かせても速度あんまり変わらなくね?なんなのこれ

768 名前:nobodyさん mailto:sage [2009/11/14(土) 19:37:58 ID:???]
下記のように、フォームでエラーがあればp要素を表示、なければ何も表示しない場合、
みなさんは、どこまで、どんな方法でテンプレートを利用していますか?
<p class="error">※必須項目です。記入してください。</p>
<p><input type="text" name="mail" value=""></p>

1. エラーメッセージは最初からpでマークアップ済み、そのままassign、smartyには{}のみ
{$errors.mail}

2. エラーメッセージはテキスト、assign時に空欄かどうか判定してpでマークアップ、smartyには{}のみ
{$errors.mail}

3. $errorsにはテキスト、そのままassign、smartyで{if}処理
{if $errors.mail}<p class="error">{$errors.mail}</p>{/if}

4. $errorsにはテキスト、そのままassign、smartyで関数処理
{$errors.mail|markupFunction}

デザイナさんと分業する場合、
プログラム側がマークアップに関わらない3.が一番いい気がしているのですが、
少しテンプレートファイルが煩雑になるのが気になったりもします。

エラーメッセージマークアップ用の小さなテンプレートファイルを作っておいて、
4.のmarkupFunctionから読み出して利用すると比較的キレイな気もしますが、
テンプレートファイルが小分けになるのも煩雑といえば煩雑な気もします。

769 名前:nobodyさん mailto:sage [2009/11/15(日) 03:44:59 ID:???]
>>767
Apacheの連続アクセステストしたけど、アクセス回数が多ければ多いほど
キャッシュの効果は効いたよ。ただし、1.2〜3倍速くなる程度だけど。
>>768
ブログのテンプレみたいなのを作ってるが、3が一番良いよ。
MTなんかもそうだし。

770 名前:nobodyさん mailto:sage [2009/11/15(日) 07:22:36 ID:???]
自分はクラスだけでやってる。

エラーは常に埋め込まれ、CSSで非表示にしておく。もしエラーなら親要素にerrorというクラスを与えて、その子要素のエラーを表示するCSSを書いておく。

div p{ display:none }
div.error p{ display:block }

これでエラー時のテキストもデザイナー側で書ける。

親要素は
<div class='{$error.title}'>
って感じで、タイトル項目がエラーなら error.title に 'error' を assign しておくだけ。

771 名前:潔癖プログラマ mailto:sage [2009/11/15(日) 10:24:50 ID:???]
>>769
やはり3.ですか。

ただその場合
$errors.mailに値があればいいんですけど、
値がなくifがfalseになると、その行末の改行が無視されて
次の行のインデントが崩れちゃうのが気になります。
{/if}のあとに空白1文字入れとくと回避できますが、
「よろしくないテクニック」っぽくて好きになれません。
>>703でも話題にでていたようですが、
このsmartyの仕様は気に入りません(苦笑)。

{if $errors.mail}
    <p class="error">{$errors.mail}</p>
{/if}

こんな感じで3行使うのがいまのところ最善か。
テンプレートファイルがますます煩雑に…(苦笑)。


>>770
CSSのdisplayだけで制御するのは、
自分も一瞬頭をよぎったことはありますが、
やはり気持ちが悪いですごめんなさい。

あとエラー時のテキストが「入力内容をご確認ください」程度ならいいけど、
「メールアドレスが正しくありません」
「必須入力項目です」
「文字数が多すぎます」
とか丁寧に表示してあげる場合に対応しにくい気がします。



772 名前:nobodyさん mailto:sage [2009/11/15(日) 21:24:49 ID:???]
>>770
CSS切っている環境とか携帯対応を考えた場合は向かない仕様だな

773 名前:nobodyさん mailto:sage [2009/11/15(日) 22:48:09 ID:???]
んなもん、{$err} にしといて、
errに <p class="error">エラーメッセージ</p> ぶち込みだわ。

774 名前:nobodyさん mailto:sage [2009/11/16(月) 00:55:30 ID:???]
>>768
汎用性やら考えると3じゃないかな。
他の方法だと、特定箇所だけ見た目を変えたい時にデザイナ側で対応しにくい気がする。
テンプレートを関数もどきとして使うような方法もありかもしれない。

// エラー表示箇所
{include file="error.tpl" error=$errors.mail}

// エラー表示テンプレート error.tpl
{if $error}
<p class="error">{$error}</p>
{/if}

775 名前:潔癖プログラマ mailto:sage [2009/11/16(月) 09:18:08 ID:???]
>>774
なるほど。4.の別解のような感じですが、
それだとincludeするテンプレファイルまでデザイナさんに任せられるので、
複数パターンのテンプレファイルが用意できたり汎用性が高そうですね。

図らずも(?)、{if}による改行問題も、
別ファイルに追い出すことで解決できてるし、
なかなか良いかもしれません。

776 名前:nobodyさん [2009/11/16(月) 12:51:37 ID:tubifOLG]
Smartyは遅いって意見ありますが、体感レベルで明らかに遅いですか?
1秒2秒遅くなった経験がある人いるんでしょうか?

777 名前:nobodyさん mailto:sage [2009/11/16(月) 23:39:48 ID:???]
そんなに遅くないよ。
「遅い」って感じるのは鯖が悪いんだろ

778 名前:nobodyさん mailto:sage [2009/11/17(火) 02:12:17 ID:???]
>>776
古いサーバPC上でキャッシュを無効にして使っても、0.001秒の処理が0.002秒になる程度。
数値的には2倍だが、体感的にはまずわからない。

素のPHPコードに比べたら遅いと言えるが、
個人的にはメリットの方が桁違いに上かな。

779 名前:nobodyさん mailto:sage [2009/11/17(火) 02:16:05 ID:???]
>>777,778
よかったー。いかにもノロノロしてるような状態になるのかと思いました。
安心して作れます、ありがとう

780 名前:nobodyさん mailto:sage [2009/11/17(火) 03:18:29 ID:???]
じゃキャッシュのメリットって何?って感じだな

781 名前:nobodyさん mailto:sage [2009/11/17(火) 06:08:10 ID:???]
Smarty 3.0 Beta 3 Released
ペース早いな



782 名前:nobodyさん mailto:sage [2009/11/17(火) 13:05:14 ID:???]
>>780
更新が少ないもしくは、更新タイミングが決っている場合にキャッシュ有効にすればいい。
大規模サイト用のチューニング項目だと思えばいいんじゃないかね。

783 名前:nobodyさん mailto:sage [2009/11/17(火) 15:47:08 ID:???]
>>780
769にも書いたけど、負荷テストした時は効果合ったよ。
同時アクセス100とか1000の場合に。

784 名前:nobodyさん mailto:sage [2009/11/19(木) 15:56:07 ID:???]
多数の他人に更新させる場合はキャッシュオフ?
掲示板とかね
有効にしといて書き込まれたタイミングでキャッシュ削除するのかな

785 名前:nobodyさん mailto:saga [2009/11/20(金) 13:27:52 ID:???]
ぴーえちぴー5.3.0
りなくす

Smartyでテンプレートが無い場合に白い画面になっちゃうんで、エラーをハンドリングしたいんですけど出来ないでしょうか?
テンプレートがあるか判定なんてめんどーなことしないといけないんですかね?

786 名前:nobodyさん mailto:sage [2009/11/20(金) 13:53:02 ID:???]
できるでしょ
そもそもfatal errorなり出るはず

787 名前:nobodyさん mailto:sage [2009/11/20(金) 13:55:42 ID:???]
PHPのerror_reportingが0になってるとかじゃね?

788 名前:nobodyさん [2009/11/20(金) 14:07:49 ID:L1RHfQMx]
try
{
$smarty->display($tpl);
}
catch
{
なんたら
}
みたいにやりたいです。
エラーレポ調べてみます。

789 名前:nobodyさん [2009/11/20(金) 14:24:17 ID:L1RHfQMx]
error_reportingはnullのようです。ログに出して確認。
3に設定して見ましたが例外はキャッチできませんでした。3が間違いなんでしょうか?

>>786
それは戻り値として出るということですか?

790 名前:nobodyさん mailto:sage [2009/11/20(金) 14:27:34 ID:???]
>>789
error_reporting(E_ALL);

791 名前:nobodyさん mailto:sage [2009/11/20(金) 14:30:40 ID:???]
>>789
もしかしてxampp?



792 名前:nobodyさん [2009/11/20(金) 14:32:43 ID:L1RHfQMx]
displayのソース見ましたが、エクセプションはスローされないようですね…
素直にtemplate_exist使いたいとおもいます。

>>786
voidですね。


793 名前:nobodyさん mailto:sage [2009/11/20(金) 15:02:58 ID:???]
fatal error出るでしょに対する返答がvoidですとか謎い

794 名前:nobodyさん [2009/11/20(金) 15:05:46 ID:L1RHfQMx]
display_errors = Off

display_errors = On
httpd restart

error_reporting(E_ALL);
try
{
$smarty->display($tpl);
}
catch
{
なんたら
}

>>791
XAMPPじゃないです。それぞれソースからいれました。

795 名前:nobodyさん [2009/11/20(金) 15:09:05 ID:L1RHfQMx]
あ、794の結果はダメでした。同じ結果で白い画面になります。

>>793
789への自己レスです。


796 名前:nobodyさん mailto:sage [2009/11/20(金) 15:12:27 ID:???]
ちょろっとググってみたらこんなんもあった

(2)Smartyのファイルを調べてみる
画面が真っ白になった原因として、Smartyのファイルが壊れていることがあるのです。
xoops-manual.net/modules/smartsection/item.php?itemid=17


797 名前:nobodyさん mailto:sage [2009/11/20(金) 15:14:35 ID:???]
>>794
テンプレートファイルが無かった場合に出るエラーは
Smarty.class.phpの1591行目くらいにある
$this->trigger_error('unable to read resource: "' . $params['resource_name'] . '"');
でしょ?

で、例外をスローさせるための案
1.当該箇所を書き換える
2.Smartyクラスを継承したMySmartyクラスを作って_fetch_resource_infoメソッドをオーバライドする
3.set_error_handler関数でwarningが発生した時に例外投げるようにする

xamppじゃないとのことなので真面目に答えてみました

798 名前:nobodyさん [2009/11/20(金) 15:25:36 ID:L1RHfQMx]
>>797
おぉ、まさに欲しかった回答です。
ありがとうございます。
そのワーニングで間違いないです。

1…書き換えるのは好きじゃないです。
2…うーん、処理に悩みそうです。
3…これが簡単そうです。

ちょっとがんばってみます。
たすかります。

799 名前:nobodyさん mailto:sage [2009/11/21(土) 10:25:34 ID:???]
fetchってどういうとき使うの?

800 名前:nobodyさん mailto:sage [2009/11/21(土) 11:47:09 ID:???]
自動送信・返信メールの文面とか。

801 名前:nobodyさん mailto:sage [2009/11/21(土) 13:04:20 ID:???]
>>800
ありがと、メールのテンプレか
就活してたときの毎ナビか何かの企業からメールに
『こんにちわ寒くなりましたね、{$username}さん』
とか、書いてあったのを思い出した



802 名前:nobodyさん mailto:sage [2009/11/21(土) 15:18:41 ID:???]
>>798
普通は三番
サンプルは沢山見つかる

803 名前:nobodyさん [2009/11/26(木) 11:34:27 ID:tP8Fcb0C]
しつもんです
parent.tpl中で、includeを使ってテンプレート化したヘッダを読み込ませたいと思ってるんですが
テンプレート(header.tpl)をページの種類に応じて動的に変更させたいときの手順がよくわからないです。
たとえば、動物の紹介ページでは動物の一覧を、自動車の紹介ページでは自動車の一覧をヘッダに表示したい時、
表示対象の画像や情報(動物写真/自動車写真、それぞれの名前情報など)は、includeタグの中に変数として
持ち込むしかないのでしょうか?

自分のイメージでは{include file='header.tpl' pageType='animal'}として、
変数値animalを受け手のテンプレで解釈してそれを元にDBから必要データを取得できたらいいなと思ったんですが。
(なるべく一カ所で取得プロセスを管理したいので)
そんなのは無理で、あらかじめ親のparent.tpl=parent.phpで必要データを取得して、
それをincludeに変数で渡すしかないという結論でいいのでしょうか?

今思いついた方法は、incudeタグ中の変数でpageType='animal'と渡して、それをheader.tplで
自前のmodifierに譲渡しそこから必要データ取得→出力の流れです。
もっとスマートなやり方ないでしょうか? アドバイスお願いします

804 名前:nobodyさん mailto:sage [2009/11/26(木) 15:51:29 ID:???]
>>803
何を言ってるのか良く分からないけど
>変数値animalを受け手のテンプレで解釈してそれを元にDBから必要データを取得できたらいいなと思ったんですが
すればいいのでは?

805 名前:nobodyさん mailto:sage [2009/11/26(木) 15:52:24 ID:???]
補足、テンプレートファイルで解釈するのではなくPHP側でという意味で。

806 名前:nobodyさん mailto:sage [2009/11/26(木) 16:04:59 ID:???]
余計意味がわからない。
なぜmodifier?function作れば?

807 名前:803 [2009/11/26(木) 23:09:48 ID:tP8Fcb0C]
皆さんありがとうございます
>>804
header.tplって、単独のページとしては存在しないあくまでパーツのテンプレートなので、
index.tplに対するindex.phpの様なコントローラ(?)のファイルってheader.tplにはないのではと
考えたのですが…(header.phpにアクセスすることはないと思うので)
思い違いなのでしょうか?
>>806
勉強不足なのかもしれません、functionについて調べてみます。ありがとうございます。

808 名前:nobodyさん mailto:sage [2009/11/26(木) 23:58:18 ID:???]
>>807
includeするんだからindex.phpでやればよいのでは?

809 名前:803 mailto:sage [2009/11/27(金) 01:09:41 ID:???]
>>808
あ、親のページでってことですか、、なるほど!
1)ページのテーマ(animalとか)を引き渡されてDBに働きかけるphpを外部化し、
2)それをheader.tplの親のanimal.php, car.phpなどに読み込んで、
3)結果をincludeタグ渡す
って感じでいいかな。
これならデータの取得部分が複数にばらけることもないのか。。
これのデータ取得の順番を変えたものがfunctionでやるってパターンかもしれない

ありがとうございます。チャレンジしてみます

810 名前:nobodyさん [2009/11/29(日) 07:42:11 ID:wdDHDadn]
テンプレート関数プラグインのfunction(smarty.hogefunc.php)を作ったんですが、
<?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 …{〜} の外に書かれたものは正常に処理されないという仕様なんでしょうか?
申し訳ありませんが、ご意見宜しくお願いします

811 名前:nobodyさん mailto:sage [2009/11/29(日) 13:22:28 ID:???]
お前は何を言ってるんだ



812 名前:nobodyさん mailto:sage [2009/11/29(日) 14:16:45 ID:???]
return "abc";

してみればいいじゃない。

813 名前:810 mailto:sage [2009/11/29(日) 23:16:09 ID:???]
>>812
functionの中でreturn "abc"; すると、それは返すんです。
なんでかなぁ
>>811
わかりにくかったみたいですみません

814 名前:nobodyさん mailto:sage [2009/11/30(月) 09:19:43 ID:???]
functionの中で

・print_r($_GLOBALS)してみる
・echo $varしてみる

815 名前:nobodyさん [2009/12/02(水) 14:25:43 ID:1PNbu+TX]
www.youtube.com/watch?v=lsPL2QoElmw
www.youtube.com/watch?v=DyzzLwlIcpE
www.myspace.com/ametsub3110

www.youtube.com/watch?v=BDD9MZUTQzs
www.myspace.com/serphinjapan

www.apple.com/jp/quicktime/download/
www.jimbeard.com/boomer.html
www.jimbeard.com/Beard%20mp3s/Song%20of%20the%20Sun%20128/Camieff%20Wb.01_01.mp3
www.jimbeard.com/Beard%20mp3s/Song%20of%20the%20Sun%20128/Parsley%20Trees%20Wb.01_01.mp3
www.jimbeard.com/Beard%20mp3s/Truly%20128/Hand%20to%20Hand%20Wb.01_01.mp3
www.jimbeard.com/Beard%20mp3s/Truly%20128/Gonna%20Tell%20on%20You%20Wb.01_01.mp3

816 名前:nobodyさん mailto:sage [2009/12/04(金) 17:16:31 ID:???]
smartyのキャッシュを有効にするとサイドバーにinsertしておいたプラグインが上のほうに来てしまうんだけど、何か原因わかりませんか?
ブラウザで見るソースとcacheフォルダのキャッシュを見ると、DOCTYPEタグより上にプラグインの中身が出てしまってるんです

817 名前:816 mailto:sage [2009/12/05(土) 18:55:21 ID:???]
あー、すげー馬鹿なことやってた
insertプラグインって中でechoしちゃダメなのかreturnしないとイケないのか
キャッシュオフのときは正常に見えるから気付かなかった

818 名前:nobodyさん mailto:sage [2009/12/07(月) 16:47:15 ID:???]
だからいったじゃん

819 名前:nobodyさん [2009/12/09(水) 10:32:51 ID:AWY/enbH]
一部キャッシュして欲しくない部分があるんですが、そこだけ{insert}にして外に出すしかないんでしょうか?

820 名前:819 mailto:sage [2009/12/10(木) 15:56:47 ID:???]
なさそうですね

821 名前:nobodyさん mailto:sage [2009/12/13(日) 22:00:00 ID:???]
>>820
これだとだめなん?
ttp://www.smarty.net/manual/ja/caching.cacheable.php




822 名前:nobodyさん mailto:sage [2009/12/13(日) 23:07:04 ID:???]
>>821
ありがとうございました

823 名前:nobodyさん mailto:sage [2009/12/15(火) 15:00:29 ID:???]
Warning: Smarty error: unable to read resource:

のエラーが出る際に、

自分で作った404エラーページ(のテンプレ)を読み込むことはできますでしょうか?

824 名前:nobodyさん mailto:sage [2009/12/15(火) 15:56:24 ID:???]
とりあえずそれは404じゃない。
$error_reportingを参照したらいいとおもう。

825 名前:823 mailto:sage [2009/12/15(火) 16:39:30 ID:???]
自己解決しました。

826 名前:nobodyさん mailto:sage [2009/12/25(金) 18:27:23 ID:???]
SmartyってWebで検索してもマニュアルかその複製しか全然情報が出てこないけど、どっかいいサイトないですか?
マニュアルはサンプルとか説明が簡単すぎて知りたい情報が出てこないのですが・・・

例えばdefault_resource_typeプロパティで、デフォルトのfile以外の値を知りたいのに、それどころかサンプルすら書かれていなかったり困ります
リソースプラグインの事ももっと知りたいんですが見つかりません

PEARでも感じましたが、なんでこう情報が少ないんでしょうかね?
マニュアルとそのコピー以外の情報が出てきません

827 名前:nobodyさん mailto:sage [2009/12/25(金) 19:02:01 ID:???]
PEARもSmartyも情報は溢れてるよ。
無いのは君の理解力だろう。

Smartyに至ってはマニュアルあれば大抵は事足りる。
リソースプラグインに関しても、マニュアル読んでわからん人には無縁なんじゃねぇかな。
あれ以上丁寧な解説求めるなら金払ってスクールにでも通えばいい。

828 名前:nobodyさん mailto:sage [2009/12/25(金) 21:36:44 ID:???]
ソースも結構シンプルだから
謎があったら追い掛けてみたら?

829 名前:nobodyさん mailto:sage [2009/12/26(土) 18:39:45 ID:???]
>>827
溢れているとまではいかないんじゃないかと俺は思う

830 名前:nobodyさん mailto:sage [2009/12/27(日) 00:20:26 ID:???]
具体的にどんな情報が欲しいの?
「俺の知りたい情報が無い」ってだけじゃ、教える側もわからんだろう

default_resource_typeにしたって、リファレンスのテンプレートリソースとリソースプラグインの項目に十二分な情報載ってると思うしなぁ
ここまで枯れた技術なのに、情報が足りないってのは調べる力か理解力が無いとしか思えないんだが

831 名前:nobodyさん mailto:sage [2009/12/27(日) 11:58:44 ID:???]
もし情報がなかったとしたらこのスレがもっと賑わってると思うんだ



832 名前:nobodyさん mailto:sage [2009/12/27(日) 13:02:13 ID:???]
いやそもそもSmarty使いの絶対数がすくなうわなにをするやめ

833 名前:nobodyさん mailto:sage [2009/12/27(日) 19:56:19 ID:???]
>>831
「もし情報があったとしたら〜」なら同意できるんだけどな。

ブログなんかでちょこっと取り上げているサイトはあっても
ユーザー同士で語り合うようなコミュニティは無い。
マニュアル見ろよってのは当たり前の行為で、
Smartyはそれ以上の使い方(サイト構築のテンプレ利用など)があるから
使い方やアイディアをまとめたサイトがあれば良いとは思う。

834 名前:nobodyさん mailto:sage [2009/12/27(日) 21:01:57 ID:???]
コンパイルせず使う方法ないのかな

835 名前:nobodyさん mailto:sage [2009/12/29(火) 11:19:04 ID:???]
>>833
コミュニティか・・・
たとえば2chにSmartyスレたてたらいいんじゃないかな

836 名前:nobodyさん mailto:sage [2009/12/29(火) 11:34:24 ID:???]
名案だな。

837 名前:nobodyさん mailto:sage [2010/01/06(水) 21:51:18 ID:???]
俺もSmartyのしっかりとしたサイトってないなとは思ってた
マニュアルって簡潔にまとめられてるからね

>>833の言ってるようなことは俺は分かるね
Webだけじゃなく、他にも構築する時にここどうすればいいんだっけ?って時に調べられないからね
情報が少なすぎて

838 名前:nobodyさん mailto:sage [2010/01/07(木) 09:11:46 ID:???]
書籍は?
日本語で複数出版されてるのは恵まれてる方だと思う。

まとめサイトは自分で立ち上げて、ある程度充実させられれば
他の人も情報を集めてくれるようになるかもよ。

839 名前:nobodyさん mailto:sage [2010/01/07(木) 15:20:10 ID:???]
Smartyの本ってある?
Smarty入門しか知らないけれど・・・?

840 名前:nobodyさん mailto:sage [2010/01/07(木) 16:37:46 ID:???]
PHPのウェブアプリの本だとSmarty出てきたりするな

841 名前:nobodyさん mailto:sage [2010/01/07(木) 23:58:21 ID:???]
Smartyのキャッシュ機能ってなにをキャッシュしてるん?
$smarty->assignで割り当てるのは変数だからキャッシュじゃないし



842 名前:nobodyさん mailto:sage [2010/01/08(金) 00:03:40 ID:???]
すまんアホなこと書いた

843 名前:nobodyさん mailto:sage [2010/01/08(金) 09:13:25 ID:???]
だから具体的にどんな情報が欲しいんだよw
WEBに溢れている情報を漁るだけで、大抵の事は答え一歩手前まで調べられるだろ・・・



844 名前:nobodyさん mailto:sage [2010/01/08(金) 10:58:43 ID:???]
Smartyをカッコよく使いこなす方法

845 名前:nobodyさん mailto:sage [2010/01/08(金) 11:57:09 ID:???]
2chで教えて君をしてる時点でかっこわるい

846 名前:nobodyさん mailto:sage [2010/01/08(金) 12:11:21 ID:???]
もっとSmartyをスマートに使う方法

847 名前:nobodyさん mailto:sage [2010/01/09(土) 17:17:11 ID:???]
使いこなし方まではWebで出てこないな、確かに

848 名前:nobodyさん mailto:sage [2010/01/17(日) 19:36:43 ID:???]
Smarty使う場合はdisplay()以降に処理は記述しない方が吉?

849 名前:nobodyさん mailto:sage [2010/01/18(月) 03:14:17 ID:???]


850 名前:nobodyさん mailto:sage [2010/01/18(月) 11:28:14 ID:???]
別にそんなことはないかと思うが
2枚以上のテンプレートをdisplay()する場合もあるし

851 名前:nobodyさん [2010/01/18(月) 14:06:09 ID:AGLkXiCO]
smarty2では
$smarty->assign('pref', array('01' => '北海道', '02' => '青森'));

{$pref.01}
で北海道が取れていたのだけど、
Smarty3Beta板では
{$pref['01']}
としないと取れなくなったのは仕様変更ですか?



852 名前:nobodyさん [2010/01/18(月) 14:06:25 ID: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}を使おうと思ってるんですが・・・

853 名前:nobodyさん mailto:sage [2010/01/18(月) 14:25:16 ID:???]
>>852
html_checkboxes使うの?それとも手動でやるの?

854 名前:nobodyさん mailto:sage [2010/01/18(月) 15:07:42 ID:???]
>>853
手動です
html_checkboxesのほうがやりやすいのでしょうか?

855 名前:nobodyさん mailto:sage [2010/01/18(月) 15:59:06 ID:???]
>>854
foreachでやるなら普通にループさせて
要素を出すところでifで比較してchecked入れればいいんじゃない?
$fugaのデータ構造がそのまま使えなくてちょい面倒だけど
予め使いやすいように変換するか、更にループさせて全件比較すればいいかと

856 名前:nobodyさん [2010/01/20(水) 22:11:47 ID:q80CCbb+]
以下のようにinterfaceによる拡張を試しています。

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のコードを追加するのは無理でしょうか。

857 名前:856 mailto:sage [2010/01/20(水) 23:35:47 ID:???]
すみません、しばらく考えていたのですが、断念することにしました。
拡張も考えてみたのですが、もとがphp4ですから、こちらのPHP環境と合わせて考えると
サブクラスで定義した"クラス定数"をテンプレートから呼び出すことは
おそらく無理と判断しましたm(_ _)m

確かなことは言えませんが、クラスを変数で参照できるphp5.3以降でなら
プラグイン等で機能追加できるような気がします。

858 名前:nobodyさん mailto:sage [2010/01/21(木) 04:40:11 ID:???]
php4だから無理ってどういうこっちゃ?どこに書いてあるん?

マニュアルの例はもうちょっと落ち着いて見直してみたほうがいいと思うけど

859 名前:nobodyさん mailto:sage [2010/01/29(金) 18:46:34 ID:???]
インサートプラグインの中でもテンプレート指定してキャッシュさせてるけど
インサートプラグインが1ページに5、6個あるとかなり速度低下してきてしまう

860 名前:nobodyさん mailto:sage [2010/01/30(土) 00:48:00 ID:???]
>>859
そんな、あなたにsmarty3の出番ですよ。
プラグインを書く必要ないぞ。

861 名前:859 mailto:sage [2010/01/30(土) 10:34:45 ID:???]
え、そうなの?プラグイン書かなくていいってどういうことですか?
今は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だと改善されてるんでしょうか?



862 名前:nobodyさん mailto:sage [2010/01/30(土) 11:59:30 ID:???]
Smarty3だと{nocache}で囲むだけでいいらしいよ。だから、インサートプラグインいらず。

863 名前:nobodyさん mailto:sage [2010/01/30(土) 12:29:50 ID:???]
nocacheなら↓で実現できたヤツですね、最初からあるのとないのでは大違いでしょうが。
www.smarty.net/manual/ja/caching.cacheable.php

864 名前:nobodyさん mailto:sage [2010/01/30(土) 14:12:57 ID:???]
Smarty2より遅いSmarty3なんてゴミにしかなりえない

865 名前:859 mailto:sage [2010/01/30(土) 14:45:10 ID:???]
>>862
キャッシュしたいのでnocacheは用途が違う気がします

866 名前:nobodyさん mailto:sage [2010/01/30(土) 15:09:07 ID:???]
あらかじめオブジェクトをシリアライズしておいて、それをアンシリアライズして読めば早いよってことなんだけど
方法がよく分からない。
結局require_once "Smarty.class.php"しなきゃいけないんだよね?
意味分かる人教えてください

Smartyの読み込みコスト(時間)を削減する
ttp://code.xenophy.com/?p=73

867 名前:nobodyさん mailto:sage [2010/01/30(土) 16:02:16 ID:???]
意味わかんない記事ですね
効果も0.01秒だし

868 名前:nobodyさん mailto:sage [2010/01/30(土) 16:56:45 ID:???]
0.01秒って結構大きいんじゃね?

869 名前:nobodyさん mailto:sage [2010/01/30(土) 16:57:37 ID:???]
なんで?

870 名前:nobodyさん mailto:sage [2010/01/30(土) 17:23:46 ID:???]
あれ?デカくね?

871 名前:nobodyさん mailto:sage [2010/01/30(土) 17:31:09 ID:???]
なんでと聞いているんだ



872 名前:nobodyさん mailto:sage [2010/01/30(土) 18:09:30 ID:???]
1回表示するたびに0.01秒だろ
うちのサイトだと0.01秒早くなったら速度2倍だぜ

873 名前:nobodyさん mailto:sage [2010/01/30(土) 18:11:35 ID:???]
感じられねーだろw

874 名前:nobodyさん mailto:sage [2010/01/30(土) 21:26:36 ID:???]
>>873
濡れ濡れよ

875 名前:nobodyさん [2010/01/31(日) 16:37:31 ID:tjv1ZgGA]
compile_dirのディレクトリがなかったり、書き込み権がない場合
コンパイルエラーになりますが、たまにパーミッション設定を忘れたりして
こういう現状が度々あります。

忘れず確認すれば良い事ですが、なにか効率の良い方法はないでしょうか?

876 名前:nobodyさん mailto:sage [2010/01/31(日) 16:53:46 ID:???]
どんな風にできたらいいの?

877 名前:nobodyさん [2010/01/31(日) 17:59:24 ID:tjv1ZgGA]
・コンパイルエラーを出さない
・コンパイル用のディレクトリがない場合、自動的に作成

と言うぐらいしか思いつきません
後者はis_dirでチェックすればいいと思うのですが、前者は方法自体わかりません・・・

878 名前:nobodyさん mailto:sage [2010/01/31(日) 18:01:14 ID:???]
>>877
エラーメッセージでファイルを検索→当該行をコメントアウト

879 名前:nobodyさん mailto:sage [2010/02/01(月) 13:24:00 ID:???]
>>878
そんな凄い事が出来るんですか?
当該行をコメントアウトって、文字列の置換とは違うんですよね?

880 名前:nobodyさん mailto:sage [2010/02/02(火) 14:53:16 ID:???]
Smarty2.6からSmarty3への移行ってlibsの中身変えるだけでいいんですか?

881 名前:nobodyさん mailto:sage [2010/02/02(火) 14:54:00 ID:???]
えっ?



882 名前:nobodyさん mailto:sage [2010/02/02(火) 16:28:53 ID:???]
string:リソースとforが欲しいだけなんだが、Smarty2に入れてくれ

883 名前:nobodyさん mailto:sage [2010/02/03(水) 00:29:48 ID:???]
>>880
互換性はあるとかないとか、
廃止される構文もあるとかないとか

884 名前:nobodyさん mailto:sage [2010/02/03(水) 01:26:14 ID:???]
stringリソースは自分で作れ。

PHPっぽく数学処理出来るのはいいよね。Smarty3。
開発に時間かけ過ぎてて、既に腐り始めている気がするけど。

extend欲しいな。

885 名前:nobodyさん [2010/02/05(金) 12:00:27 ID:1wZyvV1Q]
default_modifiersでescape:htmlやってたらforeachでエラー出るとか{debug}ができないとか
そういうのは最新版では治ってるの?

886 名前:nobodyさん mailto:sage [2010/02/05(金) 16:09:07 ID:???]
debugとescapeプラグインを数行書き換えるだけで治る。

887 名前:nobodyさん mailto:sage [2010/02/05(金) 18:17:12 ID:???]
Smarty3のstringリソースってキャッシュしてくれないのか、ファイルの更新日時とか取得できないから当たり前か・・・

888 名前:nobodyさん mailto:sage [2010/02/06(土) 16:55:05 ID:???]
smartyとquickformの組み合わせでdefault_modifiers escapeするとフォームが全部エスケープされてしまうね
じゃ、nodefaultsにすりゃいいかというと、フォームのユーザが追加できるようにしている場合、
デフォルトの値(フォームのセレクトとか)にエスケープしたい文字があると途端に無理が出る
結局ロジック側でh()するしかなくなる

889 名前:nobodyさん [2010/02/09(火) 13:31:36 ID:Af+mgrun]
Smartyで画像の出力ってできる?
"Content-Type: image/jpeg"的な意味で。

890 名前:nobodyさん mailto:sage [2010/02/10(水) 09:26:09 ID:???]
プラグイン作れば?

891 名前:nobodyさん mailto:sage [2010/02/10(水) 11:02:43 ID:???]
>>889つーか、ここは正攻法でMLに投げるんだ!



892 名前:nobodyさん mailto:sage [2010/02/12(金) 16:19:32 ID:???]
>>889
テンプレートファイルの内容を画像データにすればいいんじゃないかな・・・

893 名前:nobodyさん mailto:sage [2010/02/12(金) 21:11:24 ID:???]
パーサーが変なの拾って壊しちゃうかと
displayやfetchしてる所でget_file_contentするだけだろ
しょーもな

894 名前:nobodyさん mailto:sage [2010/02/12(金) 21:12:15 ID:???]
関数名違うかも

895 名前:nobodyさん mailto:sage [2010/02/17(水) 16:31:45 ID:???]
file_get_contents()だな。
確かにSmartyが有用なケースが思いつかない。

896 名前:nobodyさん mailto:sage [2010/02/20(土) 12:34:03 ID:???]
MTってSmarty使ってるのか

897 名前:nobodyさん mailto:sage [2010/02/20(土) 12:44:55 ID:???]
気のせいか

898 名前:nobodyさん [2010/02/20(土) 17:16:25 ID:0jUjLrgq]
ファイルではなく
変数に格納されたテンプレートを使うために
変数用のリソースプラグインを使って試行錯誤してるのですが
相談させてください。

このリソースプラグインに変数(テンプレートの内容)を渡す方法ですが
2つ思いつきました。

1つは
$hoge = "ここにテンプレートの内容";
$smarty->fetch("var:hoge");

のように変数名を渡して
プラグイン側で グローバル変数の$hogeの内容を取得。
しかしグローバル変数を使うというのがちょっと気になります。

もう1つの案は
$smarty->fetch("var:{$hoge}");
としてテンプレートの内容自体を渡す方法。

しかしこれだと長い名前の中間ファイル(template_cにできるファイル)
が作られてなんだか気持ちが悪いです。

毎回コンパイルでいいので中間ファイルは作られないほうがいいのですが
それもできない感じ。

みなさんはどうしてますか?


899 名前:nobodyさん mailto:sage [2010/02/20(土) 22:01:34 ID:???]
リソースプラグイン側で
グローバル変数じゃなくてSmartyにassignされた変数を見るようにすればいいんじゃねーの?

900 名前:898 mailto:sage [2010/02/24(水) 09:57:22 ID:???]
>>899
規制でかけなかった・・・

結局Smartyを拡張してプロパティを追加したら
プラグイン側で普通に見れました

>>899
ありがとうございます
なるほど、それは気づきませんでした
そのほうが手軽ですね


901 名前:nobodyさん mailto:sage [2010/03/03(水) 01:14:47 ID:???]
Tenjin使い始めた。smartyより3倍早いらしい。
フレームワークをやったことなかったけど、比較的わかり易い。



902 名前:nobodyさん mailto:sage [2010/03/03(水) 16:18:29 ID:???]

www.kuwata-lab.com/presen/LL2007LT.pdf

14-15ページを見た感じだと制御はPHPそのままで
PHPタグ外部分はわざわざechoするのか・・・

903 名前:nobodyさん [2010/03/04(木) 15:15:33 ID:jG8+9EsN]
Smarty3はいつになったら出るんだよ。

904 名前:nobodyさん mailto:sage [2010/03/05(金) 09:36:42 ID:???]
遅い3はいらない

905 名前:nobodyさん [2010/03/06(土) 00:22:27 ID:3cIJcZyy]
Smartyのoutputfilterで文字コードをUTF-8からSJISに変換する処理を入れています。

こんな風に
$smarty->register_outputfilter("filterSjis");

function filterSjis($buff, &$smarty) {
return mb_convert_encoding($buff,"SJIS-win","UTF-8");
}

ブラウザで表示させると頭に「?」が入ってるんだけどこれはなぜでしょうか?
Smarty 2.6.26 PHP 5.3.2 です

906 名前:nobodyさん mailto:sage [2010/03/06(土) 01:54:29 ID:???]
UTF-8テンプレートにBOMが入ってんじゃねーの?

907 名前:nobodyさん mailto:sage [2010/03/06(土) 08:38:23 ID:???]
ありがとう
その通りでした


908 名前:nobodyさん mailto:sage [2010/03/06(土) 10:16:09 ID:???]
自己中マルチはシネよ

909 名前:nobodyさん mailto:sage [2010/03/06(土) 11:56:50 ID:???]
すまんね PHPはあんまり慣れてないんだ
普段はGAEでjavaなんだよ
これあげるからシネとかいわないで
mix-tube.appspot.com/

910 名前:nobodyさん mailto:sage [2010/03/06(土) 12:20:22 ID:???]
そういう問題じゃないけど許す

911 名前:nobodyさん mailto:sage [2010/03/06(土) 13:54:43 ID:???]
さらに宣伝かよ



912 名前:nobodyさん mailto:sage [2010/03/07(日) 07:30:25 ID:???]
β8はfinal betaらしいので、次はRC版か

913 名前:nobodyさん mailto:sage [2010/03/11(木) 09:30:07 ID:???]
俺の勉強不足かも知れないんだけど、
cache_lifetimeって以下の仕様じゃないんだね

10秒に設定→10秒経ってるキャッシュファイルは全て削除

914 名前:nobodyさん [2010/03/11(木) 17:23:06 ID:TZPJnNmb]
削除されるわけないだろ。

915 名前:nobodyさん mailto:sage [2010/03/12(金) 13:20:51 ID:???]
じゃ、キャッシュ溜まりまくるけど
どの段階でclear_all_cacheするの?

916 名前:nobodyさん mailto:sage [2010/03/12(金) 15:48:13 ID:???]
>>913
同じく削除されると思うのが普通な気がする
セッション管理みたいに

>>915
必要なら好きなときにどうぞ


917 名前:nobodyさん mailto:sage [2010/03/12(金) 17:14:35 ID:???]
削除というよりは、要求されたページのキャッシュがlife timeより古かったら
再生成(上書き)されると思ってる。
つまり、要求されなきゃそのまま放っておかれる(わざわざ消さない)と。

918 名前:nobodyさん mailto:sage [2010/03/12(金) 21:49:30 ID:???]
マニュアル良く読めw


919 名前:nobodyさん mailto:sage [2010/03/13(土) 05:31:12 ID:???]
>>918
ん?

920 名前:nobodyさん mailto:sage [2010/03/13(土) 13:02:36 ID:???]
cache_lifetime = -1;にしてるオレには関係のない話だな

921 名前:nobodyさん mailto:sage [2010/03/13(土) 15:04:04 ID:???]
負荷だいじょうぶか?



922 名前:nobodyさん mailto:sage [2010/03/13(土) 16:11:14 ID:???]
-1は無期限でキャッシュし続ける
0が毎回作成
CMSみたいに管理画面から更新するなら、
そのタイミングで必要な分だけキャッシュを削除すればいいしね

923 名前:nobodyさん mailto:sage [2010/03/13(土) 16:11:51 ID:???]
×キャッシュし続ける
○キャッシュを使い続ける
でした






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<245KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef