[表示 : 全て 最新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/

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