2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

【PHP】Smarty【Template】

1 :nobodyさん:03/03/10 00:57 ID:NhgrjNBT
このスレ、あってもいいんじゃないかと。

本家(英語)
http://smarty.php.net/

日本語マニュアルとか
http://sunset.freespace.jp/smarty/

2 :nobodyさん:03/03/10 01:01 ID:???
前に無かったっけ?
コンテンツとデザインの分離はしばらく物議かもしそうだし
解決策の1つとしてsmartyいいかもね。

ついでに2げっと。

3 : ◆AngelH/kMI :03/03/10 12:35 ID:???
3げとずさー(AA略

最近使い始めたよ>Smarty
使いこなしていると言えるまでにどれだけかかるやら。



4 : ◆AngelH/kMI :03/03/10 12:47 ID:???
メモ代わりに。
自分が引っかかったところ。

青マンモス本の時点ではループ指定(テンプレート側)するときに
{$loopname/variable}
だったのが
{$variable[loopname]}
になってる。
$varibableが連想配列なら
{$variable[loopname].arrayname}
こんな感じ。



5 :nobodyさん:03/03/11 00:06 ID:???
Smartyって、コンパイル(?)してキャッシュを作るみたいですが、
キャッシュを作らずにHTMLを吐き出す方法はないでしょうか?

6 :nobodyさん:03/03/11 17:04 ID:???
ついに作られたかsmartyスレ。歓迎。

7 :nobodyさん:03/03/11 17:06 ID:???
>>5
よくわからんが、コンパイルされたファイルとキャッシュされたファイルは別物だが。

キャッシュを作らずHTMLを作るとはどういうこと?
毎回コンパイルするようにしたいなら、設定変えればできるぞ。

8 :nobodyさん:03/03/11 17:07 ID:???
日本語のマニュアル
http://sunset.freespace.jp/smarty/

↑ここもマジで感謝!!

9 :nobodyさん:03/03/11 17:09 ID:???
有名なところだと、XOOPS2にsmartyが使われています。

XOOPS 日本の公式サイト
http://jp.xoops.org/

10 :nobodyさん:03/03/11 17:25 ID:???
誰かSmarty[スマテイ]の基本的な使い方を解説してくれ。簡単にな。

11 :nobodyさん:03/03/11 17:32 ID:???
>>10
まず、スマテイをスマーティーと発音する。

12 :nobodyさん:03/03/11 17:38 ID:???
日本語サイトにメリットとして

>より明確にphpのプレゼンテーションからアプリケーションの ロジックとコンテンツを分離して管理する事を容易にします。
>これはプログラマーとテンプレートデザイナーの役割が異なる 状況か、
>たいていの場合は同じ人間ではないのが最良だという事です。

こう書いてあったんだけど、つまり役割が同じ場合はこれ用なし?

13 :nobodyさん:03/03/11 17:52 ID:???
>>11
スマーティー  発音わかった。 
誰かSmarty[スマーティー]の基本的な使い方を解説してくれ。簡単にな。

14 :nobodyさん:03/03/11 17:59 ID:???
>>13
まず、スマーティーをスマーティと発音する。

15 :nobodyさん:03/03/11 18:23 ID:???
>>14
スマーティ♪ マギーシローっぽい。

16 :あぼーん:あぼーん
あぼーん

17 : ◆AngelH/kMI :03/03/11 19:17 ID:???
メモ代わりにドキュメント書いてるんだけど
仕事忙しくてなかなか進まず。

すまんのぅ。

18 :nobodyさん:03/03/11 22:07 ID:???
>>13
ダウンロードしてQUICKINSTALLを読むべし!

19 :nobodyさん:03/03/12 01:12 ID:BE9nbHm+
これでフォームに自動的に値入力(Perl&RubyでいうFillInForm)
の機能があったらかなりイイのだが
も前らPHPではフォームに値付けるのどうされてますか?

PHP版HTML::Template
http://sourceforge.net/projects/phphtmltemplate/

20 :あぼーん:あぼーん
あぼーん

21 :nobodyさん:03/03/12 05:18 ID:???
おまえらなんでsmarty使ってる?

22 : ◆AngelH/kMI :03/03/12 08:47 ID:???
>21
自分の場合はデザインとコードの分離のため。
HTMLを書く人間が別にいる場合、分離していないと
かなり面倒なことになる。

そのあたりの議論は
http://pc2.2ch.net/test/read.cgi/php/990953955/
こっちでかなりやっていた気がする。

23 :nobodyさん:03/03/12 11:09 ID:???
かっこよさそうだから。

24 :21:03/03/12 11:35 ID:???
>>22
そうそう、前そこのスレでsmartyスレ立てようって言ってたんだけど
あんまりユーザがいないようだから。
でもXOOPS2でsmarty採用したから使う人が増えるかもね。


25 :nobodyさん:03/03/12 16:12 ID:???
smartyは、テンプレートプログラミングみたいで、
デザイナーは、はたして使えるのか?と思うけど、
つか、HTMLテンプレートのほうが分かり易いのかな?と思ったり、
両方使った事ある人どう思う?

26 :あぼーん:あぼーん
あぼーん

27 :nobodyさん:03/03/12 17:11 ID:???
php自体がテンプレートみたいなもんじゃん。アホらしい。

28 :nobodyさん:03/03/12 17:31 ID:???
暇つぶしにCでCGIを書いてみたんだが、
perl,phpは楽だよな。>>27のいうことも分かる。
問題はデザイナーが単独でphpスクリプトを修正できるかというと
そこまで簡単じゃないってことだな。
プログラマ・デザイナの両方の負担の釣り合いが取れるところがsmartyなんじゃないの?

29 :nobodyさん:03/03/12 18:11 ID:???
>>28
MVCってのがある。

V(View)はMからデータを呼び出すだけで単独では通常計算を行わない。
と言うことになっている。

表示すべき項目を$dataと言うハッシュに詰め込んで、

「データは<? print($data["name"]);?>で表示させられるよ。」

とか言っちゃえば良いと。

デザイナがJavaScript位は出来るだろうと(Web制作の某スレではこれはデザイナの仕事ではないらしい。(藁)仮定すると
PHPの豊富な制御構造くらい使いこなせるだろう。

こうしてみるとその辺の下手なテンプレート機構より遙かに強力でしかも汎用的だ。


JSPと同じ思想でPHPを使っちゃおうというのが俺の言いたいこと。

30 :nobodyさん:03/03/12 21:31 ID:???
Templateの存在意義とか話すのはスレ違いだろ。
折角Smartyのスレたったんだし、Smartyの話しようや。

31 :nobodyさん:03/03/12 23:50 ID:???
Smartyだけは厳しいと。

32 :nobodyさん:03/03/13 00:42 ID:???
HTML::Templateならそのまま>>29の言うMだけ
をPerlやRubyにできるな。
HTML::Templateのがよくないか?

PHPでテンプレート使うの馬鹿らしいんだけど、テンプレート
前提でコーディングしとくと、渡す直前で値をダンプしてみれば
エラーの原因とか何やってるのかがすぐわかるのよ。

33 :nobodyさん:03/03/13 00:50 ID:???
たしかにPHPでテンプレートってどうなんだろう?

34 :nobodyさん:03/03/13 11:02 ID:???
誰かsmartyで携帯対応なサイト作ってる香具師いる?

35 :nobodyさん:03/03/13 11:10 ID:???
>>32
いや、だからVにテンプレートを採用するかPHPの特性を素直に使うかの違いよ。
両者ともデータチェックはMの最後なりCの最後なりでチェックできる。

36 : ◆AngelH/kMI :03/03/13 13:30 ID:???
>34
微妙に。

>35
まあ、そうだねぇ。
結局は好みの問題。
既存のテンプレートエンジンが気に入らなければ
自分で作ってもいいし、
自分にあうのがあればそれを使えばいいだけ。

自分はループのネスト考えるのがだるくて
既存のものを使ってますが(苦笑
WYSIWYGなエディタでも表示崩れないやつが好き。


あとHTML_Template_ITバージョンアップしてるな。


37 :nobodyさん:03/03/13 13:31 ID:???
>>36
>WYSIWYGなエディタでも表示崩れないやつが好き。

ある?php始めてからもっぱらテキストエディタ派になっちゃいましたが。

38 : ◆AngelH/kMI :03/03/13 13:44 ID:???
>37
川里氏/佐藤氏のPHP4テンプレートクラスライブラリ(改)は
割とそのあたり気を使って作られていたよ。
http://www.daiwakantei.co.jp/pc/tmpl2sa.html
Dreamweaverでは平気だった。

Smartyもうまく使えば大丈夫だと思う。
(というか、テンプレートファイルと画像を置く位置かな)

個人的には
http://sunset.freespace.jp/smarty/
ここにスクリーンショットでてるDreamweaverMXの
extensionに期待。


39 :山崎渉:03/03/13 16:56 ID:???
(^^)

40 :nobodyさん:03/03/15 10:11 ID:???
smartyの良さって、デザインとコードの分離もあるけどさ、
コンパイルされたファイルとキャッシュによる表示速度の速度の向上じゃない?

41 :nobodyさん:03/03/15 12:33 ID:???
>>40
>コンパイルされたファイル
結局は1行ごとにインタプリトされると思うよ。

42 :nobodyさん:03/03/15 23:39 ID:X1LKF8i0
話題ないね

43 :nobodyさん:03/03/16 01:17 ID:???
質問だがsmartyを使ってて中にperlのCGIを埋め込むことできる?

つまりブロックで言うとトップとレフトはsmartyのテンプレなんだけど、
真中のコンテンツの部分をperlのCGI(掲示板)を利用したいわけです。

cgiを呼び出せば、内容は表示できそうですが、POSTとかGETした時
内容を渡せるのか?とか難しそうです。

そんなことしてる香具師いる?

44 :nobodyさん:03/03/16 01:27 ID:???
そもそもsmartyはPHP標準?既にインストールされてるの?

45 :nobodyさん:03/03/16 19:59 ID:???
>>44
されてない。
もともとPHP自体がHTMLに埋め込んで使うものだから、
標準インストールする意味はあまり無さそうだと思う。

46 :nobodyさん:03/03/18 15:26 ID:???
smartyで携帯サイト作ってる奴いる?

47 :nobodyさん:03/03/21 05:00 ID:???
>>43
perlのCGI側でHTML::Templateとか使ったほうがラクじゃないの?

48 :nobodyさん:03/03/21 12:19 ID:???
Smarty使えない鯖なんですが
ほかに標準のテンプレート機能ってあるのしょうか?

49 :nobodyさん:03/03/21 14:56 ID:???
>>48
10スレ前の過去ログも読めないのか…

50 :nobodyさん:03/03/21 19:50 ID:02OewLFo
>>48
Smarty使えない鯖ってどんな鯖?

51 :nobodyさん:03/03/21 19:52 ID:???
>>48
>ほかに標準のテンプレート機能ってあるのしょうか?

PHP

52 :nobodyさん:03/03/21 20:08 ID:???
この中に数人テンプレートの意味がわかってない人がいますね。(w

53 :nobodyさん:03/03/21 20:30 ID:???
>>50
PHPが使えないサーバーか、quotaが1MBぐらいのサーバー。

54 :nobodyさん:03/03/21 20:51 ID:???
テンプレートの本質を理解していない>>52

という印象を受けた。


55 :nobodyさん:03/03/21 21:07 ID:???
>>54
本質を聞きたいといってみる。(w

56 :nobodyさん:03/03/21 21:46 ID:???
>>50
WebARENAだがなにか?

57 : ◆AngelH/kMI :03/03/21 23:50 ID:???
んー。
safemodeがonになっていても使えるけど>Smarty
後使えない可能性ってなんだろう。

58 : ◆AngelH/kMI :03/03/21 23:51 ID:???
というか基本的なことだけど。
「使えない」という状態がいったいどういう状態なのかを
言ってくれないと、アドバイスのしようもない。

59 :nobodyさん:03/03/21 23:56 ID:???
>>58
冷静に考えて、エラーメッセージやエラーの分析を怠る奴がモジュールの導入をミスなくこなしている
可能性は低いと思う。

60 :nobodyさん:03/03/23 16:35 ID:GUMN7n0B
使えないのはSmartyじゃなくて、そいつの頭。


61 :nobodyさん:03/03/24 00:18 ID:???
Smartyってつかったことないが、なんかテンプレートというより
別の構文の言語ってかんじに見える。
おれは patTemplateの方が純粋にテンプレートっぽくって好き。
http://www.php-j.com/tutorial/php/template.php

62 : ◆AngelH/kMI :03/03/24 08:18 ID:???
>61
出来ることが多いから自分も最初は
「何となくめんどくせー」
と思って使ってなかったんだけど、
実際に使ってみるとそうでもないよ。
必要ない機能は使わなければいいし。

header、footer、ループ部分を別にするテンプレートは
WYSIWYGなエディタ使えないので個人的にはあまり…
という感じ。

・Smarty
・PHP4 テンプレートクラスライブラリ改(tmpl2.class.php)
・HTML::Template_IT (PEAR)
自分が使ってみて使いやすかったのはこのあたり。
Smartyで注意することはSJISのテンプレートを使うときに
プリフィルタ/ポストフィルタを使って文字エンコードを変えないと
テンプレート内に「宮」とか書かれてるとエラーになってしまうあたり。
ttp://ns1.php.gr.jp/pipermail/php-users/2003-February/013595.html
このあたり参考に。


63 :nobodyさん:03/03/24 16:20 ID:???
Smarty使ってみた感想は多機能なので面倒です。
おまけに、smarty関連のディレクトリでいっぱいになって、
漏れのような小物野郎には大袈裟すぎと気付きました。
大規模システムには使い道があるんだと思うけど、

誰か、気軽に同封できるような、おすすめテンプレート情報もとむ。

64 :nobodyさん:03/03/24 16:21 ID:F52n5d8W
アホで申し訳ないのだが
Smartyの利用条件とかってあるの?

65 :nobodyさん:03/03/24 16:37 ID:???
売るの? 売っちゃダメだよ。

66 :nobodyさん:03/03/24 17:39 ID:???
食べるのはOK?

67 :nobodyさん:03/03/24 17:52 ID:bvsiZdot
Smartyを利用してるアプリで、売られてるものも多数ある。
ライセンスはGNU LGPLなんでそれさえ守っておけばいい。

68 :あぼーん:あぼーん
あぼーん

69 :nobodyさん:03/03/24 17:59 ID:???
Smartyを売っちゃダメだよ。

70 :あぼーん:あぼーん
あぼーん

71 :nobodyさん:03/03/24 19:30 ID:???
>>67,69
ありがとさんすー

72 :nobodyさん:03/03/25 12:43 ID:FOZw8qka
>>69
そうなの?


73 :nobodyさん:03/03/25 14:04 ID:CVcoKJbJ
smarty 使ってみたよ。
マニュアル翻訳された方、ありがとう&お疲れ様。

PHP自体がある程度テンプレート的な使い方が出来るので、
確かに小規模なプロジェクトでは導入コストに較べてメリットは少ないですね。
プラグインとか使って見たいけど、私も使う機会なさそうだな。

ところで、[php] ... [/php] タグの存在に戸惑っています。
テンプレートとロジックを一緒に管理する事ができますッテ…(汗
テンプレートをコンポーネント化するより、
そのテンプレートを呼び出すメソッドを実装して、
その中に初期化など共通する処理を書いた方がいいと思うのだけど…
どうなんでしょう? php とか php_include タグの評判は。
アイデアは確かにいいんですけど、これって別にSmarty使う必要ないですよね?PHPでは。
ロジックの分離という点に置いては、テンプレートには不要だと思う。

PHPにループ用のタグを導入してくれればいいのになぁ…。

74 :nobodyさん:03/03/25 14:30 ID:???
PHPでテンプレートとか言われるとジェネリックプログラミングを想像してよろしくない。

まぁ、形無し言語でそんなもん語っても仕方ないがしかし・・・。

75 :nobodyさん:03/03/25 16:24 ID:FOZw8qka
PHPという文脈でテンプレートと出てきたら、普通はジェネリックプログラミング
なんて浮かばないって。

PHP5の例外処理サポートが楽しみだ。


76 : ◆AngelH/kMI :03/03/25 23:51 ID:???
強行日程な出張から帰還〜

>73
とりあえず、[php]タグは忘れてるよ(笑
デザイナーにも教えてない。
余計なことされて事故って後から自分が修正・・・とか嫌だし。

というか、自分はデザインとの分離さえ出来ればいいから
変数への代入とループさえ出来れば困らないんだけどね・・・。

77 :nobodyさん:03/03/26 00:11 ID:???
>>76
余計なことができるような設計にしてる方が問題な訳だけれどね。

78 :nobodyさん:03/03/26 05:55 ID:Zn78/v4/
>>77
一応、[php]タグは禁止する事もできるようになってる。
http://sunset.freespace.jp/smarty/SmartyManual_2-5-0RC1J_html/variable.security.html

うっかりセキュリティの脆弱を招かないためにも、
できれば$security = true、これ推奨。

Smartyはちょっと多機能になりすぎてる感があるね。
例えば最近、テンプレートからphpのオブジェクトのメソッドやらにアクセス出来る
機能が追加されたりしたけど、ロジックとデザインの分離が目的なのであれば、
本当は必要ないと思う。Smartyで何でもかんでもやろうとしすぎている。
せっかく他のテンプレートエンジンと比べて、キャッシュやカスタム関数による拡張性が
優れてるんだから、あんまり飛躍しすぎてヘンな事になってほしくないなぁ。


79 :nobodyさん:03/03/26 10:58 ID:???
>>78
あんたの言うビューとロジックの分離はロジックにビューのいくつかの処理をやらせると言うことでは?

80 :nobodyさん:03/03/26 16:43 ID:???
>>79
あんたデザインとロジック一人で全部やってるだろ?(w

81 :nobodyさん:03/03/26 17:17 ID:???
>>80
はいはい、勝てないからって話をそらさない。
 

82 :73:03/03/27 07:18 ID:illH7cXT
[php] タグは見なかったことにしよぉ ... *sight*

> できれば$security = true、これ推奨。
THX これ探していました!!
これで安心してSmarty導入出来そうです(感謝)

>テンプレートからphpのオブジェクトのメソッドやらにアクセス出来る
>機能が追加されたりしたけど、
テンプレートに渡すオブジェクトにはgetメソッドしか実装しない/実行できない様にすれば少しは安全になるかも。
例えば、getDateメソッドに日付の表示フォーマットを引数に指定する等、
テンプレート側で指定できるとちょっと便利かな、と思ったりして。
でも、余計な事が出来てしまうリスクが痛いよなぁ。

ちなみに、テンプレートからオブジェクトのメソッドを呼ぶにはどう記述すればいいんでしょうか?
ドキュメントに、プロパティへのアクセス方法は見つけたのだけど…、
versionが古いのかな。見つけられませんでした<2.3.1です
昨日 2.5.0 RC2 リリースされたみたいなので updateしておこぅ〜っと。

>>79
それって、コンポーネント化と逆の発想?それとも、
例えば、「メールアドレスがある場合、名前にリンクを張る」という処理を
処理してからテンプレートに送るのか、テンプレート側で処理するか、って事ですか?

>>79-81
論点が解からない…。77, 78 は、自分には「Smarty本体には、デザインとロジックの分離の利点を損なう実装を許すような
余計な拡張機能は必要ない」という風に聞こえるのですが、何か勘違いしてる?フォローお願いします。

83 :nobodyさん:03/03/29 15:15 ID:CQcFf7wk
73さん

Smartyで開発するときに注意したほうがいいこと(プログラマと
デザイナの取り決めなど)があったらお教え願えませんか?

(当方PHPは一週間の初心者ですが、今後社内のデザイナと
協力して社外向けWebプログラムを開発します)


84 :73:03/03/29 23:32 ID:5Ovapm1S
>>83
当方も、smartyは1週間の初心者です。
どちらかと言うと、教えてもらいたい側の人なのですが、
導入時に考えていた事を叩き台に書き出して見ます。
参考になればいいけど・・・。

まず、注意しないといけない事って、XSS問題とかですよね。
テンプレートに渡す値がエスケープされてるかどうか、
それとも、テンプレート側でエスケープするのか等。
セキュリティの問題の他にサイトのレイアウト崩壊とかも、
XSSで(重要度は違えど)起こり得るので、デザイナの方の理解を得て、
明確にしておいた方がいいとおもう。
セキュリティがデザイナさんの作るテンプレートに依存してしまう状況
というのは、ちょっと怖いので。

それと、情報の隠匿。社内のデザイナということなので、リスクは少ないと思いますが。
でも、不用意にオブジェクトをテンプレートに渡したりて、余計なところにアクセスされたりすると困るかも知れないので。
私も、>>76,>>78 に習って、
”デザイナーには教えない”,”設定で禁止する”と言う方針を見習おうかと思っています。

ところで、grep -E '{.+?}' *.tpl でテンプレート内の埋め込み文全部拾えるかな?
テンプレートの簡単なチェック・スクリプト作っておくと便利かも知れない。
実際の動作テストは、別に用意する必要あるだろうけど。


85 :73:03/03/29 23:34 ID:5Ovapm1S
以下、自己補足。

>>73 コンポーネントで管理すること自体は便利な場合もあるけど、
テンプレート内にコードを含めるのは、自分にとってはリスク。
どうしても必要な場合は、[php]タグより include_php を使お〜っと。
上級ユーザではないので、コードが混ざったテンプレートを保守出来る自信ない;;
それに、テンプレート導入の利点がなくなるし。

> テンプレートからオブジェクトのメソッドを呼ぶ
Document 15. Advanced Features -> Objects 内に見つけましたm(_ _
テンプレートから利用できるプロパティ/メソッドを制限できるみたいなので、
セキュリティ面での心配は杞憂だったみたいです。


86 :あぼーん:あぼーん
あぼーん

87 :nobodyさん:03/03/30 06:50 ID:7nc9kl8w
>>84, 85
ご意見ありがとう。

デザイナーにphpタグを教えると、
「私にプログラム組めっていうのかさぁ」
とか言われそう(^^;
コード保守上も、Simple is Best だと思いますから、
phpタグは使わないようにしたいと思います。
(というか、ふつう最初からphpタグ使おうなんて考えないでしょうね)

「XSS」という言葉が理解できません。教えてください。

それから、Smartyはコンパイル処理があるようですが、
漢字コードが含まれていても大丈夫なのでしょうか?
(SJIS、EUCともOK?)


88 :nobodyさん:03/03/30 10:11 ID:ho1IX9Y5
XSS クロスサイトスクリプティング、かな。

89 :nobodyさん:03/03/30 10:30 ID:???
横からスマソが、俺はCSS以外にXSSっていう書き方もあるって言う事は知らなかった。
クロス=Xなのね。
ひとつおりこうになれたYO
ありがd

       /■\
   ∧_∧ (;´Д` )
    (・ω・)丿 ッパ
.  ノ/  /
  ノ ̄ゝ
いっしょにおにぎりたべませんか?

90 : ◆AngelH/kMI :03/03/30 10:33 ID:???
>>87
>それから、Smartyはコンパイル処理があるようですが、
>漢字コードが含まれていても大丈夫なのでしょうか?
>(SJIS、EUCともOK?)

>>62を参考に

91 :nobodyさん:03/03/31 13:53 ID:D0ex7lz/
>>89
CSSじゃCascading Style Sheetsと紛らわしいからね。


92 :nobodyさん:03/03/31 18:47 ID:???
今度からXSSにしよう。

93 :nobodyさん:03/03/31 18:48 ID:???
ごめんなさい。3つ上を見てなかった。

94 :nobodyさん:03/04/02 04:49 ID:???
漢字コードについては、
SJISの2バイト目に { や } が含まれることがある問題ですよね?
デリミタを、文字コードに依存しない他の文字に変更する。
文字コードに依存する部分は全て別のリソースにする。
等も、別の解決策として選択肢にいれておいてもいいのでわ。

95 :nobodyさん:03/04/03 18:46 ID:???
>>63 誰か、気軽に同封できるような、おすすめテンプレート情報もとむ。
http://hoover.ktplan.ne.jp/kaihatsu/php/index.php?type=top
これわかりやすくていいよ。
DW上でも埋め込めるし。

96 :nobodyさん:03/04/04 04:21 ID:CWbmmlFZ
テンプレートの中で他のテンプレートをインクルード
しています(ヘッダとフッタを入れている)。

すべての画面でデザインを統一しようとすると、どんな
小さな画面でもテンプレートにしてやらないと、ヘッダと
フッタが表示されません。
これでは非常に面倒なのですが、何かよい方法はない
でしょうか?


97 :nobodyさん:03/04/04 11:37 ID:???
>>96
テンプレートをメインスクリプトあたりから直接弄ろうとしているからいちいち面倒なんだよ。
viewクラスを作って、「ヘッダとフッタはいつもの奴、メインボディはこれで」って感じで渡して
やればいいんじゃない。

#説明ベタ&Smartyは使ってないので外しているかもしれんが

98 :nobodyさん:03/04/05 05:35 ID:WWynoIxP
>>97
あそっか。
Smartyクラスをextendsしたクラスをつくって
やればいいわけですね。

たいへん参考になりました。ありがとう!


99 :nobodyさん:03/04/09 02:13 ID:???
/www/index.tpl
/subdomain/index.tpl

とか別ディレクトリに同じ名前のテンプレートがある場合は、
どーすればよいの?

同じSmarty.class.php は使えないのかな?


100 :nobodyさん:03/04/10 15:06 ID:Gsybxm64
>>99
98と同じ回答でいけるよ。

Smartyクラスをextendsした自分のクラスのコンストラクタ
で、各ディレクトリを指定してやればよいと思うが。

101 :あぼーん:あぼーん
あぼーん

102 :nobodyさん:03/04/12 10:21 ID:1gFMXfRc
2.5.0 release age

103 :nobodyさん:03/04/13 03:48 ID:???
>>100
回答ありがとうなのだが、意味がわからんので勉強してきまつ

104 :山崎渉:03/04/17 12:05 ID:???
(^^)

105 :nobodyさん:03/04/20 21:11 ID:PaIMcwUL
同じ テンプレート名は許されないのか???

同じ名前のテンプレートを違うディレクトリに置いて使っていたのだが、
まったく意図しない動きになりびびった。

106 :nobodyさん:03/04/20 21:22 ID:???
>>105
結局どのように対処しましたか?

/public_html/www/index.php
/public_html/sub/index.php
/public_html/info/index.php

などサブドメインを作りたいんですけど、個別にインストールするのも
メンテ性が悪いですし…

107 :105:03/04/20 22:15 ID:???
ttp://smarty.php.net/manual/en/installing.smarty.extended.php
のようにラッパークラスを作ったり、

あとは、いちいち 

$smarty = new Smarty;
$smarty->compile_dir = "/path/to/somewhere";

のようにディレクトリをしていしたりとか。。。

でも、めんどくさい。

ていうか、同じテンプレート名が使えないってのは仕様なんですか?
最初バグかと思ったんですが。

108 :nobodyさん:03/04/23 01:25 ID:???
>>107
ここに書いてあった。

異なるディレクトリに置かれたテンプレートを使用する方法
http://sunset.freespace.jp/smarty/

109 :nobodyさん:03/04/23 01:29 ID:???
>>108
読んでみたがいまいちよくわからんかった。

結局
>display() の引数 compile_id, cache_id を利用する事で可能となる。
この場合のやり方は、どうするの?

>1つのSmartyを複数のプロジェクトで使用する場合は、display( PROJECT_TPL_DIR . 'index.tpl'); とかになるのかな?

??
どういうことなのでしょうか?

110 :nobodyさん:03/04/23 05:14 ID:/AFbvcV5
>>107-109
横からすみません。。。

アプリごとにラッパークラスを作って、その中で
$template_dirを指定すればいいと思いますが、
何か問題があるのですか?


111 :あぼーん:あぼーん
あぼーん

112 :nobodyさん:03/04/23 08:06 ID:???
ようするに人それぞれか?


113 :nobodyさん:03/04/27 07:29 ID:???
>>107-
俺の場合たいていこうしてる

display($template_file, $_SERVER[REQUEST_URI], $_SERVER[REQUEST_URI]);

114 :nobodyさん:03/05/02 19:49 ID:rrWLpWsV
今日からSmartyを触り始めたものです。設定について
ttp://sunset.freespace.jp/smarty/SmartyManual_2-5-0J_html/
の「基本的なインストール」をみながら設定しました。

上記に沿ってテスト用のファイルを作成して表示してみましたが
下記のようなエラーが出てしまって困っています。
Warning: Smarty error: unable to read template resource: "smarty_test.tpl" in /usr/local/lib/php/Smarty/Smarty.class.php on line 1042

Smarty.class.phpファイルの1042行目あたりは以下のとおりでした。
-------------------------------
function trigger_error($error_msg, $error_type = E_USER_WARNING)
{
trigger_error("Smarty error: $error_msg", $error_type);
}
-------------------------------
何が問題なのでしょうか。

環境:
 RedHat 7.3 Apache 1.3.27
 PHP 4.2.3 multibyte
 PHPlib 7.4-pre1 Smarty 2.5.0 Source


115 :114:03/05/02 19:53 ID:rrWLpWsV
続きです。
設定は以下のようにしました。

Smarty本体は以下のように格納しました。
/usr/local/lib/php/Smarty/Smarty.class.php
/usr/local/lib/php/Smarty/Smarty_Compiler.class.php
/usr/local/lib/php/Smarty/Config_File.class.php
/usr/local/lib/php/Smarty/debug.tpl
/usr/local/lib/php/Smarty/plugins/*.php

webサーバのドキュメントルートに以下のようにフォルダを作成し、chmod 770しました。
/usr/local/apache/htdocs/php/smarty/
/usr/local/apache/htdocs/php/templates/
/usr/local/apache/htdocs/php/templates_c/
/usr/local/apache/htdocs/php/cache/
/usr/local/apache/htdocs/php/configs/

php.iniの設定は下記のとおりです。
include_path = ".:/usr/local/apache/htdocs/phplib/php:/usr/local/lib/php/Smarty/"

ttp://sunset.freespace.jp/smarty/SmartyManual_2-5-0J_html/installing.smarty.basic.htmlExample
上記のサイトの「2-2. Smartyのインスタンスを作成する」のとおり
テストしてみましたがSmarty.class.php file could not be found という
エラーは出ませんでした。

116 :114:03/05/02 19:54 ID:rrWLpWsV
更に続きです...

テスト用に下記のようにファイルを設定しました。
templatesフォルダ内に「smarty_test.tpl」
----------------
{* Smarty *}
<html><body>
Hello, {$name}!
</body></html>
----------------

smartyフォルダ内に「smarty_test.php」
----------------
<?php
require('Smarty.class.php');
$smarty = new Smarty;
$smarty->template_dir = '/usr/local/apahce/htdocs/php/templates/';
$smarty->compile_dir = '/usr/local/apahce/htdocs/php/templates_c/';
$smarty->config_dir = '/usr/local/apahce/htdocs/php/configs/';
$smarty->cache_dir = '/usr/local/apahce/htdocs/php/cache/';
$smarty->assign('name','Ned');
$smarty->display('smarty_test.tpl');
?>
----------------
もー何が何やら( ´д`;)
ナガクテスマソ...

117 :nobodyさん:03/05/03 13:57 ID:???
debug onにしてやってみたら?

多分PATHが間違ってるだけか、パーミッションの問題のような気がするけど。
ファイルのオーナーはどうなってる?
あと、セーフモードはon?off?

118 :114:03/05/03 17:06 ID:ucISI8En
>117 レスThanks!
debug on ってphp.iniの設定でつか?
セーフモードはoffです。
パーミッションとファイルのオーナーは普通に
アップロードダウンロードできるんで問題なさそうな気がしますが
そういう問題じゃないでしょうか?

エラーの内容がSmarty.class.phpが違ってるって事だったんですが
やっぱりパスのせいなんでしょうか?
パス違ってたら最初から読み込めないんじゃないかと思ったんですがいかがでしょう?

119 :あぼーん:あぼーん
あぼーん

120 :nobodyさん:03/05/04 12:42 ID:???
>>118
debug onはSmartyの。今はあんま関係ないかも。

パーミッションは、UL,DL関係ない。
apacheがtemplates_c とか cache に書き込めるかが重要。 だけど、これも違うエラーがでるから関係ないかな。

Warning: Smarty error: unable to read template resource: "smarty_test.tpl" in /usr/local/lib/php/Smarty/Smarty.class.php on line 1042
をそのまま訳すとテンプレートのリソースが読めん!!ってことだから、

templates/smarty_test.tpl が読めないんでしょ?

だから、smarty_test.tpl のパーミッションか、
その上位ディレクトリのバーミッションじゃない?

121 :114:03/05/04 21:05 ID:PMPOUjrA
> 118 レスThanks!!

> templates/smarty_test.tpl が読めないんでしょ?

なるほど!Smarty.class.phpが違ってるって事じゃないんですな。

> だから、smarty_test.tpl のパーミッションか、
> その上位ディレクトリのバーミッションじゃない?

templates/ あたりは全部115に書いたとおり770にしました。
青マンモス本には700に書いてあったんで、そっちも試したけど同じでした。

問題はsmarty_test.tplファイルのパーミッション。
このファイルは、WindowsXPで作成して、FFFTPで該当ディレクトリにアップしました。

その後は、そのままで全くいじってないんだけど、このままだと
もしかして書き込みができないから駄目とか??
.tplファイルはアップロードしたら権限を修正するべき物でしょうか?

122 :あぼーん:あぼーん
あぼーん

123 :nobodyさん:03/05/05 01:21 ID:???
>>121
パーミッションを全部書いてみ。

templates_c は777でないと動かない時があるって、QUICKINSTALLかなにかに
書いてあったの読んだ?

templates_c,cache のファイルオーナーが、Webサーバと同じにならないなら、
777でないとダメじゃなかったっけ?

わからんのなら、全部777にしてみろ。

124 :114:03/05/06 10:47 ID:aSOV5r0L
>123 ありがとうございます。

templates_c は777でないと動かない時があるって言うのは知りませんでした。
とりあえず、全部777にしてみました。実行結果は同じエラーでした。
パーミッションとディレクトリ構成はこんな感じです。

/usr/local/apache/htdocs
--Webファイルをおくディレクトリでユーザとオーナーはwwwです。

この中にphpというディレクトリがありパーミッションは以下のとおりです。
/usr/local/apache/htdocs/php
drwxrwxrwx 7 www www 4096 5月 2 19:35 php

このphpフォルダ内に、smarty用のディレクトリを入れ777にしました。
drwxrwxrwx 2 www www 4096 5月 2 17:53 cache
drwxrwxrwx 2 www www 4096 5月 2 19:19 configs
drwxrwxrwx 2 www www 4096 5月 2 18:16 smarty
drwxrwxrwx 2 www www 4096 5月 2 19:18 templates
drwxrwxrwx 2 www www 4096 5月 2 17:53 templates_c

テンプレートディレクトリ内に下記ファイルがあります。
-rwxrwxrwx 1 www-data www-data 56 5月 2 19:24 smarty_test.tpl

もしかして、これらのディレクトリはWEBファイルを置くディレクトリ
直下に置かないとダメなんでしょうか?それとも、WEBファイルを置くディレクトリの
外に置くべきものだったりしますか?ここ読んでるんですが↓
http://sunset.freespace.jp/smarty/SmartyManual_2-5-0J_html/installing.smarty.basic.html
青マンモス本と書いてある事が微妙に違っていて、よくわからなくなってしまいました。。。
とりあえず、全部削除してもう一度始めから設定しなおしてみます。


125 :あぼーん:あぼーん
あぼーん

126 :あぼーん:あぼーん
あぼーん

127 :114:03/05/06 16:37 ID:aSOV5r0L
とりあえず、下記のようにすることでできるようになりました。
ありがとうございました。

アプリケーション用のSmartyのディレクトリをドキュメントルートの外に作成。
 templates/ templates_c/ configs/ cache/
cache/ templates_c/にwebサーバのオーナとユーザに設定し、
cache も templates_c も777で設定。

これで、下記の拡張セットアップまでできました。
http://sunset.freespace.jp/smarty/SmartyManual_2-5-0J_html/index.html



128 :114:03/05/06 16:39 ID:aSOV5r0L
しかし >>127 のような構成になっていると、templates/が、ドキュメントルートの
外なので tplファイルがWindows側からアップロードできません。

マニュアルによれば、「セキュリティの心配を避けるためにドキュメントルート外に
これらのディレクトリを配置する事が推奨されます。」とあるので
ドキュメントルートの中においてもセキュリティ面を除けば問題ないんじゃないか
と考えて、再度ドキュメントルート内に設定してみました。

ドキュメントルート内のSmarty用のディレクトリと、ファイル全てを
パーミッションを777、webサーバのオーナとユーザに設定しましたが
やはり >>114 のようなエラーが出てしまいます。

Warning: Smarty error: problem writing temporary file '/usr/local/apache/htdocs/smarty/php/cache//%%306/%%30660664/3eb76264e8132' in /usr/local/lib/php/Smarty/Smarty.class.php on line 1042
Hello, Ned!

ドキュメントルート内に置くのは不可なのでしょうか?
他の方はtplファイルのアップロードはどうなさっているのでしょうか?
Webサーバで直接書いてらっしゃるのでしょうか?
何度もスミマセン。

129 :nobodyさん:03/05/06 18:19 ID:6G0ArJzR
>>128
ドキュメントルートより1つ上の階層にファイルを
アップロードできないってのがなんか違うな。


130 :nobodyさん:03/05/06 19:48 ID:???
>>128
なんでアップできないかがよくわからんな。
そんなことありえないと思うが、どのようにできないわけ?

で、そのエラーはやっぱりパーミッションの問題だ。
templates_c 以下にできるファイルのオーナーが違うでしょ?

131 :114:03/05/07 11:05 ID:ejEp7kPZ
>129サン >130サン レスアリガd

> で、そのエラーはやっぱりパーミッションの問題だ。
> templates_c 以下にできるファイルのオーナーが違うでしょ?

おっしゃるとおり、オーナー違ったし書き込み権限もなかった(´・ω・`)
ここの拡張セットアップ↓を使わなければうまくいくようになりました!
http://sunset.freespace.jp/smarty/SmartyManual_2-5-0J_html/installing.smarty.extended.html

ドキュメントルートより1つ上の階層にファイルをアップロードできないって変ですか?
/usr/local/apache/htdocsここの一つ上だから
/usr/local/apacheここがFTPした時に見えないってことですけど。

FTPの設定を変えたら見えるようになると思いますが、それって危険ではないかな?
そういうことじゃないでしょうか??あれれ?

132 : ◆AngelH/kMI :03/05/07 13:30 ID:???
>>131
というか、そのあたりのファイルはユーザ別に作って
そのユーザのディレクトリに入れた方がいいのでは・・・。

ドキュメントルート
/home/username/www

Smartyのコンパイルディレクトリ
/home/username/lib/templates_c

自分ならこんな感じ。


133 :114:03/05/07 15:32 ID:ejEp7kPZ
>131san ありがとー!

なるほど。ユーザディレクトリ使えばできますね。
それでやってみます!

みなさん、長いことお付き合いいただきありがとうございました!
おかげさまで無事設定できそうで、大感謝です!

134 :あぼーん:あぼーん
あぼーん

135 :nobodyさん:03/05/08 10:29 ID:???
>>133
もし感謝してるなら、自分が色々わかるようになった時、他にわからない人がいたら
やさしく教えてあげるようにしてねー。

136 :114:03/05/08 13:03 ID:???
>135
オオー!素敵なコメントありがとう!
もちろん、絶対恩返しします!

137 :nobodyさん:03/05/15 22:03 ID:???
>>135
ほんとうに素敵なコメントだ。
きみ、人間としてすばらしいよ。
心が洗われた。

138 :135:03/05/16 10:49 ID:???
>>136-137
そのコメントは僕の考えたコメントじゃないんですけどね…
僕も今まで色々質問ばかりしてきて、たくさんの親切な人にいっぱい教えて
もらいました。その時言われたのが>>135のような言葉です。

多分UNIX系の方々の考え方だと思いますが、僕もその考えに賛同して、
その恩を他の困っている人に返しています。

UNIX板など行くと商業サポートかと思うくらい、質問に答えてばかりの人が
いますが、多分その方も誰かから色々教わったたり、フリーソフトウェア、
オープンソフトウェアの恩を返しているんだろうなぁと思います。

#smartyというこんなに労力のかかっているソフトを無料で配布している
作者さんに対しても恩を返していることになるのかなぁ…

139 :nobodyさん:03/05/21 19:08 ID:p8eRICbY
ちょっと質問です。
ひとつの変数を使いまわして、新たな値を入れたい時は、
毎回clear_assign()使った方がいいんでしょうか?
使わなくても動いてるみたいだけど。。。

140 :あぼーん:あぼーん
あぼーん

141 :139:03/05/21 19:13 ID:p8eRICbY
も一つ質問です。
Smartyって、if とか loop が使えるじゃないですか。
これってとても便利なんですが、デザイナーさんもこういうのをある程度は
理解しないといけないですよね。

そうするとデザインとロジックの分離からちょっとずれてしまう気がするんですが
実際デザイナさんと作成されている方はこの辺どうされてるんでしょうか?

142 : ◆AngelH/kMI :03/05/21 20:46 ID:???
>>141
if文は使ってないなぁ。
loopは使えないとお互い不幸になりそうなので使ってます。

・とりあえずloopとか変数とか無しでデザイン作ってもらう
・その後、自分がloop箇所や変数箇所を追記・修正
・デザインや文章に変更が生じた場合、命令部を破壊しないように変えてもらう

自分はこんな感じでやってるよ。

143 :山崎渉:03/05/22 01:57 ID:???
━―━―━―━―━―━―━―━―━[JR山崎駅(^^)]━―━―━―━―━―━―━―━―━―

144 :139:03/05/22 10:34 ID:???
>142 san
ありがとうございます。
デザインが先で、あとは {...} が付いている所はさわらないで
もらうって感じですね。

if 文使ってないというのは、例えば、状況によって画面の表示を変えたい時
どのようにされてるんでしょうか?権限によって画面を変えたいときとか。

145 : ◆AngelH/kMI :03/05/22 11:50 ID:???
>>144
>権限によって画面を変えたいときとか。
ファイルそのものをわけちゃう。
Dreamweaver等でデザインファイル(html)をみるときもその方が
見やすいと思うのだけどどうだろう。

このあたりは人によって開発手法違うだろうから
他の人の意見も聞きたいなぁ。

146 :nobodyさん:03/05/22 19:56 ID:???
サブディレクトリ、またはサブドメインごとに軽くデザインを変えるようなシステムを
みなさんはどのように作っていらっしゃいますか?

自分も今作っているのですが、設定ファイルがあちこち行ってしまって複雑になってしまい
ました。
title,descriptionなどを入れた、configs/sub.conf
サブごとのラッパークラス includes/sub.lib.php
そして、各phpファイル www/sub/index.php

みなさんはどのようにやっているんですかねぇ?

147 :あぼーん:あぼーん
あぼーん

148 :あぼーん:あぼーん
あぼーん

149 :あぼーん:あぼーん
あぼーん

150 :山崎渉:03/05/28 17:07 ID:???
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎――◎                      山崎渉

151 :nobodyさん:03/05/31 13:59 ID:???
>>146

スクリプトファイルとテンプレートファイルを同じディレクトリに置いて管理してます。結局これが自然な気がします。ヘッダやフッタのような共通ファイルは別場所でまとめて管理。
PEAR を継承してテンプレート制御用のクラスを作りその中で Smarty を初期化してます。
この中で例えば $obj->smarty->display() のような関数に対して $obj->display() のようなラッパーを作り、そこで template_dir や compile_id の制御を行います。
でそのクラスをさらに extends して特定ブロックごとに合わせています。
実行はこんな感じ。
$tpl = new TemplateAreaName;
/* .. snip.. ここで処理&変数のアサインを行う */
// レンダリング
$tpl->showHeader();
$tpl->showMenu();
$tpl->display('index.tpl');
$tpl->showFooter();

152 :nobodyさん:03/05/31 19:10 ID:???
>>151
>スクリプトファイルとテンプレートファイルを同じディレクトリに置いて管理してます。

なるほど。確かに更新するとき、両方のディレクトリを行き来したりする必要はなくなりますね。
これだと、テンプレートファイルも外から見えますよね?
問題ないんですかね。


153 :nobodyさん:03/05/31 20:19 ID:???
>>152
う〜ん、、どうなんでしょう。今回 Smarty を初採用し、アプリケーションの完成度も 40% というところなので正直手探りでやっています。
もっと良い方法があればいいのですが。

ご指摘の危険性は考えましたが元々テンプレートをさくさく差し替えれるようにテンプレートには極力情報を埋め込まないようにしており、
テンプレートへの直接のアクセスも拡張子によるアクセス制限で回避出来ると思ってこの方法でやっています。

154 :nobodyさん:03/06/01 12:57 ID:???
>>152
もう一つ思い出しました。
テンプレートの先頭にスクリプトを埋め込むか、テンプレートをPHPとして認識させて define などを使ってダイレクトアクセスを防ぐ手段も考えられます。
PHPBB のライブラリとかこういうやり方だったような。

155 :nobodyさん:03/06/07 06:42 ID:dfQas5D8
Smarty 2.5.0 を、PHPのsafe_mode="On"で実行すると、warningが出るのですが、
これは私だけ?
確か、Smartyクラスモジュールの2691行目だったと思います。


156 : ◆AngelH/kMI :03/06/07 09:08 ID:???
>>155
$smarty->use_sub_dirs = false;
で回避できない?

意味はマニュアル参照。

157 :nobodyさん:03/06/10 07:06 ID:Fwh1UjxU
>>156
$smarty->use_sub_dirs = false;
やってますが、それでもwarning出てしまします。
ほかに思い当たる情報があればお願いします。

158 :あぼーん:あぼーん
あぼーん

159 :あぼーん:あぼーん
あぼーん

160 :あぼーん:あぼーん
あぼーん

161 : ◆AngelH/kMI :03/06/10 17:19 ID:???
>>157
というかそのwarningの内容出してくれないと何とも。
cacheディレクトリとtemplates_cディレクトリに
書き込み権限与えてる?

162 :nobodyさん:03/06/12 18:20 ID:???
smartyで他のサイトのXOOPSのRSSを表示しようとしています。

googleで調べて、magpieというのがあったので、それを使おうとしています。
が、日本語が文字化けしてしまうので、変換させたいのですが、どこでどう変換させれば
いいのかがわかりませんでした。

以下が、smarty用サンプルコードをいじったものです。

$url = $_GET['rss_url'];
if ( $url ) {
// assign a variable to smarty for use in the template
$smarty->assign('rss_url', $url);
$rss = fetch_rss( $url );
// if fetch_rss returned false, we encountered an error
if ( !$rss ) {
$smarty->assign( 'error', magpie_error() );
}
//ここは文字化け対策成功
$rss->channel['title'] = mb_convert_encoding($rss->channel['title'], "EUC", "auto");

foreach ($rss->items as $item) {
//ここでどのような変数に代入すれば良いのでしょうか?
$title = mb_convert_encoding($item['title'], "EUC", "auto");
}

$smarty->assign('rss', $rss );
$item = $rss->items[0];

$date = parse_w3cdtf( $item['dc']['date'] );
$smarty->assign( 'date', $date );
}


163 :nobodyさん:03/06/13 04:36 ID:???
自己レス

foreach ($rss->items as $key=>$item) {
$rss->items["$key"]['title'] = mb_convert_encoding($item['title'], "EUC", "auto");
}

でOK。

164 :nobodyさん:03/06/20 01:36 ID:22HNzffu
mb関数使えない鯖で半角カタカナ全角にできるの?

165 :nobodyさん:03/06/20 10:35 ID:???
>>164
できるよ

166 :nobodyさん:03/06/22 01:38 ID:9+GBIMXB
>>165
どーやんの?


167 :nobodyさん:03/06/22 08:43 ID:???
>>166
http://www.spencernetwork.org/

168 :nobodyさん:03/06/28 01:23 ID:M0QDMJtS
>>167
わかんねー

169 :あぼーん:あぼーん
あぼーん

170 :あぼーん:あぼーん
あぼーん

171 :あぼーん:あぼーん
あぼーん

172 :あぼーん:あぼーん
あぼーん

173 :あぼーん:あぼーん
あぼーん

174 :あぼーん:あぼーん
あぼーん

175 :あぼーん:あぼーん
あぼーん

176 :nobodyさん:03/07/12 19:16 ID:P6mY9BCG
age

177 :nobodyさん:03/07/13 01:15 ID:iGC1lgy5
Smartyってどれくらい普及してんだ?
使われているサイト知ってる?

178 :nobodyさん:03/07/13 13:49 ID:???
>>177
自分の個人サイトだったら、ほぼ全部のページで使ってますが・・・

179 :nobodyさん:03/07/13 14:05 ID:Qv0LVgul
PHPから別ウィンドウを立ち上げる事ってできるんでしょうか?
例えば、エラーチェックを行って、エラーに引っかかると
別ウィンドウでエラー内容を表示する、等
require もしくは header 関数を利用して。
もしくはそれ以外の関数、コーディングで。
Ncurses関数は客の鯖問題でPHPをリコンパイルできません。。

180 :あぼーん:あぼーん
あぼーん

181 :nobodyさん:03/07/13 14:14 ID:48FuQ70+
>>179
今手元にないから分からないけど、
"Professional PHP プログラミング"に、それらしい例がのっていたような。

182 :nobodyさん:03/07/13 14:17 ID:Qv0LVgul
>>181 さん
早速ありがとうです。
調べてみます


183 :nobodyさん:03/07/13 15:19 ID:???
http://pc2.2ch.net/test/read.cgi/php/1057947512/12
smartyと関係ない上にマルチポスト

184 :nobodyさん:03/07/13 16:23 ID:???
MLにもポストしてたような?
できるの?コレ?

185 :山崎 渉:03/07/15 11:07 ID:???

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄

186 :nobodyさん:03/07/15 17:55 ID:wTgTaT8B
おお、久々にWebProg板に来たらSmartyのスレが。
コンテンツとデザイン〜の1です。

>>177
一応は本家公認のテンプレートエンジンって扱い(ですよね?)なので、海の向こうでの
使用頻度は高いんじゃないかと思います。xoopsに採用という実績もありますし。
国内でも自分みたいな糞田舎の情報システム部ですら2年前から使ってるので、それなりに
普及していると思いますよ。googleでも随分引っかかるようになってきましたね。

187 :nobodyさん:03/07/16 00:47 ID:???
DBからデータ持ってきてappendしてページ作ってる場合、
APCとかZendOptimizerとか使える?

188 :nobodyさん:03/07/21 14:35 ID:???
Smarty 使ってると何故かソースコードの記述が勝手にアサインされてるような、、
全く assign していない PEAR::raiseError のようなエラー処理の記述や print 文で勝手にエラー吐いてくれまつ。



…… Smarty のコードまで潜って 1h ほど戦って気付いた。
$tpl->display('hoge.php');
拡張子が .tpl ぢゃなくて .php で別ファイル指定してた。鬱だ氏のう _| ̄|◯

189 : ◆AngelH/kMI :03/07/22 08:14 ID:???
>>187
別に問題ないかと。
APC1の頃は大丈夫だったし
現在はmmcache使ってるけど大丈夫だよ〜。

190 :nobodyさん:03/07/22 15:11 ID:???
素朴な疑問。
appendとassignって何が違うんでしょう?

191 :nobodyさん:03/07/22 17:16 ID:???
>>189
サンクス。やってみまつ。

>>190
assginは代入、みたいな。
appendはarray_push()、みたいな。

192 :nobodyさん:03/07/28 23:09 ID:Qst4s2Al
Smartyって、ページ全体のキャッシュじゃなく、
ページの一部分だけキャッシュのすることってできないですか?

自分、いわゆる「ぱんくず(※)」をキャッシュにしたいんですよね・・・

※トップページから現在のぺージまでの道筋を表したもの。
例)Yahoo!とかだと

ホーム > コンピュータとインターネット > ソフトウェア > インターネット > WWW > ブラウザ

っていうあれね。

193 :nobodyさん:03/07/28 23:36 ID:zAmscCpE
最高画質が揃った最高のサイトオープン!?
http://www3.free-city.net/home/espresso/white-snow.html


194 :nobodyさん:03/07/29 17:31 ID:aKRM8GxJ
>>192
insertを使えば出来る。
http://sunset.freespace.jp/smarty/SmartyManual_2-5-0J_html/language.function.insert.html

カスタムプラグインでテンプレート内に{breadcrumb 現在の位置="hoge"}ってかくと
自動でずらっとパンくず表示してくれるの作ったけど便利だよ。
他のサイトにも再利用できるし。


195 :nobodyさん:03/08/01 14:03 ID:???
テンプレートのデザインをいじる人にIBMホームページビルダーを
使わせたいんですが、Smartyタグのデリミタは何が無難でしょうか。

ページ内にCSSを書くこともあるのでデフォルトの { } は使わせたく
ないし、XOOPS2 なんかで定義されている <{ ]> でもいいかなと
思ったけど、< なんかに自動的に置換されてしまわないかと心配
です。それに、modifierのパラメータを " で囲むと " に置換
されるもよう。


196 :山崎 渉:03/08/02 02:23 ID:???
   ∧_∧
  (  ^^ )< ぬるぽ(^^)

197 :ぼるじょあ ◆ySd1dMH5Gk :03/08/02 04:51 ID:???
     ∧_∧  ∧_∧
ピュ.ー (  ・3・) (  ^^ ) <これからも僕たちを応援して下さいね(^^)。
  =〔~∪ ̄ ̄ ̄∪ ̄ ̄〕
  = ◎――――――◎                      山崎渉&ぼるじょあ

198 :nobodyさん:03/08/09 06:43 ID:ZOEKZBoK
さがりすぎage

199 :あぼーん:あぼーん
あぼーん

200 :nobodyさん:03/08/09 07:56 ID:0dlTg+8l
おまいら。

http://hoover.ktplan.ne.jp/kaihatsu/php/index.php?type=doc&txt=htmltemplate

を氏蘭のか?

201 :あぼーん:あぼーん
あぼーん

202 :nobodyさん:03/08/09 15:33 ID:ZOEKZBoK
>>200
せめてキャッシュを実装してほしい。(中間ファイルでないよ)
タグが拡張できるようにしてほしい。
ちゃんとエラーハンドリングしてほしい。

このあたりを実装してくれれは少しは考えるが、
まだ今のところはSmartyのほうが使い勝手はいいな。


203 :あぼーん:あぼーん
あぼーん

204 : ◆AngelH/kMI :03/08/12 12:14 ID:???
Smarty2.6.0RC1 リリース。
とりあえず変更点確認中。
結構色々変わってるかな?

205 :nobodyさん:03/08/12 13:45 ID:7lLuw4V/
RCなのに色々変わっているってのもアレだな。
いや、中身は見てないが。


206 :nobodyさん:03/08/13 10:54 ID:???
>>205
2.5.0 -> 2.6.0RC1だから変更点は多いと思うぞ?

207 :nobodyさん:03/08/13 11:24 ID:+vOr/IO1
>>206
普通、Release Candidate版って問題がなければそのままリリース版に
するものだから、仕様変更はその前の時点で落ち着いていて欲しいな。
その辺、PHPらしいと言えばらしいけど。

208 :nobodyさん:03/08/13 21:01 ID:???
RC -> Release の間は仕様を変えないのが普通だけど
旧ver Release -> 新ver RC は仕様が変わっててあたりまえじゃないか?

209 :nobodyさん:03/08/14 12:09 ID:Ayxn98z4
>>208
それもそうだ。
新ver RCと旧ver Releaseの間に新ver betaに相当するもの(CVS head)が
あったと考えれば問題ないな。スマソ。

210 :山崎 渉:03/08/15 22:32 ID:???
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン

211 :nobodyさん:03/08/16 17:32 ID:???
php側で、ログファイルから、1行1行読み出して、
それを配列にいれます。
その配列を1こずつ、ループさせて、テンプレートで
書き出すにはどうしたらいいんでしょうか。
勘で、

index.php
for($i=0; $buf=gets($fp, 8000); $i++)
{
    $msg[$i]=$buf;
    $smarty->assign('msg',array("$i"=>$buf));
}

出力側

{section name=msg_id loop=$msg}
    msg: {$msg[msg_id]}<br>
{/section}


とかやってみたんですが、うまくいかないです。
誰か教えてください。

212 :nobodyさん:03/08/16 17:45 ID:???
補足ですが、
$fpの中には、ログファイルが入ってます。

213 :nobodyさん:03/08/16 18:04 ID:???
appendつかったらできたー
(^○^)

214 :nobodyさん:03/08/23 08:07 ID:qE2mijHa
怒涛の勢いで下がっていくスレage

215 :nobodyさん:03/08/31 23:16 ID:OAFHlkE1
1週間ぶりに上げてやる

216 :nobodyさん:03/09/03 11:17 ID:???
PHPカンファはSmartyばかりでしたな

217 :nobodyさん:03/09/11 19:36 ID:???
te

218 :nobodyさん:03/09/12 09:35 ID:???
age

219 :nobodyさん:03/09/18 10:27 ID:bzSYta4I
patTemplateとどちらがいいですか?

220 :nobodyさん:03/10/02 10:36 ID:ZE4wxlxf
質問です。
Smartyを使ったプログラムを業者に頼んだら、あがってきたソースは
タグまでphp側で書いてきました。最初print文を使ってるのかと思いました。

$str ="<form name=f action=aaa.php method=post>\n";
$str .="<TABLE cellSpacing=0 cellPadding=5 width=620 border=0 >\n";
$str .="<TR $ABC>\n";
   ・・・
$str .="</TR>\n";
$str .="</TABLE>\n";
$str .="</form>\n";

こんな調子で300行くらい。で、最後にデータをassignしてました。

$tpl->assign("str",$str);

で、これではSmartyの意味がないので、タグ(デザイン)とプログラムを分離してください。
と伝えた所「タグとプログラムの完全な分離はできません」と言われました。

私はできるんじゃないかと思っていたのですが、Smartyでは「タグとプログラムの完全な分離」
は不可能なのでしょうか?


221 :nobodyさん:03/10/02 12:19 ID:???
その業者を使うのやめれ。デザインととプログラムを分離できないんならテンプレート使う意味ないじゃん。
端折ったコードで申し訳ないが
<table>
<tr>
 <th>header1</th>
 <th>header2</th>
</tr>
{loop}
 <tr>
  <td>{$data1}</td>
  <td>{$data2}</td>
 </tr>
{/loop}
</table>
Smartyはこんな風に使うんだよ、と教えてあげて。

222 :nobodyさん:03/10/02 12:20 ID:???
その業者を使うのやめれ。デザインととプログラムを分離できないんならテンプレート使う意味ないじゃん。
端折ったコードで申し訳ないが
<table>
<tr>
 <th>header1</th>
 <th>header2</th>
</tr>
{loop}
 <tr>
  <td>{$data1}</td>
  <td>{$data2}</td>
 </tr>
{/loop}
</table>
Smartyはこんな風に使うんだよ、と教えてあげて。

223 :220:03/10/02 13:42 ID:???
>221=222さん。
ご返事ありがとうございます。やはりおかしいですよね。
私はPHPは初心者なのですが、納入されたSmartyをみて
びっくりしました。参考にしようと思ったのに・・・。
今修正してもらってます。

ついでにいうと、納入された物を見ていたら、仕様書に
書いてある事でやっていないことがあったので、それを指摘したら
「じゃあ、仕様書をなおしておきます」と平気で言い放ちました。

(゚Д゚)ハァ? …タマゲマスタ!
全然関係ない話スマソ。

224 :nobodyさん:03/10/02 22:25 ID:???
その業者おもろいなぁ

225 :nobodyさん:03/10/02 23:06 ID:???
スマーチーはある程度スクリプチングの構文にゃら分かんないとあんま意味無いよね。
HTML分離させて渡したら、良く分からないので
このHTMLをSmarty用に書き換えてとか渡された。
わかんね−なら最初っからSmartyでとか言うんじゃ寝ェよ

226 :nobodyさん:03/10/08 14:23 ID:h0+MMd8V
ttps://www.stackasterisk.jp/tech/php/phpMvc02_01.jsp
上のサイトを参考にPHPでMVCってみたけど・・・しんどい・・
ログ読ませてもらったらよさそうなので今度のシステムで使わせてもらいます。


227 :nobodyさん:03/10/09 17:38 ID:???
$a[0]->b = 1;
$a[0]->c[0] = 2;
$a[0]->c[1] = 3;
$a[1]->b = 4;
$a[1]->c[0] = 5;
$a[1]->c[1] = 6;
$tpl->assign("a", $a);

こんな感じで

{section name=loop1 loop=$a}
{section name=loop2 loop=$a[loop1]->c}
{$a[loop1]->c[loop2]} {* ← ここでエラー *}
{/section}
{/section}

とすると
unidentified token '[loop2]'
と怒られます(涙)
なにかいい方法ないでしょうか?

$a[x][a]
なら行けるんですけど、assignが面倒で。。。


228 :227:03/10/09 18:42 ID:???
これで解決できました!
失礼しました!

{section name=loop1 loop=$a}
  {foreach key=key item=item from=$a[loop1]->c}
    {$key} = {$item}
  {/foreach}
{/section}

229 :nobodyさん:03/10/10 00:49 ID:???
あの、WinでSmartyは…

230 :nobodyさん:03/10/10 00:58 ID:oTftSrdr
Smartyって、共有サーバでSSH使えない環境でも、
自分の、ファイルを置ける領域に「Smarty」という名のディレクトリをつくり、、ファイル群をそこにアップロードして、、

define("SMARTY_DIR","/Smartyへのパス・・・・・・/Smarty/");

require_once(SMARTY_DIR."Smarty.class.php");

とやれば、使えるのでしょうか?

231 :nobodyさん:03/10/10 01:27 ID:???
>>230
で、試してみたのか?

232 :230:03/10/11 00:46 ID:U0DA9P6C
すいません、まだ環境がととのってないもので、試せないんです。。。
自分が借りてるレンタルサーバで、PHPが近々はいる予定なので、
関心があって訊いてみました


233 :nobodyさん:03/10/11 08:24 ID:???
使えると思いますよーん

234 :230:03/10/11 23:27 ID:???
>>233
ありがとうございます。
入ったら試してみます。

235 :nobodyさん:03/10/14 23:32 ID:???
>>230
PHPを実行するユーザーが、templates_cとcacheディレクトリを
読み書きできるように、場合によってはパーミッションを変更しないと
いけないのだが、そのへんは大丈夫?


236 :230:03/10/15 00:05 ID:???
>>235
パーミッション変えるだけなら、FTPソフト(FFFTPでもなんでも)でできるかと思ったけど、、、
ぼく、なんか勘違いしてます?(汗

237 :nobodyさん:03/10/15 06:29 ID:???
>>236
それならOK


238 :nobodyさん:03/10/15 08:58 ID:???
>>235
モチツケ

239 :nobodyさん:03/10/18 23:59 ID:???
Smartyで再帰的な出力をテンプレートにすることはできますか?

たとえば、
<ul>
{foreach item=c from=$node}
<li>
{$c->name}
<ul>
{foreach item=cc from=$c}
<li>
{$cc->name}
<ul>
{foreach item=ccc from=$cc}
<li>
{$ccc->name}
{* ... *}
</li>
{/foreach}
</ul>
</li>
{/foreach}
</ul>
</li>
{/foreach}
</ul>
みたいな感じでありったけ出力したいのですが。


240 :239:03/10/19 00:00 ID:???
>>239
あ、スマソ
<ul>
{foreach item=c from=$node->children}
<li>
{$c->name}
<ul>
{foreach item=cc from=$c->children}
<li>
{$cc->name}
<ul>
{foreach item=ccc from=$cc->children}
<li>
{$ccc->name}
{* ... *}
</li>
{/foreach}
</ul>
</li>
{/foreach}
</ul>
</li>
{/foreach}
</ul>


241 :nobodyさん:03/10/20 09:35 ID:???
>>239
これは再帰じゃなくて
ただの多重ループだと思う。
ためしてみた?

242 :239:03/10/20 10:08 ID:???
>>241
ループで書くとこうなってしまうってことです。
こういうのを再帰で書くのはSmartyでは難しいんでしょうか。

それでちょっと思いついたんですが、自分自身をincludeする
テンプレート片を作るとどうなんでしょう。自分でちょっとやって
みたら、変数のスコープの問題でつまづいてしまったんですが…。


243 :239:03/10/20 13:16 ID:???
再帰的includeでイケました! include でローカル変数名=値を渡して
やればうまくいきました。


244 :nobodyさん:03/10/21 14:41 ID:???
$a[0]
みたいに配列を直接指定する方法ってありますか?

245 :244:03/10/21 15:24 ID:???
すみません
できないのは $a[0]->b[0] でした。
できないのかなー?

246 :nobodyさん:03/10/22 17:20 ID:6TbJL0Yr
ネットで大人気のコスプレアイドルってニュースに惹かれてアクセスしたら
エラーがでてた。
これSmarty?
http://www.itv24.com/

247 :nobodyさん:03/10/22 18:48 ID:???
>>246
そんなんわからんわい

248 :nobodyさん:03/11/07 15:10 ID:KX2gQLRX
patTemplateのほうがいい。

249 :nobodyさん:03/11/07 19:42 ID:ZxETm7Q5
マニュアルに、以下のようにありますが・・・
---
$template_dir
テンプレートファイルを置くディレクトリです。ファイルをインクルードする際にリソースの種類を指定しなかった場合は、
このディレクトリから探します。デフォルトは"./templates"で、実行中のphpスクリプトが置かれた場所に存在する
"templates"ディレクトリを探す事を意味します。

テクニカルノート: このディレクトリをwebサーバのドキュメントルート下に置く事を推奨しません。
---
この最後の行、なんでなんでしょう?

直接のぞかれて問題のあるようなテンプレート(tpl)ファイルを置く方が、問題だと思うのですが・・・
実際、XOOPSなんかも、ドキュメントルート下にtplファイル置いてますし。。。

250 :nobodyさん:03/11/07 21:10 ID:???
>>249
何が言いたいんだ?

> 直接のぞかれて問題のあるようなテンプレート(tpl)ファイルを置く方が、問題だと思うのですが・・・
問題なんじゃん、じゃあこれであってるじゃん


251 :nobodyさん:03/11/07 22:32 ID:???
コメントの内容とか見られたらまずいこともあるし
処理方法がばれればクラッカーに解析される可能性など。
見られないにこしたことはない。

252 :nobodyさん:03/11/07 23:57 ID:???
>249
XOOPSの場合、レンタルサーバ等でhtml公開用のディレクトリ
以外がユーザに解放されていないケースにも合わせるため
XOOPSインストールディレクトリ以下に集中させる設計になっているから
必ずしもセキュリティ上ベストな選択がなされている訳ではないよ。
#敢えてレベルの低いところをターゲットとしている。全体的に

253 :nobodyさん:03/11/12 04:47 ID:FrBzA+Qu
すいません、
Smartyを導入しようとしているのですが、
Warning: main(/usr/local/apache/smarty/Smarty.class.php):
failed to open stream: Permission denied in /usr/local/apache/htdocs/index.php on line 23
となってしまいます。

でも、httpd.confは、
User www
Group www
としていて(いつお、apacheをリスタートさせた)
で、
chwon www:www smarty
chmod 770 smarty

chwon www:www smarty/*
chmod 770 smarty/*

としたのですが、
やはり、前述のエラーが出てしまいます。

ただ、1回、正常に動作したことはあったんですよね。。。
そのあと、smartyのディレクトリを場所変えたり、
些細なことしか(なにをしたかは失念してしまいましたが)してないはずなのに、こうなってしまってます。

いったい、どこらへんを疑えばいいのでしょうか?
ポインタだけでも示して頂ければ幸いです。

254 :nobodyさん:03/11/12 07:29 ID:FrBzA+Qu
smartyを入れる方法って、どれがベストなんでしょうか?対して変わらない?

Example 2-2. Smartyのインスタンスを作成する
require('Smarty.class.php');
$smarty = new Smarty;

Example 2-3. ライブラリファイルの絶対パスを指定する
require('/usr/local/lib/php/Smarty/Smarty.class.php');
$smarty = new Smarty;

Example 2-4. phpのinclude_pathにライブラリディレクトリを追加する
// php.iniを編集し、include_pathにSmartyのライブラリディレクトリを追加して
// webサーバをリスタートしたなら、以下を行ってください。
require('Smarty.class.php');
$smarty = new Smarty;

Example 2-5. 手動でSMARTY_DIR定数を定義する
define('SMARTY_DIR','/usr/local/lib/php/Smarty/');
require(SMARTY_DIR.'Smarty.class.php');
$smarty = new Smarty;

↓から引用しますた。
http://sunset.freespace.jp/smarty/SmartyManual_2-6-0RC2J_html/installing.smarty.basic.html

255 :nobodyさん:03/11/13 09:38 ID:???
>>253
その些細なことが原因なんだと思うが。。。
わからなかったらもう1度最初からやったほうがいいと思う

chwon を chownにしたらよいかも

256 :nobodyさん:03/11/13 21:49 ID:???
>>254
http://sunset.freespace.jp/smarty/SmartyManual_2-6-0RC2J_html/installing.smarty.extended.html

257 :nobodyさん:03/11/14 13:26 ID:maWzYQwN
>>195
俺も最近使い始めたんだけど、JavaScriptやCSSのタグに引っかかって
鬱陶しい。結局何に変更しました?

258 :nobodyさん:03/11/17 14:01 ID:EFGY3Z8y
青のマンモス本を見ながらSmarty導入しているんですが、
カスタム関数の追加ってどうやるんですかね?

動的な関数の追加はregister_function()を使用すればよいのですが、
もっと汎用的に使いたいんです。

マンモス本によりますと、Smarty.addons.phpというファイルに定義を
追加すればよいことになっているんですが、これはこの本の出版時点
のversion 1.5での設定法らしんです。

version2か2.5あたりから、そのあたりの使用が変わったらしい(changelog
を参照)
のですが、新しい設定法がわからなくて悩んでいます。

どなたかご教授願えませんか?

259 :nobodyさん:03/11/17 15:54 ID:???
>>258
オレも最初はマンモス本でやった
いろいろ変わってるよね。
ほい。
ttp://sunset.freespace.jp/smarty/SmartyManual_2-4-1J_html/index.html

たぶんpluginsディレクトリ内の
function.xxxxx.php
を適当にコピーして内容もそれを参考にいじれば
いけたような。。。

260 :nobodyさん:03/11/17 15:56 ID:???
>>258
そこまで分かっていて、日本語に訳されたマニュアルもあるのに
どうして読まないのでしょうか?

ttp://sunset.freespace.jp/smarty/SmartyManual_2-6-0RC2J_html/


261 :nobodyさん:03/11/17 18:48 ID:6jAm6LT2
>>259、260

有難う御座います。
マニュアルは一応一読したつもりですが、グローバルなカスタム関数の
登録に関して記述が見当たらなかったもので・・・。

それでやってみますです!

262 :nobodyさん:03/11/18 15:58 ID:???
chwon を chown にするついでに、chown -R と、-R もつけてみよう

263 :nobodyさん:03/11/18 17:06 ID:???
おそっ

264 :@@@@@:03/11/19 00:18 ID:Zaav6IG2
>
>‥∞‥。☆゜‥∞‥゜★。‥∞‥。☆゜‥∞‥゜★。‥∞‥。☆゜
> 
> ねえ、ちょっと・・・マジやばいんじゃない? この動画!!
>   ↓↓            ↓↓
> http://moro00.e-city.tv/ http://moro00.e-city.tv/
>
> ハッキリ言って、丸見え! 素人はお金のためなら何でもヤル。
> 撮られた時はこんなにバラ撒かれるとは思わなかったんだろね。
> けっこうカワイイ娘なのになぁ・・・ そのへん歩いてたりして!
>
>‥∞‥。☆゜‥∞‥゜★。‥∞‥。☆゜‥∞‥゜★。‥∞‥。☆゜
>


265 :nobodyさん:03/11/25 22:06 ID:???
?(`д´)?

266 :nobodyさん:03/12/05 20:56 ID:n07yC7qy
PHP質問スレッド Part11 から誘導されてきました。
http://pc2.2ch.net/test/read.cgi/php/1067635640/984

<p id="name">ここに名前</p>
  が、
$tpl->assign("name", "太郎");
  で
<p>太郎</p>

となるようにするにはどうすればいいのでしょうか。
今自分ことの環境はデフォルトなので、デリミタは { } となっています。


267 :nobodyさん:03/12/05 21:48 ID:???
>>266
Smartyはセットアップできたの?
あなたの質問の内容よりよっぽど難しいと思うけど。
で、セットアップ出来ているとしたら、セットアップする際に参照した
マニュアル(例えば>>1には日本語マニュアルが紹介されている)の
最初の方にあなたの求める答えが載っているのだが。

268 :266:03/12/05 22:20 ID:???
ttp://sunset.freespace.jp/smarty/SmartyManual_2-6-0RC2J_html/
を見てインストールし、
require('guestbook/setup.php');
$smarty = new Smarty_GuestBook;
$smarty->assign('name','Ned');
$smarty->display('index.tpl');
まではうまく動くことを確認しました。

いまマニュアルを読み返しているのですが、それらしき箇所を発見することができません。
デリミタのカスタマイズは$left_delimiterと$right_delimiterの値を変えるんだと
思うのですが、これをどういじっても

<p id="name">ここに名前</p> ⇒ <p>太郎</p>

とはならないような気がします。


269 :nobodyさん:03/12/05 22:46 ID:???
>>268
もう少しマニュアルを読めば分かると思うけど、index.tplに

<p id="name">{$name}</p>

と書けば置き換わるよ。


270 :266:03/12/05 22:57 ID:???
すみません、Smartyじゃできないみたいですね。

<element id="varname">ダミーの文字</element>

というテンプレートに対して、 assign('varname', 実際の文字) とすると
varnameというidの振られたエレメントの中のダミーの文字が置き換わって

<element>実際の文字</element>

となるようなライブラリを探しているんです。
これだと、「仕上がり見本」のHTMLをそのままテンプレートに使えるんです。


271 :nobodyさん:03/12/05 23:05 ID:???
>>270
ああ、そういうことね。
では、テンプレートにifとelseを使って、$hogeがあるときは$hogeの内容、
$hogeが無いときはデフォルトの文字列っていう風にしてはいかが?


272 :266:03/12/06 13:28 ID:???
<p>{if $name}加藤剛{else}{$name}{/if}</p>

っていうことですか? これ Smartyを通さないと <p>加藤剛</p> を得られませんよね。

デザイナーは普通のHTMLエディタで何の変哲もないHTMLを書けばいい、
というのが狙いなので。


273 :nobodyさん:03/12/06 13:46 ID:???
>>272
ああ、そこまでは無理やね。
というか、そんなの実現不可能だと思うけど。何使っても。

もしそういうライブラリーが見つかったら、報告よろしく。

274 :266:03/12/06 15:07 ID:???
RubyだとAmritaがあるんですよ。
ttp://www.brain-tokyo.jp/research/amrita/index_ja.html

PHPでというのが要件なので、探しているのです。


275 :nobodyさん:03/12/06 15:23 ID:???
>>274
へー。勉強になりました。
そのうち誰かPHP版を作ってくれるかもね。


276 :nobodyさん:03/12/08 19:04 ID:???
>>272
defaultを使った方が読みやすいよ。
<p>{$name|default:"加藤剛"}</p>


277 :nobodyさん:03/12/10 17:44 ID:d5KtgpUB
「Chapter 4. 変数/phpから割り当てられた変数」というのは、assign などを
使って割り当てたもの、という意味なんでしょうか?
出力したい変数が多数あるのですが、テンプレート内で{$hoge} とする
だけでは出力しないものなんでしょうか?

278 :nobodyさん:03/12/10 17:48 ID:???
<?=$vari?>
でいいじゃん

279 :277:03/12/10 17:51 ID:???
あああ・・ バカな質問をしてすみません。
ちゃんとマニュアルを読めば分かることでした(汗
assign などを使わないと、どこからも割り当てられていない変数を
表示しようとしちゃうんですね。あうー  はずかちー

280 :nobodyさん:03/12/12 00:15 ID:BBYj3pBU
PHPは使えるけどSmartyを知らない人に、
「デザインとプログラムの分離」ができるという点で、
良さを伝えたいのですけど、PHPそのものでいいじゃんと言われてしまいます。

社内にSmarty広めたいのだけど、どうすればいいのだろう?

(キャッシュとかできて高機能だよ、とは言えるんだけど、
「デザインとプログラムの分離」の点で、説得できない・・・)

281 :nobodyさん:03/12/12 00:18 ID:???
なんか、
{$vari}も
<?=$vari?>

標記的にはほとんどかわんないし、
べつに<?=$vari?>でイイじゃん
って思うんだけど、
なんでわざわざ
smartyなの?

282 :nobodyさん:03/12/12 01:04 ID:C20HZJQr
処理用のPHPを作ってしまえば、処理と表示わかれるのは簡単だぞ。
おれはそうやって作ってる
かなり見やすいしさ。Smartyはちょっと見たけど、あまり魅力を感じない。
現時点ではね。

283 :nobodyさん:03/12/12 01:53 ID:???
>>281
今時ショートタグ有効にしてあるのは嫌な感じ。

284 :nobodyさん:03/12/12 10:18 ID:???
プログラマとデザイナが同じ人物なら
PHPだけでやればよい。
そうでないなら分けたほうが絶対便利。
あとはテンプレートエンジンの比較のはなし。

PHPで独自のテンプレートエンジンつくればいいっていう
頑固おやじはデザイナにそれの使用を強要して
使いにくいは、マニュアルもないはで、
「これだからプログラマは・・・」って言われるのがオチ

285 :nobodyさん:03/12/12 11:49 ID:???
PHPで独自のテンプレートエンジン = smarty

286 :nobodyさん:03/12/12 11:51 ID:???
俺はSmartyをメインに使ってるんだが、逆にSmartyを使わない
人たちは、

1.入力フォーム表示
2.内容確認ページ表示
 入力エラーがあった場合は1に戻ってエラーメッセージを表示
 「再入力」ボタンが押された場合は、入力内容を保持して1を表示
 入力エラーが無ければそのまま確認ページを表示
3.処理結果表示
 処理中に問題があった場合は2に戻ってエラーメッセージを表示

というフローを実現する時にどうしてるの?


287 :nobodyさん:03/12/12 12:01 ID:???
1 2 3
でページを分けて
セッションを使いつつ
リダイレクトさせればOKじゃないの?

288 :286:03/12/12 12:12 ID:???
>>287
ファイルを分けた場合、2で生成したエラーメッセージは
どうやって1のフォームに表示しますか?
セッションに持つんじゃダサすぎるよね。


289 :nobodyさん:03/12/12 12:15 ID:???
ヘーヘーヘー

セッションじゃだめなの?
別にPOSTでもいいけど

セッションがいやならPOSTにすればいいんじゃないの?

290 :286:03/12/12 12:39 ID:???
>>289
セッションが使えない場合にエラーメッセージが表示されなくなるのは
アプリケーションとして問題ありじゃないですか?
常にセッション前提の開発が出来るんなら別ですけど。

あと、2でPOSTにエラーメッセージを詰め込んでから
1にリダイレクトしても意味ないような気がしますが…。


291 :nobodyさん:03/12/12 12:43 ID:???
セッションが使えない場合ってあるのか?
それならポストが使えない場合、GETが使えない場合とか
考えるとキリがないと思うんだが。

あと、何で意味無いのかわからない。
じゃあ、どうするの?

というか、これ全然smartyに関係ないと思うんだが。

292 :286:03/12/12 12:53 ID:???
まあ、ショボいロードバランサーを使ってるケースでもない限り
今時セッションが使えない場合ってのはないかもね。
でも、POST/GETメソッドが使えない場合なんてある?

リダイレクトってLocationヘッダを使うってことだよね?
そうすると$_POSTの内容ってまっさらになってしまう気がするんだけど。

俺の場合、>>286で書いたフローを実現するのに単一のファイルに
input()、confirm()、commit()みたいな関数を作って処理してる
のだけど、こういう構造にするとHTMLとコードを混在させるのはまず
不可能なのでHTML部分はSmartyで別ファイルにしています。

で、「Smartyイラネ」とか言ってる人はこの辺どうやってるのか不思議だったんですが。


293 :nobodyさん:03/12/12 13:27 ID:???
一般的なphpの使い方

<?php
〜〜〜〜〜
〜〜〜
処理、このなかで出力するテキストなどを
変数にセット
〜〜〜
?>

<HTML>
<BODY>
<? echo "$phpでセットした変数"?>
<?=$phpでセットした変数?>

294 :nobodyさん:03/12/12 14:02 ID:???
私の場合は、
main.php:
<?php
if (!is_numeric($hoge)) {
$status = "ng";
$message = "数字を入力して下さい";
}
if ($status == "ok") {
include ('complete.html');
exit;
}
include (question.html);
exit;
?>

question.html:
<?php print $message; ?>
<form action='main.php'>
<input type='text' value='<?php print $hoge; ?>'>
</form>

みたいにして、question.html をドリームウェーバーor 手書きで編集してました。
なので、あまりSmarty は必要ないかな、と思っていましたが、入力エラーのときに
option やcheckbox のvalue 値を引き継ぐのはSmarty の方が便利でした。

295 :nobodyさん:03/12/12 15:12 ID:???
入力エラーってどういうケースを想定してるのかしらんがjavascriptで処理しちゃいかんの?
わざわざ鯖に仕事させなきゃ駄目?

296 :nobodyさん:03/12/12 15:14 ID:???
>>295
クライアントがJavascriptを切っていたらどうする?


297 :nobodyさん:03/12/12 15:48 ID:???
なんだかアホなはなしやめようよ

javascriptとかリダイレクトとか。
そんなの言ってるの趣味でやってる学生とかだろ?
そんなのスルーでお願いしますよ

298 :286:03/12/12 16:07 ID:???
>>295
商品情報編集ページを作るとして、入力してもらった商品IDをもとにデータベースを
見に行ったが該当する商品が無かった場合に「入力されたIDは存在しません」みたいな
表示をする場合はどうしますか?

そもそも、クライアントサイドでの書式チェックとサーバサイドでの内容チェックは別物ですよ。。


299 :nobodyさん:03/12/12 19:57 ID:???
{html_options}を使うと<option>にlabel属性がついちゃいますけど、
みなさんは無視してます? ソースに手を付ける? 
それとも付いてると何かいいことがあるのかしらん??

300 :286:03/12/12 20:15 ID:???
>>299
<label>要素が付くと、チェックボックス部分だけでなく文字列を
クリックしてもトグルできるようになるよ。

[x] この文字列をクリックでもOK

IEはどうか知らんけど、Firebirdではちゃんと動くから俺は
気にせず使ってる。

301 :nobodyさん:03/12/12 21:55 ID:???
javascriptをバンバン使ってる企業サイトもあるわけだが。

302 :286:03/12/12 22:37 ID:???
>>301
JavaScriptをオフにするとまともに閲覧できない企業サイトもあるわけだが。

と言うか別にJavaScriptを使うのは構わないんだけど、エラー処理を
JavaScriptだけで行おうとするWebプログラマはアホということ。


303 :nobodyさん:03/12/13 00:34 ID:lh7ZJy1b
smartyもこれを使う人もsmartじゃないんですね。w

304 :nobodyさん:03/12/13 00:44 ID:???
>>303
wを使う人

305 :nobodyさん:03/12/13 14:25 ID:???
デザインとコンテンツの分離とか言ってる奴に限ってコンテンツは糞。

306 :nobodyさん:03/12/13 15:55 ID:???
それはディレクターの責任ですから

307 :nobodyさん:03/12/13 18:03 ID:???
もう少し正しく言うなら"デザインとロジックの分離"なワケで
あのスレは途中でタイトルが間違ってる事を指摘されてたワケだが。
実際に仕事とかで「デザインとコンテンツの分離が・・・」とか言い出したヤツがいたら
あぁコイツは分かって言ってねーんだなぁと9割方思っていい。

308 :nobodyさん:03/12/13 19:59 ID:???
>>292
んんと、Smarty使ってるような感じで
そのまま別のPHPファイルをincludeしてる
SmartyはSmartyで便利と思うんだけど
Smartyのコードだと外部ファイル側で小回りが利かなくなるというか・・・

309 :nobodyさん:03/12/13 22:37 ID:ittzKU4p
SmartyをWindows上で利用しているのですが、以下のエラーが出て動いてくれません。

Warning: Smarty error: problem writing temporary file '/home/sites/site40/templates_c/\%%117\%%1172603085\3fdb11ae15d5f' in d:\home\sites\site40\smarty\Smarty.class.php on line 1144
Warning: touch(): Unable to create file /home/sites/site40/templates_c/\%%117\%%1172603085\index.tpl.php because No such file or directory in d:\home\sites\site40\smarty\core\core.write_compiled_resource.php on line 31
Warning: fetch(/home/sites/site40/templates_c/\%%117\%%1172603085\index.tpl.php): failed to open stream: No such file or directory in d:\home\sites\site40\smarty\Smarty.class.php on line 1291
Warning: fetch(): Failed opening '/home/sites/site40/templates_c/\%%117\%%1172603085\index.tpl.php' for inclusion (include_path='.;c:\php4\pear') in d:\home\sites\site40\smarty\Smarty.class.php on line 1291

チェックすべき点や参考になるサイトなどがあったら教えていただけないでしょうか?

環境
Windows2000 professional
php4.3.4


310 :309:03/12/13 22:44 ID:???
>>309
$smarty->template_dir = '/home/sites/site40/templates/';
という風にしていたのを
$smarty->template_dir = 'd:/home/sites/site40/templates/';
としたら動きました。

スレ汚し申し訳ないです。

今からしっかりと勉強してSmartyの世界につかろうと思います。

311 :286:03/12/14 01:13 ID:???
>>308
んー、なるほどね。
俺は逆にincludeするファイルがPHPで書かれていると、<?php ?>タグが
デザイン(HTMLタグ)とごっちゃになっちゃう気がするのでSmartyにしてます。

いざとなればSmartyのテンプレートファイル中に
{php}
// PHPのコード
{/php}
とすることもできちゃうし。
まあ、実際にはPHPのコードを書かなければいけない状況になったことは無いですけど。


312 :308:03/12/14 04:19 ID:???
>>311
俺もSmarty化しようと思って
実際使ってみてやっぱり辞めた派なので
HTMLタグとの区別がスッキリするというのはよくわかります

辞めた理由としては
やっぱりインラインでデザイン側にいくつか変数欲しくなった時でも
いちいち呼び出し側でassignしなきゃいけないのが面倒でした

今は事実上Smartyみたいな構成にして
PHPコードで書かれたデザイン用ファイルを用意して普通にincludeしてます
HTMLタグとの混合はショートタグでだいぶましにはなります
それでもやっぱりスマートじゃないよう気がしますが・・・
やっぱりPHPネイティブのテンプレート機構が
あるのが一番いいなと思います

313 :286:03/12/14 13:22 ID:???
>>312
「いちいち呼び出し側でassignしなきゃいけない」ということは、
デザインとロジックの分離が強制されるということなので気にしないようにしてます。

あと、ショートタグを有効にしているとXHTML(XML)を記述する時にハマるのも
気をつけたいところ。


314 :nobodyさん:03/12/14 13:33 ID:???
>>312
$aaa->c1 = "111";
$aaa->c2 = "222";
$tpl->assign("aaa", $aaa);
$tpl->display("xxxx.tpl");
-------------------------
{$aaa->c1} {$aaa->c2}

変数増えても平気だ


315 :nobodyさん:03/12/19 10:20 ID:hqiHAaNv
Smartyを便利に使用していますが,foreachやsectionなど配列をループさせる
関数はありますが単純に数値でループさせるにはどうすればいいのでしょう。
例えば10という数値をアサインして,テンプレートで10回処理を繰り返す
(例えば改行を10回入れるなど)といった処理です。
forは無いようですし,doやwhileもありませんよね?


316 :nobodyさん:03/12/19 11:22 ID:???
>>315
Smartyの良いトコの一つとしてプラグインによる拡張があるワケで、
こういうタグが無いぞ!と思ったら
http://smarty.incutio.com/?page=SmartyPlugins
から探すか、もしくは自分で作る。
ちなみに回数を指定して繰り返したいなら、BlockRepeatPluginで
そのものズバリの事が出来る。


317 :nobodyさん:03/12/19 11:27 ID:???
>>316
なるほど。
forのような基本的な関数が無いはずが無いとマニュアルを何度も探していたのですが,
プラグインを使うのですか・・・

紹介していただいたサイトとプラグインをよく読みます。
ありがとうございました。

318 :nobodyさん:03/12/19 13:00 ID:???
>>317
forやdoやwhileは、その条件や回数がテンプレート(View)とは無関係なものだから
テンプレート内では使えないようになってるんでしょう。

改行を10回入れたい場合はコードのほうで、
$smarty->assign('loop', 10);
とやっておいて、テンプレートでは

{section name=foo loop=$loop}
<br>
{/section}

でOK。


319 :nobodyさん:03/12/19 13:06 ID:???
>>318
そ、そうなのか?

320 :nobodyさん:03/12/19 13:15 ID:???
>>319
そうなのか?ってどっちのこと?
forやwhileが無い理由はそういうことだと思うけど。

動的にページの要素を増減させたいケースっていうのはつまり、
「商品の数が増減するからテーブルの行も増減する」とか
「User-Agentによって一部分を表示させたくない」とか
ロジックによる処理ばっかりでしょ。


321 :317:03/12/19 13:36 ID:???
>>318
> {section name=foo loop=$loop}
> <br>
> {/section}

確認しました。こんなことが出来るんですね。
何で今まで試さなかったんだろう・・・orz

いままで,array_padでダミーの配列を作ってループしていたので,
メモリも節約できて助かります。
$smarty.section.hoge.indexも使えるのでsectionが使えれば万々歳です。

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


322 :nobodyさん:03/12/19 15:42 ID:???
ソース見てみたら
$output .= "{$section_props}['loop'] = is_array($attr_value) ? count($attr_value) : max(0, (int)$attr_value);\n";

ってことだった。
loopには配列しか指定できないもんだと思ってたよ。

323 :nobodyさん:03/12/20 21:52 ID:???
だれかDreamweaverとかでSmarty使ってる人いません?
やっぱりみんな手で組んでるの?
これじゃ、せっかくデザインを分離できてもなーー


324 :nobodyさん:03/12/21 05:53 ID:???
>>323
使ってますよー

325 :nobodyさん:03/12/21 10:01 ID:???
>>324
ど、どうやって?
ヒントでも教えて〜
Smarty&PHP側に細工?
ドリ側で細工?

326 :nobodyさん:03/12/22 21:59 ID:???
>>323
Dreamweaver使ってないんだけど、どういう問題?
SmartyタグのせいでHTMLが正しく解釈されず、デザインビューがメチャクチャになるって事?
多少の対策として、デリミタを{ } から <{ }>みたいにしてるね。xoopsとかは。

327 :nobodyさん:03/12/23 00:10 ID:???
>>326
デザイナが編集するときにきれいに表示されないってことです。
{section xxxx.....}
とかはそのまま表示されてしまいますし
もちろん
{if xxx}
xxx
{else}
xxx
{/if}
とかも表示が崩れます。
if文の中でタグの開始とか終了とかやってると顕著です。

xoopsかー
ちょっと見てみようかな

328 :nobodyさん:03/12/23 00:41 ID:???
>>323
そういうときに >>266-275 のAmritaが良いわけですよ。Rubyだけど。



329 :323:03/12/23 23:30 ID:???
>>325

自分は、趣味で作ってるサイトでやってるだけなので、
ドリにタグが出ても、問題ないです。

職場でもphpとかで開発してるけど、
Smarty?何それ?と言われた(泣く

330 :nobodyさん:03/12/24 01:11 ID:???
DreamweaverのSmarty Extension・・・いつになったら・・・ウウゥ・・・

331 :nobodyさん:03/12/24 01:24 ID:???
この手の奴いくつかあるけど
どいつもこいつも独自仕様なんだよな。
大差ねえ野に。

332 :nobodyさん:03/12/27 20:35 ID:???
smartyって別に個人が1人でレイアウトからプログラムまで全部やる場合は
特にメリット無いよね?
オーバーヘッドが無いとか色々書いてあったけど、
別にこれを使う事で開発が楽になったりプログラムの実行速度が速くなったりはしない?

333 :nobodyさん:03/12/27 22:12 ID:???
>>332
その色々がもたらすメリットが理解できないなら使っても一緒かな〜と。
オーバーヘッドの意味、分かってる?

334 :nobodyさん:03/12/28 09:49 ID:???
>>333
クラスとか関数の定義を読み込んだりする
最初にかかる時間の事だと思ってますが
ちゃんとした本とかで勉強した事が無いので合ってるかどうかは分かりません。

335 :nobodyさん:03/12/30 11:17 ID:???
現在333はオーバーヘッドの意味を勉強中です。
しばらくお待ちください。

336 :nobodyさん:04/01/02 22:22 ID:???
あけましておめでとうございます。
今年もSmartyを使っていろいろ開発していきましょう!

という自分は、現在自分のサイト(趣味で作っているヘボサイト)を
勉強をかねてSmartyを利用して再構築しています。

正月休みは、マニュアルを読みながらひとつひとつの動きに
感激しっぱなしでした。

仕事でJavaServletやJSPを利用したWebシステムの開発をしているので、
Smartyは非常にとっつきやすいです。

337 :nobodyさん:04/01/04 01:15 ID:LkXOe+SC
英語圏の人向けにXHTMLでページをつくってるんですが、
tplファイルに<?xml version="1.0" encoding="utf-8"?>
としても特に問題起こらないですか?
(もちろんtplファイルの文字コードはutf-8。ただし、phpスクリプトはEUC)




338 :nobodyさん:04/01/04 09:10 ID:???
>>337
やってみたの?

339 :337:04/01/05 22:52 ID:SHqc05oc
>>338
いちお、いまんとこ問題なさげなんだけど・・・

340 :nobodyさん:04/01/05 23:33 ID:???
>>337を含め、最近のphp界隈は問題ありすぎ

341 :nobodyさん:04/01/06 16:18 ID:???
>>340
PHPどうのこうのっていう以前の問題が多すぎだね。
建築しらない人が、日曜大工でビル建てようとしてるような人が多すぎる。

342 :nobodyさん:04/01/11 21:34 ID:ESnicSkb
     ______
    /_      |
    /. \ ̄ ̄ ̄ ̄|
  /  /  ― ― |
  |  /    -  - |
  ||| (6      > |
 | | |     ┏━┓|   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| | | |     ┃─┃|  < 正直、Smartyはスマートだ。
|| | | |  \ ┃  ┃/    \________
| || | |    ̄  ̄|

343 :nobodyさん:04/01/12 02:03 ID:???
どこがスマートだよ。
全然デザインとロジックの分離ができてねーじゃん。
糞杉。

344 :nobodyさん:04/01/12 03:28 ID:???
いくらスマートなモノでも使い方がスマートでないとスマートにはなりませんよ。

345 :nobodyさん:04/01/12 12:58 ID:???
スマートなら自前で実装するよ

346 :nobodyさん:04/01/12 14:36 ID:XY33XXMX
     ______
    /_      |
    /. \ ̄ ̄ ̄ ̄|
  /  /  ― ― |
  |  /    -  - |
  ||| (6      > |
 | | |     ┏━┓|   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| | | |     ┃─┃|  < 正直、Smartyは名前の通りスマートだ。
|| | | |  \ ┃  ┃/    \________
| || | |    ̄  ̄|


347 :nobodyさん:04/01/12 19:22 ID:???
古いAAだな。久々に見たぞ


348 :nobodyさん:04/01/12 23:29 ID:???
いまやハワイのチャンピオンだからな

349 :nobodyさん:04/01/18 13:31 ID:stryZ884
盛り上がっていこうゼ

350 :nobodyさん:04/01/19 08:48 ID:vtz23jMl
2.6.1

351 :nobodyさん:04/01/28 19:47 ID:???
QuickFormとSmartyの連携

352 :nobodyさん:04/02/12 11:33 ID:KTntpHdL
smartyと相性のいいホームページ作成ソフトって何ですか?

私はホームページビルダー7を使ってますが、画面をデザインした
あとに、必ずHTMLを見て修正する必要があるんです。

例えば、適当にHPビルダーでフォームとか配置して部品を付けると、
それぞれの部品が<form>でくくられてしまったり・・・

なのでデザイナさんに画面を作ってもらっても、結局それをデザイ
ンを壊さないようにエディタで修正するハメになるのです。

ホームページ作成ソフトで作ったら、そのHTMLは見なくていい。
そんなホームページ作成ソフトはないでしょうか?


353 :nobodyさん:04/02/16 06:31 ID:fxjTO9Xi
>255
同感です。
私も、いいホームページソフトを教えてほしいです。

354 :nobodyさん:04/02/18 05:55 ID:Rpd68eXE
>255
Dreamweaverなどは?
いちおうPHPなどにも良さそうなことがメーカのHPに書いてありますが・・・

355 :nobodyさん:04/02/18 08:05 ID:bgploQOu
すいません、Smrtyの入れ子ってどうやるのでしょうか?
もともと、
------------------------------------------------------------
<html>
(略)
{php}
include("./category/" . getParam( 'cat' ) . ".inc");
{/php}
(略)
</html>
------------------------------------------------------------
というtmpl(テンプレートファイル)があるのですが・・・

(ちなみに、getParam関数は↓こんなかんじ)
function getParam( $name )
{
$val = $_GET[$name];
if( $val == "" ){
$val = $_POST[$name];
}
return( $val );
}

で、catの値によっては、
includeしたファイルの中で、さらにsmartyを使いと思ってます。
マニュアル見たり試行錯誤してもわらなかったので、
どなたかご存じの方、いらっしゃったら、教えていただければ幸いです。

356 :355:04/02/18 09:04 ID:???
自己レス
incファイルの中で、

global $smarty;

$smarty->assign("foo", $line[1]);

$smarty->assign("bar", $line[2]);

とやったらできてしまいました。
(するとこれは、「入れ子」とはいわないのかな。まぁいいや)

357 :355:04/02/18 09:07 ID:???
前言(>>356)撤回。何も表示されてませんでした。んー、どうすればいいのだろう。

358 :nobodyさん:04/02/18 09:44 ID:???
>>355
そもそもその incファイルでは $lineは定義されているのか?
俺ならテンプレートリソースにするのが簡単かつ安全だと思うけど。

あと、脱字大杉

359 :355:04/02/18 10:55 ID:???
>>358さんありがとうございます。
>$lineは定義されているのか?
はい。

「テンプレートリソース」というものを知らないので、勉強してそっちでやってみるかもしれません。
ありがとうございます。

>あと、脱字大杉
どうもすみませんでした。

360 : ◆AngelH/kMI :04/02/28 23:27 ID:???
久々に書き込み。
引っ越しして超ナローバンドなためきつい・・・。
後2週間はこのままかと思うと気が重いっス。

http://sourceforge.jp/projects/phpoot/
ネタ投入。
見る限りではなかなかよさそうなんだけど、
誰か使ってみた人いますか。
自分所では動作しなく・・・。

>>352-354
自分はDreamweaver使ってますよ。
設定すれば勝手に書き換えたりしなくなるし。
(比較的)まともなHTMLはき出してくれるので、ver1.2の頃から愛用しています。

361 :nobodyさん:04/02/29 08:02 ID:???
>>360
俺も翻訳者のwebみて知ってこれ良さそうと思ったけど
何ひとつサンプルが動かないのは如何なものか(´д`;)
ぜったい テストされてねぇ〜・・・・・

とりあえずソース何ヵ所かいじったら動いたけど<img><br>タグ閉じてないよっておこられまくって
ふて寝しますたorz

362 : ◆AngelH/kMI :04/02/29 14:47 ID:???
>>361
む、動きましたか?
触った箇所教えてくれると助かりまつ。

<img><br>が動かないのは、XHTML準拠、とのことでエラーになってるのかと。
それぞれ
<img src="hogehoge" />
<br />
にして試してみてー。

363 :nobodyさん:04/02/29 16:53 ID:???
>> 360-362
phpoot::_compileに渡す compiled_fileの作成の仕方が間違ってるね。
存在しない pathに対して realpath()を使っていらっしゃる。

× $compiled_file = realpath($this->_compiled_dir . '/' . basename($this->_template_file) . PHPOOT_EXT);
○ $compiled_file = realpath($this->_compiled_dir . '/' . basename($this->_template_file)) . PHPOOT_EXT;

<img><br>ってのはサンプルにはないよね?
試しに書いてみたけど、<img> -> <img />に補正されるし、<img><br>は削除されるし、
こいつは XML_HTMLSaxのせいか? PEAR使ってるなら、命名規則も従ってくれると良いね。

Amrita意識してるようだけど、この品質なら、今から使うメリットはなさそうだと思った。
Smartyは枯れてきてるし、PEARなら HTML_Template_Flexyのほうが`まだ`出来が良い。


364 : ◆AngelH/kMI :04/02/29 21:46 ID:???
>>363
サンクス。
こっちでも一応動作確認出来ました。
まあ、今後に期待ってことでSmartyに戻ります(笑

うちの環境だと、一回目のアクセス時(つまりcompileするときに)
phpoot.parser.phpがundefined index出しまくりで気になる・・・。

365 :nobodyさん:04/03/08 07:32 ID:???
{$hoshu}

366 :nobodyさん:04/03/11 16:02 ID:???
書籍のデータベースを検索して表示するページを作っています。
現在すべてのページで
<?php
include 'header.php';
//メイン処理
include 'footer.php';
?>
としていますが、これをSmarty で記述する場合、
main.tpl の中でindlude or include_php するのが良いのか、
main.php の中で、
func_assign_header();//ヘッダー用の表示をアサインする関数
func_assign_footer();
$smarty->display('header.tlp');
$smarty->display('main.tlp');
$smarty->display('footer.tlp');
みたいにすれば良いのか、或いはもっとべつの良い方法があるのか・・・というより、
ありそうだなあ、と悩んでいます。。。
>>96 さんとほぼ同じケースだと思うのですが、アホなので>>97 さんのアドバイスが
良く分かっていません。
ヒントへのポインタでも結構ですのでアドバイスをお願いできますでしょうか??

367 :366:04/03/11 16:11 ID:???
言い忘れていました、header の部分も、ページごとに動的に変化します。
今のところ<title>xxxx</title> に表示するデータの一部を入れているだけですが。。。

368 :nobodyさん:04/03/12 01:00 ID:9XQjrMWL
最新のPHP+SmartyでSafe modeをonにすると...
pluginsがエラーになるんですけど...
ちなみにSmartyは/usr/local/lib/php/Smarty/以下にインストール
しています。オーナーはrootです。
アプリのオーナーはroot以外のユーザーです。

プログラムは{html_options}のリファレンスのサンプルです。
エラーメッセージは
Fatal error: Smarty error: [in XXXXXXXX.tmpl line nn]: [plugin] unknown tag - 'html_options' (core.load_plugins.php, line 118) in /usr/local/lib/php/Smarty/Smarty.class.php on line 1102

Safe mode系のエラーの場合は
SAFE MODE何たらかんたらとかuid/gidがなんたらというメッセージが多いと思うんだけど...

アプリのオーナーをrootにしたりSafe modeをOffにすると正しく動くのよね。
php.iniがいけないのかなぁ?


369 :nobodyさん:04/03/12 13:35 ID:???
>>366
自分でテンプレートもPHPのコードも書くならどっちでもいいんじゃないすか?

370 :nobodyさん:04/03/12 21:47 ID:???
>>366
Smartyのサブクラスを作成(例:mySmarty)して、
親クラスのメソッド:display()をサブクラスでオーバーライドしれば?

mySmartyの生成時にヘッダ・フッタのデータを渡して、
$mySmarty->display()したときにmySmarty内部で、
ヘッダ・フッタをassignして、親クラスのdisplay()を呼ぶみたいな。

371 :nobodyさん:04/03/13 00:31 ID:???
>>366
main.php では、
func_assign_header();
func_assign_footer();
$smarty->display('main.tpl');

main.tlp 内で、
{include file="header.tpl"}
{include file="footer.tpl"}

僕ならこうする。
どうするのが良い悪いよりは好みの問題でしょうね

372 :nobodyさん:04/03/15 13:25 ID:???
>>366

先週から使い始めました。

header.tlp
footer.tlp

上記の2ページの内容or作る人のスタイルにもよると思いますが、
ヘッダー・フッターが静的なHTMLなのであれば、テンプレート側で読み込んだ方が、
テンプレートを作る人のことを考えれば理解しやすいんじゃないでしょうか?

テンプレート作る人が、呼び出し元のPHPを読まないと、
ページ構成を理解できないっつうのは、Smartyの利点を1つ殺してる気もするし・・・


373 :nobodyさん:04/04/20 02:11 ID:???
Smarty plugin のpager
http://smarty.incutio.com/?page=pager
これの使い方が今ひとつ分かりません。どなたかヒントいただけないでしょうか?

374 :nobodyさん:04/04/20 19:31 ID:???
PEARのPagerとかDB Pagerを参考にしてみたら
使った事ないからなんともいえないけど

375 :373:04/04/21 14:27 ID:???
アドバイスありがとうございます。PEAR の方を見ながらいろいろと試行錯誤してみました。
今のところ次の方法で使えてます。

基本的には
{pager rowcount=レコード総数 limit=ページ内に表示する数 txt_first=""}
で、各ページへのリンクがずらずらと並びます。

細かなパラメータは、
show='page' or 'record'  //表示される数値をページ数とするかレコード数とするか
posvar='now_page'  //現在位置を識別するための変数名
forwardvars=$forwardvars  //$forwardvars=array("hl"=>"ja","lang"=>"lang_ja") など、
ページ間で引き継ぎたい変数と値
txt_prev='<<<' //「前のページ」
txt_next='>>>' //「次のページ」
separator='-' //ページorレコード数の区切り文字
shift='1' //posvar の初期値
・・・等々

なお、こちらで使用しているスクリプトとの兼ね合いから、function.pager.php の142 行目の
!empty($value) をisset($value) に変更する必要がありました。注釈文にあるように、
$_REQUEST で変数を受け取るなら変更は必要ないのかも知れません。

で、一応使えるようにはなったのですが、参考にしたPEAR/Pager のほうが使いやすそうですね。
Smarty との連携をどうすれば良いのかまだちょっと見えていないのですが・・・。
#PEAR のDB_Pager って今後はDB_common::limitQuery() の方を使うほうが良いのかな??

376 :nobodyさん:04/04/21 17:55 ID:???
>>375
limitQueryでもlimitつけたSQLでも同じなんだけど
SQLの時点でlimitをつけちゃうと実質の総レコード数が取れない
25レコードあったとしてlimit 10, 20のクエリでnumrowsすると10が返って来る
ページャのロジック書こうとすると総件数がいる
DB_Pagerの便利なとこは引数投げるとfrom-limit間のレコードだけを
fetchする状態の結果セットを返してくれる
だから俺はDB_Pager使ってる

377 :nobodyさん:04/04/23 13:02 ID:???
{section} のネストをうまく動作させることが出来ません。

{section name=book loop=$main_dat}
{$main_dat[book].name}
{$main_dat[book].memo}
  {section name=book_sub loop=$sub_dat[book]}
  abc
  {$sub_dat[book][book_sub].job}
  {$sub_dat[book][book_sub].personid}
  {$sub_dat[book][book_sub].name}
  {/section}
<br>
{/section}
section の例を見ながら↑のようにしてみたのですが、内側のループが実行されません。
元になるphp 側では、
while ($i < $num) {
  $main_dat = $result[$i];
  $smarty -> append("main_dat", $main_dat);
  $j = 0;
  while ($j < $sound_sub_num) {
    $sub_dat = $result_sub[$j];
    $smarty -> append("sub_dat[$i]", $sub_dat);
    $j++;
  }
  $i++;
}
こんな感じでassign しています(こまかな処理は省略しています)。

378 :377:04/04/23 13:03 ID:???
また、{debug} でみると変数には
{$main_dat}
Array (2)
0 => Array (3)
id => 266
name => fmlバイブル
memo => empty
1 => Array (3)
id => 267
name => PostgreSQL完全攻略ガイド
memo => empty
{$sub_dat[0]}
Array (2)
0 => Array (3)
personid => 2437
name => 深町某
job => 著者
1 => Array (3)
personid => 358
name => 佐々木某
job => 監修
{$sub_dat[1]}
Array (2)
0 => Array (3)
personid => 291
name => 石井某
job => 著者
1 => Array (3)
personid => 648
name => 山本某
job => 出版
こんな感じに表示されます。

379 :377:04/04/23 13:04 ID:???
php から渡された変数には値が入っているので、ループ無しで直接{$sub_dat[0][0].job} としても表示されませんでした。
バッククォートあたりだとは思うのですが{`$sub_dat[0][0].job`} とすると
syntax error: unrecognized tag のFatal error が出てしまいます。

アドバイスをお願いできますでしょうか? 長文ごめんなさい。

380 :377:04/04/23 13:42 ID:???
あああ。。。
{$sub_dat}
 Array (2)
  0 => Array (2)
   0 => Array (3)
    personid => 2437
    name => 深町某
    job => 著者
   1 => Array (3)
    personid => 358
    name => 佐々木某
    job => 監修
  1 => Array (2)
   0 => Array (3)
    personid => 291
    name => 石井某
    job => 著者
   1 => Array (3)
    personid => 648
    name => 山本某
    job => 出版
こうならないとsection の例文は使えないんですね。すっかり煮詰まってました。
php 側をちょっと直せばできそうです。うう、、、スレ汚し済みませんでした。

381 :nobodyさん:04/05/14 17:14 ID:???
smartyって、
外部ファイルを書き出すことはできますか?

382 :381:04/05/14 19:38 ID:???
あるいは、PHP版HTML::Templateで外部ファイルを書き出すことはできなすか?

383 :nobodyさん:04/05/14 20:12 ID:???
>>381
出力せずに一旦変数へ取り込んで、書きだしゃいいだろ。

384 :381:04/05/15 01:31 ID:???
いったん変数にとりこむって、どうすればいいのでしょうか?
$smarty->displayだと、出力しちゃいますよね。。。

385 :nobodyさん:04/05/15 01:50 ID:???
いくらなんでもマニュアル読まなさ杉
せっかく日本語であるのに

386 :381:04/05/15 02:01 ID:???
をを、みのがしていた、
// 出力を取り込む
$output = $smarty->fetch("index.tpl");
ですね。ありがとうございました。

387 :nobodyさん:04/06/06 14:52 ID:???
smartyは配列の使い方が面倒だなぁ。
連想配列はまだいいんだけど。

388 :nobodyさん:04/06/10 14:49 ID:???
ttp://www.phpinsider.com/php/code/SmartyFormtool/
のformtool_move, formtool_moveallを使いたいんだけど、

The "save_from" and "save_to" parameters are the names of a hidden fields in the form that the new orders are saved into, comma separated.

この文の意味が理解できない。orz
FORMを作るときに"save_from" と "save_to"という名前を持つ hidden フィールドを
作れということ?NAMEはいいとしてVALUEには何を入れるのだろうか?




389 :nobodyさん:04/06/10 19:33 ID:???
試さずにカキコ。

>>388 例題をそのまま入力して{debug}したら何か分かったりしませんか?

390 :nobodyさん:04/06/10 20:03 ID:???
>>389
例題をそのまま試すと、テーブルは表示されるのですが、中のボタンが表示
されるところで、

Warning: Smarty error: formtool_moveup: missing 'save_from' parameter
in C:\Apache\Smarty\Smarty.class.php on line 1102

というWarningがでます。


391 :nobodyさん:04/06/11 15:12 ID:???
ちょっとだけ試してカキコ

{formtool_moveall from="colors5[]" to="colors6[]" save_from="dd" save_to="ff" button_text=">>"}
のように{formtool_moveall ・・・} と{formtool_move ・・・} の中に、
save_from="dd" save_to="ff"
を入れておくと取りあえずmove は出来るようだ。

dd, ff はjavascript で
<input type=button value="<<" onClick="formtool_moveall(this.form.elements['colors6[]'],this.form.elements['colors5[]'],this.form.elements['dd'],this.form.elements['ff'])">
のように展開されるので、適切なものに変更すれば良さそう。

javascript は詳しくないので、あとは調べて還元してくれると嬉しい。

392 :388=390:04/06/11 16:54 ID:???
>>391
お手数おかけしましてすみません。

demo画面のソースをみると、ddやffはcolors5_saveやcolors6_saveなんかに
置き換えると良さそうです。
しかし、実行してみるとページエラーが発生してmoveができませんでした。
JavaScriptコンソールでみるとformtool_moveは定義されてないとエラーが
でています。

私もJavaScriptはよくわからないのですが、この機能は是非使いたいので
調べてみます。


393 :nobodyさん:04/06/11 17:24 ID:???
.tpl ファイルに
{formtool_init src="/hoge/javascripts/formtool.js"}
は入れた? パスは適宜直してね。

394 :388=390:04/06/11 18:04 ID:???
>>393
動きました!

javascriptへのパスが一文字間違ってました。
どうもありがとうございました。

395 :nobodyさん:04/06/28 15:15 ID:???
PHP 質問スレッドの方から誘導されて来ました。
過去ログさらってみましたが見あたらないので質問をば。
--

Smarty を久々にバージョンアップした所、動作が変わって対処に悩んでまつ。

定義されていないテンプレート変数、例えば {$hoge} に assign が無ければ、
以前はスキップしてくれたのですが、バージョンアップ後は
>FATAL .. Undefined index hoge
とエラーを吐いています。
いちいち {if isset($hoge)} と囲うのも鬱陶しく、どう対処すべきかな〜、と。

# Smarty の設定かと思いマニュアル見直しましたが適当な設定は見あたらず。
# $smarty->undefined = NULL とかも試しましたが変化無しでした。

396 :nobodyさん:04/06/28 15:55 ID:???
>395
違うかもしれんが、
{$hoge|default:""}
でいいんでないかい?

397 :395:04/06/28 16:08 ID:???
>>396
if で囲むよりそちらの修正子の方が分かりやすいですね。
取り敢えずそちらで逃げる事にします。
謝謝。

398 :396:04/06/28 16:51 ID:???
HelpのTips & Tricksにも書いてあるけど、
テンプレートの最初のほうとかに
{assign var="hoge" value=$hoge|default:""}
見たいに書いとくとすっきりするかもね。
単発で使うのなら{$hoge|default:""}でよさげ。

399 :nobodyさん:04/06/28 23:20 ID:???
もうこうなっちゃうと
テンプレートというより新しい言語のようだ。
乗り換えることにする。

400 :nobodyさん:04/06/29 00:19 ID:???
>>399
どんな優れたライブラリでも、使い方次第で単純にも煩雑にも書けるわけで。
smartyにいたってはテンプレートにロジックを書く事を許容しちゃってるので
mvc(もう少し適切な言葉がありそうだな・・・)を意識しないとsmartyを
使用する有り難味が薄れるだろうね。まぁ俺はとっくに乗り換えたんだけれど・・・。

>>395
$smarty->undefined はもう無くなったよ。未定義の場合は基本的にnullで決めうちになった。
ただ、テンプレート変数のtypoがあった場合に何も表示されないだとデバッグに困るから
$smarty->debugging = true; の時だけエラーが出るようになってる。
だからこれをfalseにしたらどう?一応2.6.3で確かめてみたところ大丈夫だったが。

401 :395:04/06/29 02:54 ID:???

>>400
情報感謝。
で、勘違い爆裂でしたので経過報告 _| ̄|◯

コンパイル後に生成されるコードはそれぞれ
修正子有り <?php echo $this->_tpl_vars['hoge']; ?>
修正子無し <?php echo ((is_array($_tmp=@$this->_tpl_vars['hoge'])) ? $this->_run_mod_handler('default', true, $_tmp, 'funi') : smarty_modifier_default($_tmp, 'funi')); ?>

で、旧バージョンの Smarty でも確認してみると生成されているコードは同じ、、という事は Smarty の問題ではない。
同じマシン上で PHP も php.ini も同じ物を使用していて両者の違いは、と言えば採用している他のライブラリ。
結局原因は Mojavi のエラー制御にある模様。
お手数かけますた、、

PHP 4.3.4 (Win)
Smarty 2.6.3

>>399,400
よろしければ遷都先のテンプレートなぞを、、
自分は次は Flexy 使ってみようかな、とか考えとります。

402 :400:04/06/29 03:57 ID:???
>>401
生成されるコードに違いはなくても、debugging = false した時に
fetchメソッドの内で error_reporting() & ~E_NOTICE されるようになってるんだけど。
mojaviはE_ALL前提で作られてるし、(ていうかコードの初っ端がerror_reporing(E_ALL);)
途中でエラーレベルも変更したりしないから、やっぱsmartyか原因かと思うんだけど・・・違う??

403 :395:04/06/29 05:20 ID:???
>>402
勉強になります。

Mojavi を使っていない方のアプリケーションの Smarty を 2.6.3 に入れ替えてみた所、問題は発生しませんでした。
って事でやはり Mojavi かな、と。。

> fetchメソッドの内で error_reporting() & ~E_NOTICE されるようになってるんだけど。

Mojavi によりエラーハンドラに errorLogger::standard() が設定されており、
件の <?php echo $this->_tpl_vars['hoge']; ?> で E_NOTICE レベルのエラーが発生し上記エラーハンドラが呼ばれています。
で、E_USER_* 以外の振り分けが考慮されておらず、errorLogger::fatal に回されて FATAL として解釈され、
FATAL ..(snip).. undefined index
のようなエラーメッセージが出力されている模様。

errorLogger::standard() の中で error_reporting の値をとってみると 2039 になっており E_ALL ^ E_NOTICE と等価でした。
php.ini と mojavi では error_reporting に E_ALL を指定しています。

眠くてまとまらないのですがこんな所で、、

# 問題が Smarty にあると思い込んで突っ走ってしまったのが敗因、、orz
# でも色々と助言をいただき良い勉強の機会になりました。多謝です&お手数かけました。

404 :nobodyさん:04/07/06 17:04 ID:???
PHP二年やってきて今更PEARとSmarty使ってコーディングしてみたんだけど、これはすごいね。
俺のアドレナリンが吹き出る。

あとはPHP エディタで対応してくれれば文句なしー。

405 :nobodyさん:04/07/14 10:40 ID:???
>>388のSmartyFormtoolですが、Javascriptがおかしいですね。

何かをセレクトして右から左へ移動…1
何もセレクトせず左から右へ移動…2

1のときと1+2のときでフォームから送られてくる値が違う
(2の操作で値全体が入れ替わってしまう)。
Javascriptがわかれば直すんだけど…



406 :nobodyさん:04/07/17 11:11 ID:ckMFe6vn
Smartyのwordwrapは日本語にかけても大丈夫でしょうか?
エンコードはUTF-8を使ってます。

407 :nobodyさん:04/07/17 11:38 ID:???
>>406
かけてみた?

408 :406:04/07/17 12:16 ID:???
>>407
いくつかの文章で試してみました。
EUC-JPの時は文字化けしてたけど、UTF-8なら一見すると大丈夫かと思ったら
よく見ると文字が一部消えたりしてました。やっぱダメそうですね。

409 :nobodyさん:04/07/22 17:59 ID:gMMxLyKo
たまにはageてもいいじゃない
やまない雨はないじゃない

410 :nobodyさん:04/08/01 00:39 ID:QU2e9+ue
一つ聞いてやるSmartyなんか使わなくてもMVCはできるだろぉう?
なんで、みんなSmaryマンセーなの?

411 :nobodyさん:04/08/01 04:46 ID:???
態度が気に喰わない

412 :nobodyさん:04/08/01 08:44 ID:QU2e9+ue
>411
えー、そんな事言わずに教えてよぉー。

413 :nobodyさん:04/08/01 13:32 ID:???
女だったら教える。

414 :nobodyさん:04/08/01 17:08 ID:???
要はさ、PHPって難しいのよ。
プログラミング言語としては簡単な部類に入るかも知れないけど、
HTMLくらいしか理解できないヤシにはとっつきにくい。
例えばforeach構文とか、デザイナーに理解できるか、と言えば
(人それぞれなのはもちろんだが)確実には理解できないと言っていい。

Perlの話になるが、代表的なTemplateとして、HTML::TemplateとTemplate::Toolkit
と言うのがある。Template::Toolkitは、様々な構文やら他のPerlモジュールを呼び出す機能やら、
その他もろもろの機能がついている。逆にHTML::Templateはif分のtrueとfalseの判定、
そしてループ機能くらいしかついていない。
どっちがいい?と聞かれれば、プログラマ的にはTemplate::Toolkitの方が楽。
でも、デザイナーには多分HTML::Templateのほうがわかりやすい。

PHP単体でMVCするのもいいんだけど、Smartyにしてある種の機能制限の方がわかりやすいって人もいるんだろう。
漏れはPHP単体のMVCだけどw

415 :nobodyさん:04/08/02 03:23 ID:???
これだけロジック書ける・書かないと動かないテンプラで機能制限も糞もない。
ビューをデータが規定するタイプのものならともかくそれ以外ならどれも変わらね。
410には馬鹿馬鹿しくて答える気がおきね。

416 :nobodyさん:04/08/02 14:58 ID:???
結局は流行かよ。
ちゅまんね〜。

417 :nobodyさん:04/08/02 14:59 ID:???
おまえら全員ハルヒコだよ。

418 :nobodyさん:04/08/03 00:05 ID:???
だまれナツチュウ

419 :nobodyさん:04/08/03 18:16 ID:???
基地外を弄るな♪

420 :nobodyさん:04/08/04 16:49 ID:T7C0bXmt
フォームから正の整数を入力して送信すると、1からその数までの整数の並びを表示するPHPスクリプトを作らなくてはならないのですが皆目検討がつきません…(つД`)
なにかアドバイスをお願いします。

421 :nobodyさん:04/08/04 16:56 ID:???
>420
宿題は自力でやろうな坊や
てか、ここで聞くな馬鹿

422 :nobodyさん:04/08/04 23:15 ID:???
ageるとロクな事がないな

423 :nobodyさん:04/08/05 21:11 ID:???
range()

424 :nobodyさん:04/08/05 23:41 ID:???
キャッシュをONにすると色々問題が起きます

425 :nobodyさん:04/08/06 11:13 ID:???
phpのnumber_formatに相当する関数ってないですよね。
っと、書き込もうとして気づいた。register_functionで追加すればいいのか。


426 : ◆AngelH/kMI :04/08/08 22:37 ID:???
>>425
number_formatならregister_function使わなくても呼べますよ

427 :nobodyさん:04/08/09 01:33 ID:???
>>426
あら本当だ。フィルタ的に使えるのね。

つーか、引数1つで戻り値があるPHPの関数は以下の要領で使えるんですね。
{$number | number_format}
{$string | md5}
引数が複数の場合はどうするんだろう。出来ないのかな?(そんな機会はそうそうなさそうだが)
マニュアルに書いてありましたっけ?
探してみたんですけど、どこに載っているのか見つけられなかった。

428 : ◆AngelH/kMI :04/08/09 05:02 ID:???
>>427
引数が複数ある場合は第2引数以降をコロン区切りで。

かなり極端な例だと
{long_multibyte_string|mb_strimwidth:0:40:"..>"}
こんな感じ。
まあでも、ここまでテンプレートに書くのはどうかとも思う・・・。
「見た目の変更」だからテンプレートに書いてもいい気がするけど

{long_multibyte_string[i].titile|escape|mb_strimwidth:0:40:".."|defaust:"データ無し"}
とかどうなのかと(苦笑

429 :425=427@ ◆Kiss.FX29M :04/08/09 09:33 ID:???
>>428
いろいろどーもです。
>>425のregister_functionに気づいた時点で書き込みをやめようと思ったんですが、
書き込んでよかった。勉強になりました。

//何気に古い酉を晒してみりゅw

430 :nobodyさん:04/08/09 18:15 ID:???
うお!誰かと思ったら(笑

431 :nobodyさん:04/08/13 16:34 ID:???
modifire?

432 :nobodyさん:04/09/01 16:13 ID:DiPaFBrX
age

433 :nobodyさん:04/09/02 00:30 ID:???
modifierでmb_truncateとかmb_wrapだの色々用意してはみたのだが、デザイナさんが使ってくれなくて寂しい

434 :nobodyさん:04/09/02 11:15 ID:???
>>433
デザイナがHTML作って、
プログラマが組み込んでいるので使い放題!

・・・・(T-T)


435 :nobodyさん:04/09/11 11:24:55 ID:vqhAT/1H
同じ例えば xxxx.php 内でユーザーがログインしてるかしてないかによって
表示を変えて使う場合、smartyのキャッシュ機能が問題起こす可能性はあるでしょうか?
誰かがログインした状態がキャッシュされてしまって
ログインしていない人にそのページが見えちゃうとか。

436 :nobodyさん:04/09/11 12:35:32 ID:???
2.6.4入れたら、単純な四則演算(+とか/とか)でエラーが出るよぅ。

437 :nobodyさん:04/09/11 18:28:06 ID:K5FwXM+0
>>435
キャッシュ、意外と使えなかった・・・。

テンプレートにアサインした結果をキャッシュするから、
テンプレートが同一なら問題起こる可能性あり。

>>436
どんな式?


438 :nobodyさん:04/09/12 01:33:02 ID:???
Smartyのキャッシュ機能かぁ、使ったこと無いが需要あるのかな。
php使った動的ページで、しかもログインページなんて
ブラウザのキャッシュすら一応Metaタグとかで無効にしといた方が良い気がするが。

テンプレートエンジンのオーバーヘッドが気になるのなら
それこそ、動的な出力とインクルードしたテンプレートから生成された出力結果を
ファイルに書き出して静的htmlファイルを公開フォルダに置いた方が
良いだろうし。

439 :nobodyさん:04/09/12 02:45:25 ID:JBS0QrEF
>>435
キャッシュIDをうまく使ってやれば平気。

>>438
テンプレートエンジンより、assignする値をDBなんかから持ってきてるときにオーバーヘッドがでる。

440 :nobodyさん:04/09/12 04:22:23 ID:???
Smartyってあんまメリットなくない?
PHP自体で十分デザインとテンプレートの分離はできるし、
キャッシュ機能つくるのも特に大して手間じゃないし…



441 :nobodyさん:04/09/12 04:33:01 ID:???
>>440
まずは自分のレスだけでいいから省みてみろ

442 :nobodyさん:04/09/12 05:08:05 ID:???
>>441
まずは自分のレスだけでいいから省みてみろ

443 :nobodyさん:04/09/12 05:18:14 ID:???
>デザインとテンプレートの分離

ワラッタw

444 :nobodyさん:04/09/12 06:21:43 ID:???
>>439
??そりゃDBだろうがlogファイルからだろうが、演算結果だろうが
動的に出力する値は全部オーバーヘッドになるだろうさ。
Smartyのキャッシュ機能とはまるで関係ないのでは?
そこが気になるならWebアプリ自体使えないと思うが。


445 :nobodyさん:04/09/12 06:31:44 ID:???
>>440
Smartyのメリットはプログラマよりデザイナに対してのものだと思う


446 :nobodyさん:04/09/12 06:37:44 ID:???
いま、>>445がいいこといった。 メモしとけ。

447 :nobodyさん:04/09/12 06:45:25 ID:???
>>444
いちいち値取りにいくのがオーバーヘッドになるから
その為のキャッシュ機能ですが?


448 :nobodyさん:04/09/12 08:27:29 ID:7xfelydB
キャッシュをONにしたら、2,3割の確率で、しかもランダムな箇所で、
エラーを吐くようになったのですが・・・。

これってどうしようもないですか?

ひょっとして、テンプレートファイルのなかで
{php}
ほげほげ
{/php}
を数カ所使ってるのがいけないのでしょうか・・・

449 :nobodyさん:04/09/12 13:42:47 ID:???
>>445
いや、デザイナの為ならなおさらSmarty使わないほうがいいだろw
DWとかはPHPタグで囲んだ部分は表示されないようになってるし

450 :nobodyさん:04/09/12 15:17:40 ID:???
>>448
せめてエラーメッセージを書かないと。

451 :nobodyさん:04/09/12 15:31:00 ID:???
>>448
すいません、同時にPHPを5.0.1にあげたんですが、4.3.8に戻して、
smartyのキャッシュを有効にしても、全然問題なかったです。

PHP5.0.1のせいだったみたいです。どうもすみません。
//しかしPHP5のSOAP使いたい・・・

452 :436:04/09/13 00:26:30 ID:???
>>437
遅レスすまんす。
普通に{$hoge+100}とかです。
本家のフォーラム見たら同じ問題が出ていて、CSV版では問題ないよ。って書いてあった。
めんどいから2.6.3に戻しましたけど。

453 :nobodyさん:04/09/13 02:45:25 ID:???
>>449
オーサリングツール使ってhtmlファイルだけ渡して後は知らねぇってデザイナと、
デザイン上の修正の度にプログラマにも修正依頼しなきゃいけない様な
状況でしか仕事したことないなら、その環境は恥じた方がいいよ。

454 :nobodyさん:04/09/13 10:46:56 ID:???
別にオーサリングツールで編集しやすいって言っただけでなんで…
勝手に勘違いして人の仕事環境妄想して、妄想で創った人物像相手に
レスする癖は恥じた方がいいよ?
例えばSmartyのforeach文が修正できてphpのそれが修正できないなんて奴いねぇだろw
対応エディタもマニュアルも多い分Smarty使うよりPHPタグで分けた方がデザイナ的にも
やりやすいってだけの話なんだけど?

455 :nobodyさん:04/09/13 11:07:47 ID:???
PHP-users とはまた違った痛さがこのスレにはある!

456 :nobodyさん:04/09/13 11:46:10 ID:u+cNXRva
>>449
Smarty用のDWプラグインがあるよ。

457 :nobodyさん:04/09/13 12:00:43 ID:???
>>456
それXOOPSだと使えないよね

458 :nobodyさん:04/09/13 12:02:37 ID:???
あぁごめんXML修正すりゃいけるか

459 :nobodyさん:04/09/13 13:27:37 ID:???
なんかそのままだと日本語との兼ね合いで調子悪いな>DWプラグイン
変なとこでSmartyタグ扱いされちゃう。

460 :nobodyさん:04/09/13 14:17:29 ID:???
>>459
SJISだと { } が悪さをする。ってかそれはSmarty全般じゃない?

461 :nobodyさん:04/09/13 17:27:51 ID:E8MZljJ1
>>459-460
結構困るよな。パーサをマルチバイト対応させる必要があるよな。

462 :nobodyさん:04/09/13 17:45:08 ID:???
>>461
泥臭くデリミタをオーバーライドしてるよ。俺。

463 : ◆AngelH/kMI :04/09/14 02:16:54 ID:???
>>451
あー。まだ見てますかね。
謎エラーはSmartyが原因ではなくてPHP本体が原因。

--enable-zend-multibyteつけてmakeしてませんか?
4.3.8以降/5.0.0β3以降あたりから出る模様です。

464 :451:04/09/14 10:32:41 ID:???
>>463
>--enable-zend-multibyteつけてmakeしてませんか?
ビンゴです。

つけないで、5.0.1入れてみます!
ありがとうございます。

465 :451:04/09/14 13:59:25 ID:???
>>464
無事PHP5.0.1入れられました。エラーもおこりません。
ありがとうございます。

さぁ、SOAPであそぼう。。。

466 :nobodyさん:04/09/15 16:10:31 ID:sZX1kIS0
smartyで携帯サイト作れるのかな?

467 :nobodyさん:04/09/15 17:19:27 ID:???
>>466
作れます。

468 :nobodyさん:04/09/15 18:59:41 ID:???
SJISでややこしいことになりそうだが・・・

469 :nobodyさん:04/09/15 19:07:40 ID:???
>>468
大丈夫ですよー。
内部エンコードこそ EUC とかで書きつつ
mbstring.http_output の値を SJIS にしちゃえば OK です (´ω`)



470 :nobodyさん:04/09/15 20:41:54 ID:dqyUiMN9
>>469
それやんないと能とか条が化けるんだよな。

471 :nobodyさん:04/09/15 22:01:32 ID:???
>468
普通にSJISで問題ないよ
>469
EUCにしちゃうと絵文字のバイナリでの入力ができなくなるから使いづらい。
>470
どんな使い方してるんだ?

472 :nobodyさん:04/09/15 22:21:33 ID:C49Dq6Pt
>>471
>>470ではないけどテンプレート中の文字が化けるっしょ?
--enable-zend-multibyteを付けてビルドして、mbstring.script_encoding=SJISを設定してれば
SJISをちゃんと扱えるようになるけど、パフォーマンスが落ちるし。

絵文字は確かに扱いづらくなりますな。
キャリア間の非互換やPCでの表示もあるから、絵文字はプレースホルダを
端末に応じて置換してテンプレートに渡してるんだろうけど、
assignの段階では置換せずにoubput_handlerに
SJISへの変換と絵文字プレースホルダの置換をする関数を指定すればいいんじゃないかな。

まさかユーザーから入力された絵文字を生のままログに保存してたりしないよね?

473 :nobodyさん:04/09/15 22:50:59 ID:???
PHPの書籍で入門以外のってないのかな。
どれも入門ばっか・・・

474 :nobodyさん:04/09/15 23:02:47 ID:???
>>472
471ですが、鯖の設定は他人任せだからよーわからんです。
夜間だと秒間8〜12アクセスある携帯サイト運営してて
体感的に遅くなったことはないです。
携帯相手だから速度は気にする必要ないのかもしれんが。

絵文字とhdmlはoutputfilterで自動変換させてる。
PCは絵文字画像ね。

ユーザーの絵文字はiモードの絵文字(バイナリ)にしてから
mysqlに入れてるけど何か問題ありますか?
ちょっと前まではbase64_encodeしてから入れてましたが
面倒なのと問題がないのとでそのまま入れてます。
単純にわからないので教えてください。
教えて君でスマン。

475 :nobodyさん:04/09/16 03:23:52 ID:???
>>474
なるほど。納得。
iモードのやつに統一してあるならOKっす。
>>472の意図はDoCoMo/au/Vodafoneで別々の絵文字を
そのまま扱ってたらアレだなあと思ったので。

満足なパフォーマンスが出てるなら気にすることもないです。
それ以前にmbstring.scriptl_encodingは未設定で、
たまたまうまく動いている可能性が高いですが。

476 :nobodyさん:04/09/16 05:22:54 ID:???
なんかすげーためになった。ありがと。
今のとこ携帯サイトの仕事は無いんだが・・・

477 :nobodyさん:04/09/17 00:34:45 ID:???
>>475
ケイタイサイトは泣けるぞ。
端末ごとに動作違ったりするから、真面目にやろうとすると大量のケイタイとにらめっこだ

478 :nobodyさん:04/09/18 17:46:27 ID:???
>>475
なんかセキュリティーホールがあるのかと思ってすごいビビってましたよ。
絵文字は各機種ごとにそのまま保存してても
問題ないと思いますね。ようはユーザーに対しそれをどう扱うかだし。
うちはiモード重視だからi基準にしちゃってますが。
mbstring.script_encodingは未設定ぽかった。
試しにaaacafeとc-sideで試したらOKでした。

>>477
かなり泣けるよね。
特にEZ端末で同じ会社の端末でも挙動が違ったり
locationが使えなかったりとかもろもろと・・・。

479 :nobodyさん:04/09/18 18:47:21 ID:???
ttp://www.geocities.co.jp/HeartLand-Yurinoki/1836/c_aa_archive/jikken/Denmark_and_Tomasson.html

泣ける

480 :nobodyさん:04/09/18 20:43:00 ID:???
>>479
畜生、モニタが滲んでよく見えねえよ・・・

481 :nobodyさん:04/09/19 19:04:37 ID:???
こわくてみれません。

482 :nobodyさん:04/09/19 19:10:05 ID:???
感動話だよ。

483 :nobodyさん:04/09/19 20:18:01 ID:???
泣けます。

484 :nobodyさん:04/09/19 21:45:49 ID:???
なぜこのスレに張るのかがイマイチ分からないけど泣ける。

485 :nobodyさん:04/09/22 01:32:35 ID:???
意図がわからんが、泣ける。

486 :nobodyさん:04/09/22 02:08:38 ID:???
#セ\NAugmc

487 :nobodyさん:04/09/22 20:46:22 ID:S3VBXifE
php.iniは
output_buffering = On
output_handler = mb_output_handler
mbstring.internal_encoding = EUC-JP
mbstring.http_input = auto
mbstring.http_output = SJIS

$buffer_euc = $smarty->fetch('index_m.tpl',$smarty_cache_id);
$buffer_sjis = mb_convert_encoding($buffer_euc,"SJIS");
//---------------------------------------------------------------------------
header( 'Content-Type: application/xhtml+xml; charset=Shift_JIS' );
header( 'Content-Length: ' . strlen( $buffer_sjis ) );
//--------------------------------------------------------------------------
$smarty->display('index_m.tpl',$smarty_cache_id);
としてるのに、出力がEUCになってしまいます。

どんな原因が考えられるのでしょうか?

488 :nobodyさん:04/09/22 22:03:51 ID:???
泣いた

489 :nobodyさん:04/09/22 22:05:55 ID:???
・phpのバージョンくらいは書く
・$buffer_euc, $buffer_sjis等の出力の文字コードをチェックするなりして、問題を絞り込む
・キャッシュが更新されずに古いものが使用されてないか?

490 :nobodyさん:04/09/22 23:09:16 ID:???
>>489
>>488が泣いたのはそんな理由じゃないと思うよ。
まずoutput_buffrering不要。
一応mb_convert_encodingの第三引数に"EUC-JP"を入れといた方が無難。
極め付けに痛いのが $smarty->display('index_m.tpl',$smarty_cache_id);
echo $buffer_sjis; でええんちゃうかと。

491 :487:04/09/23 11:59:14 ID:???
>>488-490さん、ありがとうございます。

すいません、情報不足で。PHP5.0.1です。
キャッシュは、全部けしてもおなじ状況でした。

で、まさかと思って調べてなかったのですが、
$buffer_euc = $smarty->fetch('index_m.tpl',$smarty_cache_id);
のちの$buffer_eucは空でした。
なので文字コードは、$buffer_euc、$buffer_sjisともに空で、
ただし、
$smarty->display('index_m.tpl',$smarty_cache_id);
はなぜか(EUCで)表示できてます・・・。

>>490
echo $buffer_sjis; でええんちゃうかと。
いや、どうしても重くならざるをえないページなので、
キャッシュをつかいたかったもので。

やはりPHP5.0.1というのが相性悪いのでしょうか?
ただ、スクリプトの他の部分では、$smarty->display成功してるんですよね。(ちゃんとSJIS)

変数やファイル名が違うだけで、そこといっしょのことをしてるはずなんですが・・・

492 :nobodyさん:04/09/23 12:05:14 ID:???
>>491
意図したコードと違うことが書いてある気がする。もういちどよく見直せ。
適切なタイミングでnew Smarty()してないとかw

んで、>490ではないが、featchの内容とdisplayの内容が同一で、
SJISに変換したものが$buffer_sjisに入ってるなら、それを出力してやったほうが処理は早いぞ。

493 :nobodyさん:04/09/23 12:41:42 ID:???
488だが>>479について泣いたつもりだったんだよな

494 :487:04/09/26 01:42:15 ID:ORPXRj+I
>>487です。
とりあえず文字化けは「解決」しました。というか、あきらめました。
application/xhtml+xml;をあきらめて、"Content-type: text/html";にしたら、
文字化けしないようになりました・・・

ただ、別の問題が生じてます。
>>487のソースで、
HTTPヘッダが「Content-Length: -」となってしまいます。
どうにかして、smartyを使いつつ、「Content-Length」を正常に表示させる方法とかないでしょうか?

ob_関係の関数使おうかと思ったのですが(ob_get_lengthとか)
「smarty->display」でブラウザに表示されるときはSJISですが、
その直前まではEUCなので、文字数がずれてしまいます・・・
どなたか裏技っぽい方法でもいいので、お助けいただければ幸いです。


495 :あぼーん:あぼーん
あぼーん

496 :nobodyさん:04/09/26 19:15:27 ID:???
結局>>495のアドレスは何だったんだろう?

497 : ◆AngelH/kMI :04/09/28 02:48:49 ID:???
>494
$smarty->fetch()で表示内容取得して
文字コード変換かけてstrlenで測るとか?

・・・かなりダメそうな方法だ(苦笑

498 :487:04/09/28 11:55:20 ID:???
>>404
いや、それ、>>487でやってます。(content typeは違うけど)

そしたら、「Content-Length: -」となってしまうので。。

499 :nobodyさん:04/09/28 15:25:48 ID:???
>>494
アウトプットフィルタプラグインとかどうよ

500 :487:04/09/29 12:13:50 ID:???
>>494

ん・・・・・あんまり概念が理解できてないから、自作はきびしいかも。。。

501 :487:04/09/29 12:14:03 ID:???
もとい、>>499さん。

502 :nobodyさん:04/10/11 16:58:02 ID:RLUAfbkL
HDMLの携帯サイトを作るのにsmartyは使えませんよね。


503 :nobodyさん:04/10/11 18:13:33 ID:???
>>502
どうせフレームワーク組んじゃうんだろ?
んじゃpattemplateのほうがシンプルで扱いやすいだろ。
smartyはあくまで、いろいろ自分で組めない厨向けのテンプレだぞ。

504 :nobodyさん:04/10/12 12:14:58 ID:???
>>502
使えますってか使いました。

505 :nobodyさん:04/10/12 14:58:47 ID:???
>>503
まず出来上がりの早さを求めるのであって
自分で出来るか出来ないかの問題ではない

そこから、どう不都合になるか考える。
出来てから考える。

誰でも自分で作れるよ。でも1年かかります。そんなの待てるか。
といわれちゃうよ

506 :nobodyさん:04/10/12 16:27:47 ID:bb34UBPS
>>503
まあ、それをいうならPHPはあくまで、いろいろ自分で勉強できない厨向けの環境だからな。

507 :nobodyさん:04/10/12 16:42:18 ID:???
ということにしたいのですね:-P

508 :nobodyさん:04/10/12 17:24:13 ID:bb34UBPS
そういや、PECLってどうなったん?
あと、なんかCPANみたいなのやるっていう話なかった?

509 :nobodyさん:04/10/12 19:39:43 ID:???
誤爆してるぞ

510 :nobodyさん:04/10/16 23:33:47 ID:OMhy7HMx
便利そうなのでSmarty使ってみようと思ったけど
インストールすら出来ない(´・ω・`)
初めのHello!,Ned1が出ないし

きちんとinclude_pathを設定して...Example 2-9でエラー
unexpected T_STRING in c:\〜 in 20

はて、config_dirのパスが設定出来ないらしい
Windowsの絶対パスはc\:からだよね?

511 :nobodyさん:04/10/17 05:34:27 ID:???
 ・ ”C:\〜” ではなく ”C:/〜” を使ってみる
 ・ 相対パスを使ってみる

512 :511:04/10/17 05:35:51 ID:???
なんか腹が立つな
>(´・ω・`)


513 :nobodyさん:04/10/17 07:09:37 ID:???
こころが狭いか、2chに不慣れなやつだな。

514 :nobodyさん:04/10/17 17:17:49 ID:???
自分のせいじゃなくシステムのせいにする人格の象徴⇒(´・ω・`)
もしくは某板の糞コテ

515 :nobodyさん:04/10/17 18:11:08 ID:???
なんか、nobodyさんはすべて同じ人物だと思ってるのと同じ程度の痛さだね。

516 :nobodyさん:04/10/17 18:18:34 ID:???
字句解析までしか出来ない駄目AIの僻み

517 :nobodyさん:04/10/17 21:08:07 ID:2DZWHiAE
511さんのオカゲで出ました。ありがとう
やはりC:/〜でした。

518 :nobodyさん:04/10/27 11:44:54 ID:5LD6Mw3o
アプロードしたtemplates_cの中のファイルが削除できない。
templates_cそのものも削除できない。
なぜかな?

519 :nobodyさん:04/10/27 12:38:36 ID:???
templates_cの中のファイル群はWebサーバの動作権限(ユーザー)で作成されるから。


520 :nobodyさん:04/11/09 09:28:23 ID:RHwN8VlW
smarty使ったblogの開発で人募集してるので
オープンソースに興味がある人とか参加してみたら?
--------------------------
【2ちゃんブログ】次世代開発中心 Part2@ブログ
http://pc5.2ch.net/test/read.cgi/blog/1092616279/l50

391 名前:忍ロボ ◆O6dempau.2 本日のレス 投稿日:04/11/09 01:48:13 GsdPVZqn
ちゃぶだい
開発に参加してくれる人募集します〜

・開発者さん(PHPで開発できるひと)
・デザイナーさん(デザインテンプレート作成)

こちらのメールフォームから連絡よろしくですー

http://chbox.com/mail/
■ハンドルネーム
■連絡先メールアドレス(フリーメール不可)
■ホームページ/weblog URL
■(開発者? / デザイナー? / その他)
■連絡事項(あれば)

521 :matsumoto:04/11/10 22:33:26 ID:6T9+fSCp
smartyでテンプレートには設定しているけれど、assignし忘れた場合、
Arrayと出力されてしまうけれど、これを 表示しないようにする簡単な方法はないのでしょうか。


522 :nobodyさん:04/11/11 00:19:20 ID:???
>>521
それは、
テンプレートで参照してるけど、
assignしていない場合に、Arrayと出力されていて、
その現象を回避したいってこと?

523 :nobodyさん:04/11/11 01:14:01 ID:???
別にArrayなんて出ないけどな。違うものassignしてるんじゃないの?

524 :matsumoto:04/11/11 02:52:04 ID:IGJG68qY
■テンプレート
{$aaa} -- {$bbb}

■PHPプログラム
$smarty->assign("bbb" , "BBB");
// $aaaについてはassignしない

■出力
Array -- BBB

となってしまいます。わたしだけでしょうか?
他の方はなりませんか?

525 :matsumoto:04/11/11 02:55:24 ID:IGJG68qY
追記:
524の場合で、こうなってほしい。
PHPプログラムは同じ。
■テンプレート
{$aaa}--{$bbb}
{if $aaa}{$bbb}{/if}

■出力
--{$bbb}

こうなってほしいのですけれど。
つまり、単独では空文字になって、ifで使用した場合にはFALSEの扱いになるような...

526 :matsumoto:04/11/11 02:56:49 ID:IGJG68qY
すみません。出力間違いです。
■出力
--BBB

です。

527 :nobodyさん:04/11/11 11:07:43 ID:???
$smarty->debugging=TRUE;
にしてみ。
絶対、他の値が入ってる。

528 :nobodyさん:04/11/12 18:43:42 ID:???
間違いなく入ってるね。

>>524
PHPのなかみ 出し惜しみするなよ。

529 :nobodyさん:04/12/08 01:12:49 ID:???
これって元になったテンプレートエンジンとかあるんでしょうか?
源流ってどのへんになるんだろ?

530 :aya:04/12/09 17:20:27 ID:hK+hWFtH
windows2000(IIS)でのsmartyの設定でつまづいてしまっています。

まずダウンロードしたSmarty-2.6.6.tar.gzを解凍し、その中のlibsの中身
を、
c:\php\smarty というフォルダを作ってコピーし、
C:\WINNT\のphp.iniのinclude_pathを下記のように変更しました。

// 変更前(既に入れたpearのパス)
include_path=".;C:\php\pear;c:/php/includes;c:/php/pear"
// 変更後(smartyへのPATH)
include_path=".;C:\php\pear;c:/php/includes;c:/php/pear;c:/php/smarty
"

これで、smarty/demo/index.php(SMARTYのテストプログラム)にアクセスすると

---------------------------------------------------------------
Warning: main(Smarty.class.php): failed to open stream: No such file or directory in c:\inetpub\wwwroot\nyuukin\demo\index.php on line 4

Fatal error: main(): Failed opening required 'Smarty.class.php' (include_path='.;C:\php\pear;c:/php/includes;c:/php/pear;c:/php/smarty') in c:\inetpub\wwwroot\nyuukin\demo\index.php on line 4

---------------------------------------------------------------
のエラーが出てしまいます。 smartyへのpathを通すのにはどうすればいいんでしょう?
不躾ですみません。




531 :nobodyさん:04/12/10 04:49:38 ID:gB4mZSIs
PathはSmarty.class.phpがある場所にしなさい
と出てますが・・・ちゃんとある?

532 :nobodyさん:04/12/10 10:44:56 ID:???
Smarty.class.php は libs の中にある。

533 :aya:04/12/10 10:58:34 ID:f65efB7J
>>524
そうなんですよね。ちゃんと設定したはずなんですが、pathが
通っていないんです。
既に稼動しているPEARのライブラリのパスは
include_path='.;C:\php\pear;c:/php/includes;c:/php/pear'で
pear配下のファイルがincludeできるのですが、
(include_path='.;C:\php\pear;c:/php/includes;c:/php/pear;c:/php/smarty'
として、
c:/php/smarty/Smarty.class.php
にアクセスするとエラーになってしまうんです。

include_pathは、ウィンドウズのシステム環境変数のPATH設定と
同じ感覚でセットアップしているのですが・・
どうしてなんだろう?







534 :532:04/12/10 11:14:16 ID:???
>>533
せっかく返事したんだから読めよ。

require_once('libs/Smarty.class.php');
でいけるんじゃねーか。
いけなかったら、libsにパス通せ。

535 :aya:04/12/10 12:22:05 ID:f65efB7J
>>533
ごめんなさい。間違えました。533スレッドは、
>>533さんへのレスポンスでした。しっかり読みました。

要は、解凍したlibの中身を、smarty直下に移動したわけだから、
c:/php/smarty'
とinclude_pathを追加したんです。



536 :532:04/12/10 20:07:24 ID:???
\ と / が混在してるのが気になる。

ひとまず\で統一してみれば?

537 :aya:04/12/11 13:42:57 ID:Jq/LlFpl
>>536
そうなんです。
ディレクトリセパレータを(/),もしくは(\)に統一して実行してみたの
ですが、PEARは正常に稼動し、SMARTYは相変わらずPATHが通っていない
状況が続いています。

538 :nobodyさん:04/12/11 21:58:48 ID:???
Pathは通ってるけどSmartyが未設定なんじゃないの。
だいたいPath通す必要性ないよ。

539 :nobodyさん:04/12/12 17:33:42 ID:???
>>537
Smarty-2.6.6\demo\index.php
> require '../libs/Smarty.class.php';
なわけだが。

540 :nobodyさん:04/12/13 17:56:41 ID:???
>>539
どうやら>>537はlibsの中身だけを
c:\php\smarty\ に置いてるらしいぞ。
今まで読んだ感じだと。

541 :nobodyさん:04/12/13 22:35:43 ID:???
ayaって釣り馬鹿の共有コテじゃないか

542 :nobodyさん:04/12/16 17:12:21 ID:RdrCSV2b
連想配列の添え字の指定を変数で行いたい時ってどんな書き方すれば良いんですかね?
{$DATA.$key}
こんな指定の仕方がしたいんですが…

543 :nobodyさん:04/12/16 22:21:21 ID:???
>>542
mk:@MSITStore:c:\php\HtmlHelp\php_manual_ja.chm::/ja/language.types.array.html

544 :nobodyさん:04/12/16 23:45:45 ID:???
>>543 ???
Smartyでの指定の仕方なのですが

545 :nobodyさん:04/12/17 01:16:41 ID:???
>>544
demo\index.php、demo\templates\index.tpl嫁よ。

546 :nobodyさん:04/12/17 01:52:06 ID:???
>>545 ???
どこにも連想配列のKeyを変数で指定している記述は見当たらないんですが

547 :nobodyさん:04/12/17 11:34:54 ID:???
てか、
{$DATA.$key}
これでできるでしょ…。試してないの?
{$DATA[$key]}
でもできるみたいだけど。


548 :nobodyさん:04/12/19 11:34:13 ID:???
Smartyって配列の扱いが面倒な気がするのですが
こんなもんなんでしょうか?
そのうちなれるのかな。
ほかのテンプレートはどうなんすか?

549 :nobodyさん:04/12/19 11:37:18 ID:???
>>548
最近気づいたんだけど
section
でなく
foreach
を使うと配列ラクだよ

550 :nobodyさん:04/12/19 15:48:21 ID:???
テンプレートの記述とは書いてないけどね

551 :nobodyさん:04/12/19 15:58:49 ID:???
>>550
言うたら何が面倒なのかも書いてないやろ。

552 :nobodyさん:04/12/19 16:36:21 ID:???
>>550
なにが面倒なの?

553 :nobodyさん:04/12/19 21:03:08 ID:???
誰がホセなの?

554 :nobodyさん:04/12/19 21:12:51 ID:???
だれがつまらんこと言ってるの?

555 :nobodyさん:04/12/19 21:40:23 ID:???
>>554
まずお前が鼻に付く

556 :nobodyさん:04/12/19 23:38:58 ID:???
そしてお前があごに付く

557 :nobodyさん:04/12/20 20:15:55 ID:???
>>556
何?同じようなこと繰り返せば面白いとでも思ってんのかバーカ

558 :nobodyさん:04/12/21 04:09:14 ID:???
>>557
なんか嫌なことあったの?

559 :nobodyさん:04/12/21 12:33:51 ID:???
SmartyとPear::Auth と HTML_QuickFormを併用してMVC設計してる人いないかな?

560 :nobodyさん:04/12/21 13:46:25 ID:t6MkBwt3
寒稽古してる人いる?

561 :559:04/12/21 13:49:27 ID:???
HTML_QuickFormを使うとMとVの分離が怪しくなる。
しかもSmartyとの連携も怪しくなってきたりして。

562 :nobodyさん:04/12/21 17:58:00 ID:???
>>561
同感。

563 :nobodyさん:04/12/23 06:26:50 ID:???
HTML_QuickFormじゃなくてSmartyValidatorのほうはどうですか?誰か使ってる人います?


564 :nobodyさん:04/12/27 15:43:31 ID:???
SmartyValidatorってはじめて聞いたので、ググってみた。
・・・情報が少なすぎる。

565 :nobodyさん:05/01/03 00:08:40 ID:???
最近PHP始めたのですが、ソースが肥大化してしまいSmarty化しているのですが、
while($row = mysql_fetch_array($left)) {
print("[".$row["month"]."/".$row["day"].]");
}
こんな感じのをSmarty化できずに困っています。
{foreach}{/foreach}などを使ってやるようなことは解ったのですが、
key とか name などの使い方が解りません。どなたか教えてください。

566 :nobodyさん:05/01/03 00:32:46 ID:wnsIsqHm
>>565
そんな単純なコードをいじったところで変わりぁせん

567 :nobodyさん:05/01/03 20:57:14 ID:???
>>565

こんな感じか。

PHPのコード
$rows = array();
while ($row = mysql_fetch_array($left)) {
$rows[] = $row;
}
$smarty->assign('rows', $rows);

テンプレート
{foreach from=$rows item=row}
[{$row.month}/{$row.day}]
{/foreach}

Smartyマニュアルの「第4章 変数」の「phpから割り当てられた変数」のあたりを
読むといいよ。


568 :nobody& ◆vGPd8m6uvw :05/01/03 21:01:00 ID:???
>>567さん
感謝です。
>Smartyマニュアルの「第4章 変数」の「phpから割り当てられた変数」のあたりを
>読むといいよ。

是非読ましていただきます。

569 :nobodyさん:05/01/04 23:38:34 ID:???
Smarty側でforloopを
使うことは罪に当たります。

570 :569:05/01/04 23:39:24 ID:???
2005年における初めてのネット上での書き込みが
こんなくだらないものだった。
もう少し考えてから書けば良かったのに俺。

571 :nobodyさん:05/01/06 13:52:57 ID:???
ところで、{foreach}間でeregを使って正規表現を使うには、どうすればいいですか?

572 :nobodyさん:05/01/06 18:12:11 ID:DWsuB/B6
html_optionsではき出してる各要素に、
onclickをつけてjavascriptを呼び出したいんですが、
何か良い方法ないですかね

573 :nobodyさん:05/01/06 18:23:57 ID:???
smartyってHTMLには便利なんだけど
メールのテンプレートに使おうとするとたいへん。
IF文をうまく書かないと
改行がへんなとこで入ったり、改行しなかったりして
結果、テンプレートが見にくくなる。
うまい方法ないかなー?

>>572
適当に html_options2 とか作って
パラメータを増やす

574 :nobody& ◆k0eA9hHNm2 :05/01/07 00:04:35 ID:???
mysqlから取り出したデータを表示させるチャットスクリプトなんですが、
自動リンクさせるためにregex_replaceを追加したのですが、エラーが起きてしまいます。
ソース:{$row.comment|regex_replace:"(https?|ftp)(://[[:alnum:]\+\$\;\?\.%,!#~*/:@&=_-]+)":" <a href=\"\\1\\2\" target=\"_blank\">\\1\\2</a>"}
どうすればいいですか?

575 :nobodyさん:05/01/07 00:09:56 ID:???
>>574
エラーメッセージを読め

576 :nobody& ◆QWv3R1XL8M :05/01/07 00:17:18 ID:???
>>574 追記
Warning: Unknown modifier '(' in ちょめちょめ on line 24
と出てします

577 :nobodyさん:05/01/07 00:38:20 ID:???
>>576
あんた誰?

578 :nobodyさん:05/01/07 01:34:57 ID:???
>>577
初心者です。

579 :nobodyさん:05/01/07 01:36:36 ID:???
もしかして>>574=>>576か?
だったら書き込み毎に変えるようなトリップ使わずに
元質問のレス番を名乗れ

580 :574:05/01/07 01:41:48 ID:???
>>579さんの指摘はごもっともです。以下気をつけます。


581 :nobodyさん:05/01/07 01:49:23 ID:???
Warning: Unknown modifier '(' in と出てもおそらく '(' が原因ではない。
'/' 3つをエスケープしてないじゃないか。

582 :574=580:05/01/07 02:07:47 ID:???
>>581さん指摘ありがとうございます。
ソース:{$row.comment|regex_replace:"(https?|ftp)(://[[:alnum:]\+\$\;\?\.%,! #~*/:@&=_-]+)":" <a href=\"\\1\\2\" target=\"_blank\">\\1\\2</a>"}

{$row.comment|regex_replace:"'(https?|ftp)(://[[:alnum:]\+\$\;\?\.%,! #~*/:@&=_-]+)'":" <a href=\"\\1\\2\" target=\"_blank\">\\1\\2</a>"}
に変えると正しく作動するようになりました。

583 :nobodyさん:05/01/07 02:12:01 ID:???
ところでこういう問題は起きていないか?
http://www.ironhearts.com/diary/archives/000365.html

584 :574=580=582:05/01/07 02:14:27 ID:???
>>583さん
まさにそれです。そのとうりです。

585 :nobodyさん:05/01/07 10:29:27 ID:???
>582
そんなのテンプレートに書くの?
modifierプラグイン書いたほうがいいよ

586 :nobodyさん:05/01/07 11:46:56 ID:???
>>585
俺もそう思う。
modifier.alink.php みたいな。
なんか落ちてそうだけどな。

587 :nobodyさん:05/01/14 00:43:42 ID:???
質問なんですが、インストールする場合は/usr/local/・・・っていう場所じゃなくてもOKです?
たとえばレンタルサーバにSmarty置いて動作させたりは可能なんでしょうか・・。

588 :nobodyさん:05/01/14 02:08:19 ID:???
>>587
まず試せ。

589 :nobodyさん:05/01/14 02:18:55 ID:???
>>588
その回答だと使えるんですね、サンクス

590 :nobodyさん:05/01/14 09:42:08 ID:???
ムッキー

591 :nobodyさん:05/01/14 20:49:49 ID:???
かわいい

592 :nobodyさん:05/01/18 16:40:18 ID:GbvmkgfT
誘導尋問のプロフェッショナル発見

・・・と書き込んでおこう

593 :nobodyさん:05/01/18 20:43:29 ID:???
その程度の回答で満足できるなら
なぜ最初に試さないんだろう・・・

594 :nobodyさん:05/01/20 08:23:23 ID:???
試すより聞くほうが楽だからだろ

595 :nobodyさん:05/01/20 10:25:20 ID:???
試す 同期型処理
聞く 非同期型処理

596 :nobodyさん:05/01/20 14:29:42 ID:???
試す 自分で行動
聞く 人に頼む

597 :nobodyさん:05/01/20 15:58:23 ID:???
試す すでに環境が用意できている
聞く まだ環境が用意できていない

598 :nobodyさん:05/01/21 00:30:18 ID:Q7KPWxeo
・1
 ・2
 ・3
  ・4
   ・5
  ・6
 ・7
  ・8

ttp://www.skullysoft.com/soft/ssc-board/bbs/main/c-board.cgi?id=cboard
このようなツリー型の掲示板に代表されるような木をSmartyで表示したいと思っています。
foreachやsectionでは決まった深さであれば入れ子にして表示することができるのですが

例えば2階層なら

{foreach .....}
・根
 {foreach .....}
 ・葉
 {/foreach}
{/foreach}

のようにして表示できるのですが、実行時に深さが決まる場合はどのようにすればよろしいのでしょうか?
ご存知の方がいらっしゃいましたらよろしくお願い致します。

599 :nobodyさん:05/01/21 00:43:39 ID:???
>>598
{foreach .....}
・根
 {foreach .....}
 ・葉
  {foreach .....}
  ・葉
   ....
  {/foreach}
 {/foreach}
{/foreach}

600 :nobodyさん:05/01/21 01:06:26 ID:???
>>242の方法はどう?

601 :nobodyさん:05/01/21 01:46:56 ID:???
>>598
最近この手のツリー式BBS作ったけどツリー作る所まではロジック側でやったよ。
表示順とインデントまで作ってSmartyの方では単純なループで表示させるだけって感じで。

602 :nobodyさん:05/01/21 03:01:42 ID:???
>>600
ありがとうございます
この方法で試してみたところ上手くいきました
(key val)が1つの葉で多分木の状態になっています

- base.html

<ul>
{include file="incl.html" root=$root}
</ul>

- incl.html

{if isset($root.key)}
<ul>
 {foreach from=$root item=node}
  {include file="incl.html" root=$node}
 {/foreach}
</ul>
{else}
 <li>{$root.key} - {$root.val}</li>
{/if}

>>601
確かにそちらの方がよさそうですね
恥ずかしながら上のを作っているときに無限ループにはまってしまって
デザイナーがやる仕事ではないと思いましたorz
issetを持ち出している所も、ほとんどPHPのプログラムになっていますし

ただ、予め作ってしまうと上で上げた単純な<ul>を使った方法や
ttp://www.skullysoft.com/soft/ssc-board/bbs/main/c-board.cgi?id=cboard
のようにしたいという場合にテンプレート側のみで出来なくなってしまうので非常に悩んでいます

603 :nobodyさん:05/01/21 17:13:04 ID:???
Smartyはdisplay関数で出力しますが、ブラウザに出力するのではなくファイルに出力したりできるんでしょうか?
ざっとマニュアル見てみたのですがそのような関数は無いみたいでした。
自分でソースを編集しないとダメなのかな・・(´・ω・`)

604 :nobodyさん:05/01/21 17:20:08 ID:???
fetch()

605 :nobodyさん:05/01/21 17:20:23 ID:???
>>603
ob_start();
$smarty->display();
$result = ob_get_contents();
ob_end_clean();

// あとはお好きなように


606 :605:05/01/21 17:21:25 ID:???
>>604
そんなのあったのね。サンクス。


607 :nobodyさん:05/01/21 17:28:58 ID:???
>>604-605さん
ありがとうございます
早速試してみます

608 :nobodyさん:05/01/21 19:47:12 ID:???
>>602
データにインデント数(何番目の階層か)まで持たせれば、
<ul>だの<li>だののループでどうにかなるんじゃないの?

609 :nobodyさん:05/01/21 20:32:27 ID:???
>>608
ならない
やってみれば分かる

610 :nobodyさん:05/01/21 22:03:06 ID:???
>>609
サンプルをくれ

611 :598:05/01/21 23:54:03 ID:???
>>608
私もそれを考えてみたのですが、どう実装すれば良いか分からず


そこでblockプラグインを作成しようと思ったのですが、blockの内部の変数は
既に変換済みで渡されるということなので、どうすればforeachみたいな事を
できるのかマニュアルと格闘していたのですが解決できそうな方法がありませんでした。

やはりテンプレート上のみで解決するには上で解決したような例でinclude再帰か
foreachの実装みたいなものをSmarty側で新たに組み込むかなど
上手い方法がなかなか思いつきませんorz

612 :598:05/01/21 23:57:53 ID:???
もう一つ思いついたのが、blockプラグインで変換済みで渡されるなら
Smartyの構文で渡すのではなく、特殊な文法でいくという感じでした

{html_tree ......}
this is [[node]]
{/html_tree}

これならpreg_replaceしながらでいけるのですが、新しい文法を作り出さないで
上手くいく方法がないか模索しています

613 :nobodyさん:05/01/25 17:14:22 ID:ShBI8nKK
Smartyで、{$link->setAction('MemberList')->addLinkParam('id', 24)}のように、
setActionオブジェクトのメソッドにアクセスしようとしたところ、syntax error: unrecognizedが発生してしまいました。
参照オブジェクトからのメソッドはコールできないんでしょうか?


614 :nobodyさん:05/01/26 19:05:19 ID:???
>>613
呼び出せます。
以下を読んでみて。

http://sunset.freespace.jp/smarty/SmartyManual_2-6-6J_html/advanced.features.html#advanced.features.objects


615 :614:05/01/26 19:06:32 ID:???
あ、よく読んでなかった。
テンプレートの中でメソッドコールのチェーンはできないと思います。

616 :nobodyさん:05/01/26 23:31:40 ID:???
というか、そういう状況って、モデルとビューを分離しきれてないんじゃないかと。

617 :nobodyさん:05/01/27 01:01:07 ID:???
BAA、BAA

618 :nobodyさん:05/01/27 18:57:53 ID:???
Mojavi+Smartyを組み合わせた環境で、
Shift-JISで書いたテンプレートに「施」の文字を入れると、
以降の一部が化けてコンパイルエラーになります。
Smarty単独でも起きたのでMojaviは関係ないようですが。

適当なテンプレートに「実施キャンペーン」と入れた結果:
Fatal error: Smarty error: [in hoge.html line 165]: syntax error: unrecognized tag: キャンペーン {$hoge|default:0 (Smarty_Compiler.class.php, line 417) in /usr/local/apache/mojavi/opt/smarty/Smarty.class.php on line 1088

619 :618:05/01/27 18:59:13 ID:???
途中で送ってしまいました。
スクリプトから直接echo()した場合や、
フォームからDBへの入出力等だと化けは発生してません。

620 :nobodyさん:05/01/28 00:11:19 ID:???
>>618
マルチバイト文字"施"のなかに'{'が含まれている罠
{literal}でかこっとけ。

621 :nobodyさん:05/01/28 00:22:59 ID:???
>>618
SJISで書いても良い事無いよ。素直にEUCか、UTF-8にしときなさい。

622 :nobodyさん:05/01/28 00:45:45 ID:???
>>621
i-mode専用サイトの場合絵文字が直接うめこめる。

623 :nobodyさん:05/01/28 05:06:57 ID:???
絵文字はフィルタつかわね?

624 :nobodyさん:05/01/28 06:48:39 ID:???
>>602
同じようなことで悩んでいるのですが、この例でassignしてある$rootの
配列の構造がどうなってるのか教えていただけないでしょうか…。

625 :nobodyさん:05/01/30 10:13:27 ID:???
>>624
ちょっといい例が思いつきませんが例えば下のツリーの関係なら
・あ
 ・赤
  ・ポスト
 ・雨
・か
 ・亀

こんな感じの配列です
(
 (あ
  (赤
   (ポスト)
  雨
  )
 )
 (か
  (亀)
 )
)

626 :624:05/02/01 00:46:14 ID:???
>>625
なるほど、理解できました。サンクスです。

自分でも調べてみました。
Pear::TreeやPear::DB_NestedSet(初めて知った)を使う、という手もあるみたいです。
ttp://www.codecomments.com/archive224-2004-3-151787.html

627 :nobodyさん:05/02/02 03:50:11 ID:???
HTML_QuickFormのバリデーションで、
「どれか1つが記入されていたらOK」というRuleは
どうやって設定すればいいでしょうか。

いまtextフォームが4つあるんですが、
単純にrequireにしただけだと空欄が認められないし、
何も設定しないと入力チェック自体が出来ないという状態に。

628 :nobodyさん:05/02/02 09:00:55 ID:???
Pearスレ向きな質問のような気がするけど..
addFormRuleでいいんじゃない?
http://hatotech.org/kumatch/archives/000331.html ここのPDFに
簡単に使い方が書いてあるよ。

629 :nobodyさん:05/02/02 14:12:50 ID:???
>>627
スレタイ嫁

630 :nobodyさん:05/02/03 12:42:41 ID:???
windowsXPでSmarty使おうと思ったんですが、template_cの中に
%%11^111^111BD1DF%%debug.tpl.php
のようなファイルができてしまい、アクセスできません。
どうしたら、正常なファイル名のファイルが作成されるのでしょうか?

Apache2
PHP5.0.1
を使ってます。

631 :nobodyさん:05/02/03 17:48:11 ID:???
>>630
コンパイル用ディレクトリの中はそれでいいんだよ。

632 :nobodyさん:05/02/03 18:51:23 ID:???
>>631
レスありがとうございます。
ですが、

Warning: Smarty::fetch(templates_c\%%11^111^111BD1DF%%debug.tpl.php)
[function.fetch]: failed to open stream: No such file or directory in Smarty.class.php on line 1252

というエラーを吐いて進んでくれないんです。
ファイルは確実に存在しているんですが……
ちなみにDemoフォルダ内を動かしています。

633 :nobodyさん:05/02/03 21:23:37 ID:???
>>632
根本的な解決じゃないかもしれないが、
use_sub_dirをfalseにすればなんとかなるんじゃない?

634 :627:05/02/04 19:35:24 ID:???
誤爆スマソ

635 :nobodyさん:05/02/04 20:51:56 ID:???
>>634
別に誤爆ってほどでもないかと。
Smarty+HTML_QuickFormは定番だしね。

ちなみに俺はデザインも自分でやってるので、
そういう場合は、JavaScriptをテンプレートに直書きしてる。
分離が出来てなくてダメな事はわかってるけどね・・・。

636 :nobodyさん:05/02/11 01:40:26 ID:???
>>632
フォルダのwrite権限ないんじゃない?

637 :nobodyさん:05/02/28 10:40:41 ID:???
>>632さんはもう解決した?
全く同じエラーがでて悩んでたんですが、私の場合は>>636さんのご指摘通りでした。

IISで動かしてたので環境は違うのですが、
wwwroot->プロパティ->セキュリティ->Everyoneで書き込みを許可したら動きました。

Smartyのcore_write_file.phpで@renameになっており、
ここでのエラーが出力されないため、解りにくかったです。

638 :nobodyさん:05/02/28 12:50:49 ID:???
>>637です
セキュリティの問題があるかもしれないので
wwwrootではなくtemplates_cを書き込みを許可するようにした。

639 :nobodyさん:05/03/05 18:32:35 ID:???
>>637
はじめにマニュアルを読んでから動かせば @renameとか関係ないんで。
自分の落ち度を他人のせいにするもんじゃない。

640 :nobodyさん:05/03/05 19:51:23 ID:???
テンプレもんだな

641 :nobodyさん:05/03/08 16:14:48 ID:AAd9Sq9Q
こんにちは。
購入したPHPのサンプル本で、希望する動きのがあったので
使用しようと思ったのですが、Smartyを使って紹介されていたんです。
Smartyで書かれている部分を、PHPに直すような高度な事も
出来ないので、大人しくSmartyをインストールしようとしてみた
のですが・・・。
書籍のCDROMに入っていたWindows用のSmartyが
Smarty-2.6.6tar.gzで、解凍しようとしても出来ないのです。

インストール方法を探してttp://sunset.freespace.jp/smarty/の
サイトも何度も読んで見たのですが、『ディレクトリファイルに
インストールしてください』という下りから始まっていて、
ウィンドゥズ対応の圧縮ファイル名などの記述すら見つけられなくて。

どなたか、Win用のインストール方法を詳しく教えて頂けない
でしょうか・・・。
お願い致します。


642 :nobodyさん:05/03/08 16:20:35 ID:???
>>641
はい、こんにちは。
ttp://www.vector.co.jp/ に行き、キーワードの欄に「gz」と入力します。
検索ボタンを押すと結果一覧が表示されるのでお好みのソフトを選択しましょう。

643 :nobodyさん:05/03/08 17:13:05 ID:???
う〜ん... 春ですねぇ。

644 :641:05/03/08 17:34:59 ID:AAd9Sq9Q
>>642
ぎゃー!出来ました。解凍、出来ました。
なんか、すごい恥ずかしい質問をしてしまった気がして
穴をほってでも入りたい気持ちでいっぱいです。
+Lahaで解凍できない=winファイルじゃない?
なんて思考回路になってしまった自分の馬鹿さ加減に
悲しくなりました。
ご指導、ありがとうございました。
今から設置に四苦八苦してまいります。


645 :nobodyさん:05/03/08 18:36:24 ID:???
ほほえましいな がんばれ

646 :641_| ̄|○ :05/03/08 21:33:23 ID:AAd9Sq9Q
何度もすみません。
インストール先がわからないです・・。
解説サイトさんによると
ディストリビューションの/libs/ディレクトリにSmartyライブラリファイル
をインストールして下さい
とあるのですが、ディストリビュージョンって何ですか・・?
検索してみたのですが、Linuxの・・というのばかりが
引っかかってきて、打ちひしがれるばかりです。
どなたか合いの手をお願いいたします。

647 :nobodyさん:05/03/08 22:05:41 ID:???
らは

648 :nobodyさん:05/03/08 22:07:59 ID:???
>>641への回答は↓に任せた

649 :nobodyさん:05/03/08 22:10:28 ID:???
>>646
インストール先はどこでもいい。

650 :nobodyさん:05/03/09 01:27:21 ID:???
>>641
ハッキリ言ってその程度の知識でサーバ管理するのはとても危険。
ついでに、踏み台にされるとはた迷惑。
いや、公開サーバじゃなくてただPHPの勉強してるだけならいいんですがね。

651 :641_| ̄|○いまだわからず・・・:05/03/09 04:43:26 ID:???
>>649さん
ご指導ありがとうございます。
適当な場所でインストールしてみたのですが、
なぜかMySQLの信号機が赤になってしまって
また打ちひしがれ中です_| ̄|○
PHPdevでSmarty使おうとしているのが悪いのかしら
とか思って検索中です。
>>650さん
まさか、ネット上で公開する気なんてまだまだ
先の先の事ですよぅ!
セキュリティの事もわからないのにっ。
一から色々と、勉強中なのです_| ̄|○
知らない事が多すぎて、覚える事ばかりで
沸騰しそうです。
踏み台にしているつもりは毛頭なかったです。
不愉快にさせてすみません・・・。


652 :nobodyさん:05/03/09 09:02:15 ID:???
[原文]
> Install the Smarty library files which are in the /libs/ directory of the distribution.

[日本語訳サイト]
> ディストリビューションの/libs/ディレクトリにSmartyライブラリファイルをインストールして下さい。

[正しかろう訳]
配布物の/libs/ディレクトリにあるSmartyライブラリファイルをインストールします
(ここでいう配布物ってのは、Smarty-2.6.6tar.gzを解凍した物の事)

653 :nobodyさん:05/03/09 10:14:49 ID:???
>>651
踏み台ってのは、君がここの回答者を踏み台にして…って話じゃなくて、
セキュリティの甘いサーバをネット上に放っておくと、そのサーバを”踏み台”にして、
悪事に利用されるよ、そしてそれは万人にとって迷惑な話だよ。って意味だよ。

ぼちぼちで、やったんさい。

654 :nobodyさん:05/03/09 10:41:51 ID:???
>>641
申し訳ないが前提となる知識が足りなすぎる。
足し算がわからない人に因数分解は無理。

書店で入門書を買ってきてコツコツやりな。
どうしてもわからないことは質問してもいいから。

だいたいディストリビューションっていう単語がわからなければ、
Googleで調べればすむ話でしょ?
自分で調べもしないのに聞くのはイクナイよ。

先は長いけどがんばれー。

655 :nobodyさん:05/03/10 11:16:13 ID:1EPX/SpT
すいません、ご存じの方いらっしゃればご教示頂きたく。

smartyのifでの比較演算なんですが、
{if "1010010001000110000115" eq "1010010001000110000115"}equals{/if}

{if "1010010001000110000120" eq "1010010001000110000115"}equals{/if}
の両方とも、出力がequalsになるんですが、
何故なんでしょうか?


656 :nobodyさん:05/03/10 11:36:31 ID:???
>>655
たまたまじゃないですか。

657 :nobodyさん:05/03/10 11:43:54 ID:???
昨日久しぶりにバージョンアップしてみたのですが、
{strip}命令って無効になったのですか?
そのまま{strip}って表示されてしまうのですが・・・。


658 :655:05/03/10 11:44:28 ID:???
>656
いや、たまたまじゃない。
つか、すげぇ下らない理由だった。

当然、文字列同士で比較していると思っていたのだが、
数字だけで構成しているとどうやら数値として比較するらしい。
で、有効な桁数以上の文字はカットされてしまい、
(俺のトコだと整数で18桁がボーダーのようだが、環境によって変わるかも。)
前方18桁だけ取り出して、数値としてみれば
両辺一致しているのでtrueになるようだ。

末尾にcatで"a"なんてくっつけてやれば、
文字列同士として比較するため、何の問題もでない。

そんな事にも気づかなかった俺って・・・orz

659 :nobodyさん:05/03/10 13:38:03 ID:???
>>658
いや、くだらなくはないよ。

660 :nobodyさん:05/03/10 15:16:46 ID:???
貴重なバッドノウハウよね

661 :nobodyさん:05/03/10 15:25:45 ID:???
PHPホンスレでガイシュツだけどね。

662 :nobodyさん:05/03/10 17:46:21 ID:8Bnn/FyN
>>657
カスタムタグ使ってると、そーなるバグ
smartyのフォーラムよく見ろ

663 :nobodyさん:05/03/10 22:24:02 ID:???
>>658
だからたまたま(有効範囲内が)同じだということだったんだが…

664 :nobodyさん:05/03/11 11:29:21 ID:???
文字列と数字を比較したりしてもそんな挙動することあるな
if( 0 == "test") とか多分true
そういうときに if( 0 === "test") ってやるんだっけか

665 :641:05/03/12 09:17:24 ID:???
Smartyのインストールが無事に出来ました
何日もかけて今頃やっとかよっ!って感じなのですが・・_| ̄|○

ご指導してくださった皆様ありがとうございました。

666 :641:05/03/12 11:31:22 ID:Eai46BlS
こんにちは。
何度もすみません。
Smartyをインストールできたのがうれしくて、書籍の
サンプルをそのまま使って、ローカルでテストしてみたのですが、
Fatal error: Cannot redeclare loginfunction()
(previously declared in C:\Program Files\Apache Group
\Apache2\htdocs\samples\chap5\mng\auth.php:12)
というエラーが出てきてしまいます。


667 :641 続きです:05/03/12 11:31:40 ID:Eai46BlS
エラーを調べてみたのですが、関数の二重定義 のために
起きているエラーだ、という所まで検討がついたのですが、
いかんせん、書籍に乗っているサンプルを何もいじっていない
コードなので、なにが悪いのか、わからないのです。
もしかして、知らない間に、どこかいじってしまったのかも、と
思って、再度CD−ROMから該当ファイルをインストールしてみたのですが
同様のエラーのままでした。

コードの該当部分は、下記になります。
<?php
require_once("DB.php");
require_once("Auth/Auth.php");
require_once("chap5/MySmarty.class.php");
$dsn="mysqli://php:php@localhost/sample";
$params=array(
"dsn" => $dsn,
"table" => "mng_usr",
"usernamecol" => "uid",
"passwordcol" => "passwd");
function loginFunction(){
$o_smarty=new MySmarty();
$o_smarty->display("login.tpl");
}
<略> ?>
どこが悪いのか、ご指導いただけないでしょうか・・・・。

よろしくお願いいたします。


668 :nobodyさん:05/03/12 11:47:33 ID:???
>>667
smartyとはもう関係無い話だと思うのだが。。
loginfunctionが二重定義されているという事ならば、
本当にそうなっているのか、
DB.php、Auth/Auth.php、chap5/MySmarty.class.phpの中や、
さらにその中でrequireやincludeされているファイルを
検索して確かめたらいいのでは?
その上で、どのfunction loginFunctionを使うかはそれを作った人の意向によるかと。

669 :641:05/03/12 12:31:08 ID:???
>>668さん
ご指摘ありがとうございます。
ファイル内を、検索して探してみます。

おっしゃる通り よく考えたら、確かにSmartyとは直接
関係なかったですね・・_| ̄|○
すれ汚し、大変失礼いたしました。

670 :nobodyさん:05/03/13 19:08:22 ID:8WQj/L10
Smarty入門~PHP5+テンプレート・エンジンでつくるMVCアプリケーション~
http://www.amazon.co.jp/exec/obidos/ASIN/4798108839

買おうか迷っているので感想キボンヌ

671 :nobodyさん:05/03/13 19:12:02 ID:???
>>670
オビを見るに微妙な内容だな

672 :nobodyさん:05/03/13 19:27:34 ID:???
入門する程のものなのか
立ち読みで十分な希ガス

673 :nobodyさん:05/03/13 19:56:38 ID:???
山田 祥寛 (著)はJavaのライターでは有名な人だな。

674 :nobodyさん:05/03/13 20:08:38 ID:???
まるごとPHPにも書いてるね。
・・・「かいてる」の変換候補一発目がなぜか「Keitel」でびびった。

675 :nobodyさん:05/03/13 21:11:31 ID:???
>>673
PHP界隈でも結構書いてる。ライター一本でちゃんと食っていくのには
そのぐらい書かないと駄目なんだなと、いつも思い知らされる訳だが。

676 :nobodyさん:05/03/13 22:03:03 ID:???
MVCってのは自前かな?
それともMojaviとか使ってるのかな?

677 :nobodyさん:05/03/13 22:56:19 ID:???
>>676
Mojaviを使っていたら、あの帯に書いてありそうな希ガス。
まぁ、それ以前にMVC=フレームワークじゃないし。

678 :nobodyさん:05/03/13 23:20:57 ID:???
smartyで、
$smarty->display([テンプレートファイル名]);
とやると標準出力(ブラウザ)にHTMLが出力されますが、
これをファイルに出力させることはできるのでしょうか?

679 :nobodyさん:05/03/13 23:28:24 ID:???
山田祥寛さんの書くものは疑ってかからないと駄目。
ttp://d.hatena.ne.jp/nadi/20040215#1076810117
ttp://d.hatena.ne.jp/nadi/20040306#1078484912


680 :nobodyさん:05/03/13 23:54:01 ID:???
>>679
でもこの人が書いた基礎PHPって本はホント良いよ。
初心者には超オススメ。

でもtemplate_cのパーミッションを777にしろって
書いてあったのはポカーンだったけど。


681 :nobodyさん:05/03/14 00:39:54 ID:???
>>670
ゴミ同然。買うな。
だいたいPHP5とか明示しててちゃんとPHP5のスタイルで書いてる書籍なんて
いまのところ一冊もない。Smartyが覚えたかったらマニュアルみれ。
日本語に翻訳されたドキュメントもあるしぐぐれば使い方はたくさんでる。
PHP5関連の内容についてはマンモス本の劣化コピー。

>>674
まるごとPHPが有名なのはPEARパッケージの開発者とかが執筆してるから。
コミュニティに一切貢献してない彼が執筆メンバにいることがかなり不思議。

http://angelicwing.net/diary/index.php?mode=one&parent_id=3801
MVC自体わかってない。わけたらいいってもんじゃない。
valueobjectって、、便利だと思ってるの?
そしてコメント欄に注目。PHPにおけるmysqlのdisconnectについて
まったくわかってない。明示的に指定しないのは常識。

>>680
現場でPHPのコード書いた事ない人間の書籍でよく勉強できるよな。
そうやってマニュアル読んだだけの素人が書いた書籍で勉強した
ダメプログラマがダメコードを作る。
この程度のレベルの人間が書籍を書いていることが問題。

でも(趣味で触るだけの)初心者にはいいかもね。

682 :nobodyさん:05/03/14 00:44:19 ID:???
>>681
>明示的に指定しないのは常識。
そうなの?
でも指定してもいいよね?


683 : ◆AngelH/kMI :05/03/14 01:04:47 ID:???
>>682
どっちでもいいよ。

connectする -> プログラム終了とともに切断
pconnectする -> disconnectは無視する
だから、どちらにしろあまり意味ないと思うです。

684 :nobodyさん:05/03/14 01:10:40 ID:0xZUZ/dg
羽根の人キタ━━━━━(゚∀゚)━━━━━!!!!

685 :nobodyさん:05/03/14 01:29:18 ID:???
でも使ったあとは後始末、って癖は悪くはないと思うぞ
PHP以外の言語にも手を出そうというならなおさら(GCが増えてきたにしろ)
致命的な差異が出ないなら、初心者の頃はそういう考えから身につけてもいいんジャマイカ
ちなみに漏れは書くのめんどいので閉じないことが多い

686 :nobodyさん:05/03/14 02:11:46 ID:???
言いたい事は分かるが。
でも非機能要求を絶えず意識する癖なんて持っても PHP/web アプリで量的に重いコードを設計する人になられても困る。
ソレはソレ、コレはコレじゃないか。
原理原則やデータベース個々の基礎知識は弁えて当然というのはまた別のプロセスでしっかり身につける方が。

687 :nobodyさん:05/03/14 02:56:18 ID:???
Smartyと関係ないやん。

688 :686:05/03/14 03:46:48 ID:???
それもそうだ。スレ違いスマソ。

689 :nobodyさん:05/03/14 10:18:44 ID:???
>>678
fetchで出力内容拾って、phpのファイル出力で吐き出したら?

690 :678:05/03/14 11:14:44 ID:???
>>689
なるほど、検討してみます。ありがとうございます。

昨晩から試行錯誤を繰り返し、
現在のところoutputfilterで、出力直前の文字列を横取りし、
ファイルに吐き出すという、ややトリッキーな方法を行っています。


691 :nobodyさん:05/03/14 11:51:06 ID:???
ちゃんと管理して明示的に閉じてるならそれはそれでいいと思うよ

692 :nobodyさん:05/03/14 21:41:11 ID:???
明示的にdisconnectすることには機能的な意味の他に、リソースを
参照している範囲が明確になるという点もあるので「クローズ・削除
しない方が性能的に有利かつPHP的な使い方」というのはアホの理論。


693 :nobodyさん:05/03/15 00:50:43 ID:???
もういいって

>>690
ファイルに書き出すのはob_get_contents()使うのが一番楽と思うよ

694 :678:05/03/15 11:52:00 ID:???
>>693
ありがとん

695 :nobodyさん:05/03/15 17:25:00 ID:???
スレ違いかもしれないけどhtmltemplateってのはどう?
http://www.lyricfathom.com/htmltemplate/

696 :nobodyさん:05/03/16 10:24:48 ID:???
使ったことある。結構良いんだけど、自由度が足りない。
記述方法なんかは、スマーチーと似た感じ。ドットがスラッシュになった感じだったかな。
ロジックの追加とかも簡単、まあそれでも自由度が低い。elseとかやりたいなら2、3層前とかから書き直さないといけないから、意味ないし。

697 :nobodyさん:05/03/16 18:40:40 ID:???
>>695
HTMLtemplateのくわしい話MLに、最近ひさびさに
メール流れた〜と思ったら。SPAMでした…orz

2年近く放置してる作者も、それに登録したまんまの俺もどうかしてますが。
あ、でも新しい系列になって発展してたんですな。

俺の感想も>>696に似たようなもんだけど、
元々の割り切りからも考えるに、プログラマからすると
どうしても物足りなさはある。かといって発展拡張を考えるなら
高機能な標準的なテンプレートを使っちまう方が良いし というところ。

でも自分用の軽量なテンプレには部分的にはパクらせてもらった。
テンプレートを使うんじゃなくて、テンプレートを作る上で
参考にするのは良いと思うよ。作りが簡単だし。



191 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)