【PHP】 Smarty 隔離スレ 【テンプレート】at PHP
【PHP】 Smarty 隔離スレ 【テンプレート】 - 暇つぶし2ch809:803
09/11/27 01:09:41
>>808
あ、親のページでってことですか、、なるほど!
1)ページのテーマ(animalとか)を引き渡されてDBに働きかけるphpを外部化し、
2)それをheader.tplの親のanimal.php, car.phpなどに読み込んで、
3)結果をincludeタグ渡す
って感じでいいかな。
これならデータの取得部分が複数にばらけることもないのか。。
これのデータ取得の順番を変えたものがfunctionでやるってパターンかもしれない

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

810:nobodyさん
09/11/29 07:42:11 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さん
09/11/29 13:22:28
お前は何を言ってるんだ

812:nobodyさん
09/11/29 14:16:45
return "abc";

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

813:810
09/11/29 23:16:09
>>812
functionの中でreturn "abc"; すると、それは返すんです。
なんでかなぁ
>>811
わかりにくかったみたいですみません

814:nobodyさん
09/11/30 09:19:43
functionの中で

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

815:nobodyさん
09/12/02 14:25:43 1PNbu+TX
URLリンク(www.youtube.com)
URLリンク(www.youtube.com)
URLリンク(www.myspace.com)

URLリンク(www.youtube.com)
URLリンク(www.myspace.com)

URLリンク(www.apple.com)
URLリンク(www.jimbeard.com)
URLリンク(www.jimbeard.com)
URLリンク(www.jimbeard.com)
URLリンク(www.jimbeard.com)
URLリンク(www.jimbeard.com)

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

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

818:nobodyさん
09/12/07 16:47:15
だからいったじゃん

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

820:819
09/12/10 15:56:47
なさそうですね

821:nobodyさん
09/12/13 22:00:00
>>820
これだとだめなん?
URLリンク(www.smarty.net)


822:nobodyさん
09/12/13 23:07:04
>>821
ありがとうございました

823:nobodyさん
09/12/15 15:00:29
Warning: Smarty error: unable to read resource:

のエラーが出る際に、

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

824:nobodyさん
09/12/15 15:56:24
とりあえずそれは404じゃない。
$error_reportingを参照したらいいとおもう。

825:823
09/12/15 16:39:30
自己解決しました。

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

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

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

827:nobodyさん
09/12/25 19:02:01
PEARもSmartyも情報は溢れてるよ。
無いのは君の理解力だろう。

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

828:nobodyさん
09/12/25 21:36:44
ソースも結構シンプルだから
謎があったら追い掛けてみたら?

829:nobodyさん
09/12/26 18:39:45
>>827
溢れているとまではいかないんじゃないかと俺は思う

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

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

831:nobodyさん
09/12/27 11:58:44
もし情報がなかったとしたらこのスレがもっと賑わってると思うんだ

832:nobodyさん
09/12/27 13:02:13
いやそもそもSmarty使いの絶対数がすくなうわなにをするやめ

833:nobodyさん
09/12/27 19:56:19
>>831
「もし情報があったとしたら~」なら同意できるんだけどな。

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

834:nobodyさん
09/12/27 21:01:57
コンパイルせず使う方法ないのかな

835:nobodyさん
09/12/29 11:19:04
>>833
コミュニティか・・・
たとえば2chにSmartyスレたてたらいいんじゃないかな

836:nobodyさん
09/12/29 11:34:24
名案だな。

837:nobodyさん
10/01/06 21:51:18
俺もSmartyのしっかりとしたサイトってないなとは思ってた
マニュアルって簡潔にまとめられてるからね

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

838:nobodyさん
10/01/07 09:11:46
書籍は?
日本語で複数出版されてるのは恵まれてる方だと思う。

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

839:nobodyさん
10/01/07 15:20:10
Smartyの本ってある?
Smarty入門しか知らないけれど・・・?

840:nobodyさん
10/01/07 16:37:46
PHPのウェブアプリの本だとSmarty出てきたりするな

841:nobodyさん
10/01/07 23:58:21
Smartyのキャッシュ機能ってなにをキャッシュしてるん?
$smarty->assignで割り当てるのは変数だからキャッシュじゃないし

842:nobodyさん
10/01/08 00:03:40
すまんアホなこと書いた

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



844:nobodyさん
10/01/08 10:58:43
Smartyをカッコよく使いこなす方法

845:nobodyさん
10/01/08 11:57:09
2chで教えて君をしてる時点でかっこわるい

846:nobodyさん
10/01/08 12:11:21
もっとSmartyをスマートに使う方法

847:nobodyさん
10/01/09 17:17:11
使いこなし方まではWebで出てこないな、確かに

848:nobodyさん
10/01/17 19:36:43
Smarty使う場合はdisplay()以降に処理は記述しない方が吉?

849:nobodyさん
10/01/18 03:14:17


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

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

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

852:nobodyさん
10/01/18 14:06:25 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さん
10/01/18 14:25:16
>>852
html_checkboxes使うの?それとも手動でやるの?

854:nobodyさん
10/01/18 15:07:42
>>853
手動です
html_checkboxesのほうがやりやすいのでしょうか?

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

856:nobodyさん
10/01/20 22:11:47 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
10/01/20 23:35:47
すみません、しばらく考えていたのですが、断念することにしました。
拡張も考えてみたのですが、もとがphp4ですから、こちらのPHP環境と合わせて考えると
サブクラスで定義した"クラス定数"をテンプレートから呼び出すことは
おそらく無理と判断しましたm(_ _)m

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

858:nobodyさん
10/01/21 04:40:11
php4だから無理ってどういうこっちゃ?どこに書いてあるん?

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

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

860:nobodyさん
10/01/30 00:48:00
>>859
そんな、あなたにsmarty3の出番ですよ。
プラグインを書く必要ないぞ。

861:859
10/01/30 10:34:45
え、そうなの?プラグイン書かなくていいってどういうことですか?
今は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さん
10/01/30 11:59:30
Smarty3だと{nocache}で囲むだけでいいらしいよ。だから、インサートプラグインいらず。

863:nobodyさん
10/01/30 12:29:50
nocacheなら↓で実現できたヤツですね、最初からあるのとないのでは大違いでしょうが。
URLリンク(www.smarty.net)

864:nobodyさん
10/01/30 14:12:57
Smarty2より遅いSmarty3なんてゴミにしかなりえない

865:859
10/01/30 14:45:10
>>862
キャッシュしたいのでnocacheは用途が違う気がします

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

Smartyの読み込みコスト(時間)を削減する
URLリンク(code.xenophy.com)

867:nobodyさん
10/01/30 16:02:16
意味わかんない記事ですね
効果も0.01秒だし

868:nobodyさん
10/01/30 16:56:45
0.01秒って結構大きいんじゃね?

869:nobodyさん
10/01/30 16:57:37
なんで?

870:nobodyさん
10/01/30 17:23:46
あれ?デカくね?

871:nobodyさん
10/01/30 17:31:09
なんでと聞いているんだ

872:nobodyさん
10/01/30 18:09:30
1回表示するたびに0.01秒だろ
うちのサイトだと0.01秒早くなったら速度2倍だぜ

873:nobodyさん
10/01/30 18:11:35
感じられねーだろw

874:nobodyさん
10/01/30 21:26:36
>>873
濡れ濡れよ

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

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

876:nobodyさん
10/01/31 16:53:46
どんな風にできたらいいの?

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

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

878:nobodyさん
10/01/31 18:01:14
>>877
エラーメッセージでファイルを検索→当該行をコメントアウト

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

880:nobodyさん
10/02/02 14:53:16
Smarty2.6からSmarty3への移行ってlibsの中身変えるだけでいいんですか?

881:nobodyさん
10/02/02 14:54:00
えっ?

882:nobodyさん
10/02/02 16:28:53
string:リソースとforが欲しいだけなんだが、Smarty2に入れてくれ

883:nobodyさん
10/02/03 00:29:48
>>880
互換性はあるとかないとか、
廃止される構文もあるとかないとか

884:nobodyさん
10/02/03 01:26:14
stringリソースは自分で作れ。

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

extend欲しいな。

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

886:nobodyさん
10/02/05 16:09:07
debugとescapeプラグインを数行書き換えるだけで治る。

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

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

889:nobodyさん
10/02/09 13:31:36 Af+mgrun
Smartyで画像の出力ってできる?
"Content-Type: image/jpeg"的な意味で。

890:nobodyさん
10/02/10 09:26:09
プラグイン作れば?

891:nobodyさん
10/02/10 11:02:43
>>889つーか、ここは正攻法でMLに投げるんだ!

892:nobodyさん
10/02/12 16:19:32
>>889
テンプレートファイルの内容を画像データにすればいいんじゃないかな・・・

893:nobodyさん
10/02/12 21:11:24
パーサーが変なの拾って壊しちゃうかと
displayやfetchしてる所でget_file_contentするだけだろ
しょーもな

894:nobodyさん
10/02/12 21:12:15
関数名違うかも

895:nobodyさん
10/02/17 16:31:45
file_get_contents()だな。
確かにSmartyが有用なケースが思いつかない。

896:nobodyさん
10/02/20 12:34:03
MTってSmarty使ってるのか

897:nobodyさん
10/02/20 12:44:55
気のせいか

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

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

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

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

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

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

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

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


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

900:898
10/02/24 09:57:22
>>899
規制でかけなかった・・・

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

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


901:nobodyさん
10/03/03 01:14:47
Tenjin使い始めた。smartyより3倍早いらしい。
フレームワークをやったことなかったけど、比較的わかり易い。

902:nobodyさん
10/03/03 16:18:29

URLリンク(www.kuwata-lab.com)

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

903:nobodyさん
10/03/04 15:15:33 jG8+9EsN
Smarty3はいつになったら出るんだよ。

904:nobodyさん
10/03/05 09:36:42
遅い3はいらない

905:nobodyさん
10/03/06 00:22:27 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さん
10/03/06 01:54:29
UTF-8テンプレートにBOMが入ってんじゃねーの?

907:nobodyさん
10/03/06 08:38:23
ありがとう
その通りでした


908:nobodyさん
10/03/06 10:16:09
自己中マルチはシネよ

909:nobodyさん
10/03/06 11:56:50
すまんね PHPはあんまり慣れてないんだ
普段はGAEでjavaなんだよ
これあげるからシネとかいわないで
URLリンク(mix-tube.appspot.com)

910:nobodyさん
10/03/06 12:20:22
そういう問題じゃないけど許す

911:nobodyさん
10/03/06 13:54:43
さらに宣伝かよ

912:nobodyさん
10/03/07 07:30:25
β8はfinal betaらしいので、次はRC版か

913:nobodyさん
10/03/11 09:30:07
俺の勉強不足かも知れないんだけど、
cache_lifetimeって以下の仕様じゃないんだね

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

914:nobodyさん
10/03/11 17:23:06 TZPJnNmb
削除されるわけないだろ。

915:nobodyさん
10/03/12 13:20:51
じゃ、キャッシュ溜まりまくるけど
どの段階でclear_all_cacheするの?

916:nobodyさん
10/03/12 15:48:13
>>913
同じく削除されると思うのが普通な気がする
セッション管理みたいに

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


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

918:nobodyさん
10/03/12 21:49:30
マニュアル良く読めw


919:nobodyさん
10/03/13 05:31:12
>>918
ん?

920:nobodyさん
10/03/13 13:02:36
cache_lifetime = -1;にしてるオレには関係のない話だな

921:nobodyさん
10/03/13 15:04:04
負荷だいじょうぶか?

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

923:nobodyさん
10/03/13 16:11:51
×キャッシュし続ける
○キャッシュを使い続ける
でした


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch