1 名前:nobodyさん [2008/02/02(土) 00:21:09 ID:6cKcKeTp] まぬあるwww.smarty.net/manual/ja/
606 名前:nobodyさん mailto:sage [2009/08/10(月) 19:21:31 ID:???] >テンプレかアクションかどっちかが絶対ゴチャゴチャするなら一緒ですねもう。 テンプレートとロジックの切り分けは、そのゴチャゴチャを纏める事にあるんだよw アクションとテンプレ両方で値を編集しちゃうと、 どこでバグが発生したか突き止められなくなっちゃうでせう。
607 名前:nobodyさん mailto:sage [2009/08/10(月) 19:38:15 ID:???] >>605 例えば、入力任意のファックス番号とかあったとして、必須入力だったら確かにテンプレでは配列そのまま使って FAX:{$ary.faxNum} で済むけど、必須じゃないんでその前段階のアクションで if($ary['faxNum'];){$faxNum = $ary['faxNum'];} else{$faxNum = "-";} //assign処理 ってやる必要あるじゃないですか。それが嫌だったんですよ。 必須入力じゃない項目の数だけassignしまくらなきゃいけない。めんどくさいなぁと。 そこでphpかsmartyの構文で、テンプレの中で{if}とかしようと思ったんだけど… でも、確かに>>606 の言う通り、あっちこっちにまたがって値を編集しちゃダメですね。 smarty構文はデザインとか見た目(まさにテンプレート)を自動生成するためだけに使わなきゃなぁと ようやく結論づきました。
608 名前:nobodyさん mailto:sage [2009/08/10(月) 20:32:12 ID:???] >>607 if(!isset($ary['faxNum'])) ($ary['faxNum'] = "-"; って書いて、$ary変数だけassignすればいいんじゃない? その程度の表示分岐処理なら、テンプレート側でもOKかと思う。 {$ary.faxNum|default:"-"} でいけない?
609 名前:nobodyさん mailto:sage [2009/08/10(月) 20:50:18 ID:???] 値未入力であることを示すのに、何を表示するのかはview側の仕様だわな。 ひょっとしたら先々仕様変更で「入ってまへんで、へよへよ」と表示するようになるかもしれん。 そのとき内部データにそんな値(内容)入れたくないだろ? 608の後半みたいにテンプレ側でやった方がいいよ。
610 名前:nobodyさん mailto:sage [2009/08/10(月) 22:51:30 ID:???] >>608-609 うーん、そうか。 ケースバイケースでどうやるべきかじっくり考えてやってみるね ありがとう
611 名前:nobodyさん mailto:sage [2009/08/10(月) 23:13:31 ID:???] 度々申し訳ない {if}--{/if}の中で、smarty変数を生成できないの? assignと同じことをしたいんだけど {if $var eq "hoge"} $newVar = "hogeでした"; {/if} みたいな…
612 名前:nobodyさん mailto:sage [2009/08/10(月) 23:15:44 ID:???] assignでなんでだめなの?
613 名前:nobodyさん mailto:sage [2009/08/10(月) 23:42:39 ID:???] >>612 assignはphp側の処理ですよね、テンプレ側で値を割り当てたいので。。
614 名前:nobodyさん mailto:sage [2009/08/11(火) 01:09:27 ID:???] {assign} タグ使えば?
615 名前:nobodyさん mailto:sage [2009/08/11(火) 03:32:24 ID:???] >>614 ありがとう! こんなのがあったのか。助かりました!
616 名前:nobodyさん mailto:sage [2009/08/11(火) 03:33:31 ID:???] assignassign言うから当然テンプレート側のこと言ってると思ったら assignタグすら知らんかったのか。
617 名前:nobodyさん mailto:sage [2009/08/11(火) 12:14:27 ID:???] だからphpタグなんぞで処理したかったのか・・・。
618 名前:nobodyさん mailto:sage [2009/08/12(水) 05:56:44 ID:???] $hogeAry = Array ( [0] => Array ( [id] => 7 [uId] => 10237 [uType] => hoge [photo_text] => 写真の説明1 [photoName] => galleryPic7 [photo_on] => 1 ) [1] => Array ( [id] => 9 [uId] => 10237 [uType] => hoge [photo_text] => 写真の説明2 [photoName] => galleryPic9 [photo_on] => 1 ) [2] => Array ( [id] => 10 [uId] => 10237 [uType] => hoge [photo_text] => 写真の説明4 [photoName] => galleryPic10 [photo_on] => 1 ) ) という配列があります。 これのphotoNameを引き出したくて以下のものを実行してますがうまくいきません。何が原因でしょうか? {foreach from=$hogeAry item=varAry} 名前は:{$varAry.photoName}<br /> {/foreach} {$hogeAry.0.photoName} なら、ちゃんとgalleryPic7が出力されます
619 名前:nobodyさん mailto:sage [2009/08/12(水) 06:23:13 ID:???] varAryの中を見てみたら?
620 名前:nobodyさん mailto:sage [2009/08/12(水) 08:01:33 ID:???] ループは回ってる?「名前は:」って文字は出力されてる? {foreach from=$hogeAry item=varAry} {foreach from=$varAry item=item key=key} {$key}={$item}<br> {/foreach} {/foreach} で中身表示テストしてみ。
621 名前:nobodyさん [2009/08/12(水) 10:23:00 ID:u9+iooGY] >>620 0=z 0=z 0=z とだけ出力して終わってます。。ループ自体はしてるってことですよね? なんでだろ? 配列じゃないのかな。 上で書いた配列は、以下の実行結果です。(zendFWを使った、クエリの結果) function gallery($uType,$uId){ $table = $this->_config->table->gallery; $stt = $this->_db->fetchAll("SELECT * FROM {$table} WHERE `uType`=? AND `uId`=? AND `photo_on`=1 ORDER BY `id` LIMIT 10", array($uType,$uId)); return $stt; } $this->view->hogeAry = $this->_db->gallery('spot',$uId);
622 名前:nobodyさん mailto:sage [2009/08/12(水) 10:32:56 ID:???] >>621 Smarty側に正常にassign出来てない可能性大。 1. hogeAryが正常な配列か確認。 var_dump($this->view->hogeAry); 2. hogeAryがSmartyにassignされてるか確認。
623 名前:nobodyさん [2009/08/12(水) 11:18:13 ID:u9+iooGY] >>622 var_dump($this->view->hogeAry); の結果は $hogeAry = Array ( [0] => Array ( [id] => 7 [uId] => 10237 [uType] => hoge [photo_text] => 写真の説明1 [photoName] => galleryPic7 [photo_on] => 1 ) [1] => Array ( [id] => 9 [uId] => 10237 [uType] => hoge [photo_text] => 写真の説明2 [photoName] => galleryPic9 [photo_on] => 1 ) [2] => Array ( [id] => 10 [uId] => 10237 [uType] => hoge [photo_text] => 写真の説明4 [photoName] => galleryPic10 [photo_on] => 1 ) ) .tplでの {$hogeAry|@var_dump} の結果は Array ( [0] => [1] => [2] => ) 1 {$hogeAry.0.photoName} の結果は galleryPic7 ちゃんとテンプレートまでassignされてきてるってことですよね? foreachだけがうまくいかないってことかなー
624 名前:nobodyさん mailto:sage [2009/08/12(水) 11:41:14 ID:???] 619はシカトですかそうですか
625 名前:nobodyさん [2009/08/12(水) 12:16:00 ID:u9+iooGY] >>624 すみません、varAryの中身のチェックの方法がわからなかったもので。。 {foreach item=varAry from=$hogeAry} {$varAry|@var_dump}<br /> {/foreach} とりあえず思いつく限りで上記をやったら string(0) "" string(0) "" string(0) "" が返ってきます {foreach item=varAry from=$hogeAry} {$varAry.photoName}<br /> {/foreach} だと何も返ってきません(改行3つだけです) ほんとに済みませんでした
626 名前:nobodyさん mailto:sage [2009/08/12(水) 12:34:49 ID:???] 原因切り分けてみたら? 本当にDBから値は取れてるのか、違う関数コールしてないか、 ただの配列なら表示できるのか、などなど。 可能だったら再現するコードも貼って。
627 名前:nobodyさん mailto:sage [2009/08/12(水) 13:54:35 ID:???] {debug} タグでassignされてる変数確認してみ。
628 名前:nobodyさん [2009/08/12(水) 17:19:17 ID:u9+iooGY] >>626-627 どうもありがとうございます 普通の配列なら大丈夫です。同じDBから同様の手続きで取得してるクエリ結果(通常の配列)があるんですが、 それはforeachで解析できています。 {debug}はdisplay形式じゃないとダメみたいで、僕のやり方がそうじゃないので動きませんでした。 それで、今ループ処理をsection形式で試してみたんですが、section なら二次元配列の処理大丈夫でした。(以下が動きました。) {section name=varAry loop=$hogeAry} {$smarty.section.counter.total}<br> (このカウンターは動きませんでした) 要素: {$hogeAry[varAry].id}<br> 要素: {$hogeAry[varAry].photoName}<br> 要素: {$hogeAry[varAry].photo_text}<br> {/section} とりあえず、お騒がせして申し訳なかったですが、foreachは諦めてこっちで極力対応したいです。
629 名前:nobodyさん mailto:sage [2009/08/13(木) 16:40:28 ID:???] 結局原因は何なの?
630 名前:nobodyさん [2009/08/21(金) 13:05:34 ID:WhelcFIU] 質問させてください。 テンプレート中の {$hoge}って変数に対してphpのクラス中のメソッドを実行するって可能でしょうか? これまでは、php中で $hoge=$instance->method($hoge1,引数1,引数2); として、適切な値を返してたんですが、同じ事をテンプレートの中でやりたいと思います。 {$hogetext|nl2br}などでphp関数を実行できるのは知ってるんですが、調べたところメソッドの実行は 見つけられませんでした。無理なんでしょうか? assign 前に実行すべき?
631 名前:nobodyさん mailto:sage [2009/08/21(金) 14:42:48 ID:???] 修飾子プラグインの中でメソッド呼べばよいのでは
632 名前:nobodyさん mailto:sage [2009/08/21(金) 18:37:07 ID:???] >>631 どうもありがとうございます 修飾子プラグイン、知りませんでした! 勉強になります、ありがとう
633 名前:nobodyさん mailto:sage [2009/08/21(金) 22:16:33 ID:???] プラグインの中で他のプラグインの機能を呼び出すことってできますか?
634 名前:nobodyさん mailto:sage [2009/08/21(金) 22:16:56 ID:???] できるよ
635 名前:nobodyさん [2009/08/22(土) 00:43:33 ID:qs0RE9DR] 修飾子プラグインの勉強始めたんですが、引数を2つもたせる方法がわかりません。 {$num}というsmarty変数に対して、 function smarty_modifier_NUMtoTEXT($num,$aryName){ return $allAry[$aryName][$num]; } というプラグインを実行したいんですがどう書いたら良いんでしょうか? {NUMtoTEXT:$num:"boyAry"}とかやってみたんですがうまくいきません。
636 名前:nobodyさん mailto:sage [2009/08/22(土) 00:59:28 ID:???] >>635 www.smarty.net/manual/ja/language.modifiers.php
637 名前:nobodyさん mailto:sage [2009/08/22(土) 05:08:49 ID:???] >>634 kwsk
638 名前:nobodyさん mailto:sage [2009/08/22(土) 12:26:11 ID:???] >>637 ggrks
639 名前:nobodyさん mailto:sage [2009/08/22(土) 23:19:02 ID:???] >>636 返事遅れました。うまくいきました、ありがとう
640 名前:nobodyさん mailto:sage [2009/08/25(火) 00:15:56 ID:???] foreach だの sectionだのって、なんで素直にfor文用意してくれないんだろね php用テンプレートなのにわざわざ特殊な書式だし、頭に入らなくてしょっちゅうマニュアル見てる 頭悪くて悲しいな
641 名前:nobodyさん mailto:sage [2009/08/25(火) 06:09:04 ID:???] >>640 Smarty3で追加される
642 名前:nobodyさん mailto:sage [2009/08/25(火) 13:55:26 ID:???] >>641 ほんとに? 情報ありがとう、気分が楽になったよw そういう情報を仕入れる前向きさがないとイカンなぁ
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で囲ってるよ。 改行、空白によるブラウザの変なバグにも遭遇しないし、 何より若干ではあるものの軽くなる。 かっこいいかどうかで言えば、おれは改行なしのほうがかっこいいと思う。