トップページphp
1001コメント342KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2008/02/02(土) 00:21:09ID:6cKcKeTp
まぬあるhttp://www.smarty.net/manual/ja/
0127nobodyさん2008/06/02(月) 18:15:50ID:???
再婚パイルをお考えですか。
0128nobodyさん2008/06/03(火) 04:20:49ID:???
GirlFriend Pluginがファイル破損しちゃいました。
どこで再配布してますか?
0129nobodyさん2008/06/03(火) 08:16:30ID:???
新しいPluginは古いものと互換性がないので、
関連ファイルは全部削除しないとダメだよ
0130nobodyさん2008/06/03(火) 14:28:35ID:???
まさかこのスレでふっきれるとはおもわなんだ。
貴様らありがとう。
0131nobodyさん2008/06/04(水) 22:39:07ID:???
ウチ、すごいぞw
俺が来るまで何年もプログラミング初心者が入ってきては辞めての繰り返しだったみたいで、
機能つけたしが全てSmarty設置で実現されてるwww
サイトのいたるところにvarだのbinだのがあるwwww
勘弁してくれwwww
0132nobodyさん2008/06/04(水) 22:53:01ID:???
日本語でおk
0133nobodyさん2008/06/05(木) 12:25:23ID:???
業務でSmartyを使っているのか...
0134nobodyさん2008/06/05(木) 13:57:52ID:???
>>134
そりゃ背が伸びて彼女ができるなら使うだろう。
0135nobodyさん2008/06/05(木) 14:50:40ID:???
業務だからこそ使うんじゃないの?
逆に趣味とかじゃ使いたくない。
0136nobodyさん2008/06/05(木) 21:38:50ID:???
趣味でPHPはないわ。
俺は半年ほど休んでた時期に趣味で遊んだのはSchemeだけだった。
実務(共同作業)がSchemeでも進められるなら、迷わずこれを選ぶ。
しかし近年の現実はどいつもこいつもPerlすら宇宙語だからな。PHP一択にならざるをえない。
0137nobodyさん2008/06/06(金) 13:01:48ID:???
PHP + Smarty を使って、お客専用のCMSモドキより、
MovableType4.1 + αカスタマイズのCMSモドキの方が、お客には受けが良かった上に見積もりも良かった!

業務でSmartyを使うなら、隠れて使いたい
0138nobodyさん2008/06/06(金) 21:00:18ID:???
そりゃデザインのおかげじゃねーの
0139nobodyさん2008/06/06(金) 22:14:37ID:???
見た目以外に判断材料があるやつなんて、最低でもPHPを書けるレベル以上のやつに限られる。
0140nobodyさん2008/06/06(金) 23:39:38ID:???
>>139
いや、判断材料としては操作感も重要だけど、使う側と作る側のロジックが違うから
どう考えても不条理な操作が要求されたりするんだよなあ。

もちろん使う人のために作るんだからお客様優先なわけだが、
将来コケるのが目に見えてるから困る。

0141nobodyさん2008/06/06(金) 23:48:35ID:astBuURj
現在のバージョンは、
・セールスレターテンプレート集(68通)
・売れるセールスレターの書き方
・ダイレクトメールワークシート
・穴埋め式Eメールテンプレート(14通)
・究極のセールスレターツールBOX
など、合計で500ページ近いパッケージとCDROMが
セットになっています。


ただ、この無料お試しはだいぶコストがかかるらしいので
500個の限定だそうです。



興味があればこちらをクリックしてください。
http://www.123marketing.jp/yanik/indextrial.php?jvcd=16797

0142nobodyさん2008/06/06(金) 23:49:48ID:???
>>140
それはあなたが低スキルだからでしょうね。コケて逃亡するのはあなたではないでしょうか。
0143nobodyさん2008/07/10(木) 05:42:24ID:NxX5vAdg
Smartyで、テンプレート内で送られてきた変数の簡単な計算できませんか?

{$value + 3}など。
試してみたのですが、{$value}の値がそのまま出力されます
0144nobodyさん2008/07/10(木) 09:09:32ID:???
つマニュアル
0145nobodyさん2008/07/10(木) 21:23:41ID:???
折角公式に日本語のマニュアルがあるというのに全く。
0146nobodyさん2008/07/21(月) 01:40:20ID:8uak49aQ
■ MySmarty.class.php
<?php
require_once("Smarty/Smarty.class.php");

classMySmartyextendsSmarty {

publicfunction__construct() {
$this->Smarty();
$this->template_dir="./data/templates";
$this->compile_dir="./data/templates_c";
}

}
?>

■ test.php(MySmarty.class.php と同じディレクトリ) → 正常に動作
<?php
require_once( './MySmarty.class.php' );
$o_smarty = new MySmarty();
$o_smarty->display( "main.tpl" );
?>

■ dir.php(MySmarty.class.php の直下のフォルダ) → エラー
Warning: Smarty error: unable to read resource: "main.tpl" in C:\hoge\Smarty\Smarty.class.php on line 1092

<?php
require_once( '../MySmarty.class.php' );
$o_smarty = new MySmarty();
$o_smarty->display( "main.tpl" );
?>

これは仕様なの?
01471462008/07/21(月) 01:41:40ID:8uak49aQ
MySmarty.class.phpで半角空白がなくなっていますが、
2chにコピペするときの変換ミスで、実際は正常に動いています。
0148nobodyさん2008/07/21(月) 01:47:07ID:???
仕様
01491462008/07/21(月) 01:52:13ID:???
>>148
ええ!? マジすか……。
それじゃ、ディレクトリが多数ある場合は、
全てのディレクトリにMySmarty.class.phpが必要ってこと?
プラグイン自作してどうにかなる話じゃないですよ?w
0150nobodyさん2008/07/21(月) 02:24:44ID:???
お前は何を言ってるんだ
0151nobodyさん2008/07/21(月) 03:18:45ID:???
>>150
いや、文字通り、Smarty.class.phpを継承した設定済みのMySmarty.class.phpを
直下以外のディレクトリに置くとtemplatesディレクトリの認識がしなくなるのが仕様だったら、
多数のディレクトリ分けしてると超大変だよね、って言ってるんだけど。

>>146が仕様で間違いないのなら、俺は何か間違ったこと言っているか?
0152nobodyさん2008/07/21(月) 09:54:38ID:???
さて問題です。

dir.phpからみて
$this->template_dir="./data/templates";
$this->compile_dir="./data/templates_c";
このディレクトリはどこでしょう?
0153nobodyさん2008/07/21(月) 12:55:50ID:???
>>152
dir.phpは、MySmarty.class.phpを呼び出しているだけで、
dataディレクトリは、MySmarty.class.phpから見た相対パスだから、
dir.phpから見たdataディレクトリの場所は、関係ないと思うけど。

そもそも、なぜか絶対パスを受け付けてくれんのよね。エラーになる。
0154nobodyさん2008/07/22(火) 08:41:57ID:???
>そもそも、なぜか絶対パスを受け付けてくれんのよね。

こっちのほうが深刻というか根幹な問題をかかえてる気がするのだが・・・
0155nobodyさん2008/07/24(木) 14:01:26ID:???
PHPは実行されてるファイルの位置がカレントディレクトリになるから……
0156nobodyさん2008/07/24(木) 21:30:17ID:???
$template_dir
これは、デフォルトのテンプレートディレクトリの名前です。 ファイルのインクルード時にリソースの種類を指定しなかった場合は、
このディレクトリから探します。デフォルトは ./templates で、 これは、実行しているスクリプトと
同じ場所にある templates/ ディレクトリを探すということです。

という文章からすると「実行しているスクリプト」が基準になるということみたいだな。
0157nobodyさん2008/08/01(金) 21:13:05ID:???
Smarty廃れましたなぁ。
そんなことより、PHPもJSPのように
カスタムタグが使えたらいいのにね。
0158nobodyさん2008/08/02(土) 02:29:09ID:???
廃れてないけど
0159nobodyさん2008/08/02(土) 19:51:20ID:???
スレ立て半年でこの程度の伸びだったら、十分廃れてるだろw
ぶっちゃけ、必要な機能だけ絞り込んで自分で作った方がいい。
0160nobodyさん2008/08/02(土) 19:56:13ID:???
いいというのはどういう点で?
0161nobodyさん2008/08/03(日) 10:51:13ID:4+uLL3BX
でも、テンプレートって言えば、もうSmartyでしょ。
0162nobodyさん2008/08/03(日) 11:32:25ID:???
テンプレート機能だけ使いたいならSmartyを使うか、生phpで済ませる
各種FW使うなら同梱されてるテンプレートエンジンを使う
0163nobodyさん2008/08/04(月) 11:49:55ID:???
「index.php#xxx」

smartyで↑の「xxx」を取得する方法ってありますか?
0164nobodyさん2008/08/04(月) 22:09:03ID:???
>>163
例で示されたxxxの部分は通常サーバ側には送信されることはない。
なのでサーバサイドで動いているsmartyから取得することは不可能。
0165nobodyさん2008/08/05(火) 16:01:03ID:???
>>164
ぎょぎょ!
確かにその通りでした。
0166nobodyさん2008/08/06(水) 21:40:18ID:???
仮に送信されるにしても、smartyじゃなくPHPから取ると思うんだけどなあ。
0167nobodyさん2008/08/07(木) 20:08:18ID:???
テンプレ内で{}使う方法ド忘れした誰かHELP
0168nobodyさん2008/08/07(木) 20:16:02ID:???
http://www.smarty.net/manual/ja/language.function.ldelim.php
0169nobodyさん2008/09/04(木) 10:40:28ID:???
{include}
で出力された結果が複数行にわたる場合、全ての行に対してインデントさせるにはどうすればいいですか?
{"\t"}{include}
とかしても先頭の行だけしかインデントされなくて
0170nobodyさん2008/09/04(木) 11:33:28ID:???
全部divで囲んでCSSで
01711692008/09/04(木) 12:15:47ID:???
ああ、すみません、出力されたソースでの話です・・・
0172nobodyさん2008/09/04(木) 12:25:57ID:???
変数に格納してindentかけるとか?
01731692008/09/04(木) 21:08:05ID:???
すみません、変数の宣言はphpファイル側でするものですか?もしそうなら、
配布されているウェブアプリがsmartyを使っているのですが
配布ファイルのバージョンアップの際に面倒なことにならないかな・・・と
というかphpはわからなくて
smartyも触るのは初めてでマニュアルを見ながら触っているのですが・・・

インデントするのも難しいですね
レスしてくれた方々、ありがとうございますm(_ _)m
0174nobodyさん2008/09/04(木) 21:11:12ID:???
Smartyの前にやるべきことが・・・
0175nobodyさん2008/09/04(木) 21:31:16ID:???
デザイナにはロジックを触らせないコンセプトのSmarty
01761692008/09/05(金) 00:54:49ID:???
すみません、includeのassignでできました
レスしてくれた方々、ありがとうございますm(_ _)m
0177nobodyさん2008/09/24(水) 00:32:25ID:KMdxurbq
JSPのカスタムタグがPHPにもあればいいのにな。
タグとクラスが一対一になってるのが素晴らしい。
0178nobodyさん2008/09/25(木) 00:09:46ID:lXgzxRnB
すみません、教えてください。

<p>名前:{$name}</p>

テンプレートに上記のような記述をしたのですが、
「名前:」の部分が化けてしまいます。
テンプレートファイルはEUCで保存してあります。
原因としてはどのような事が考えられますか?
0179nobodyさん2008/09/25(木) 01:02:44ID:???
>>178
テンプレートをコンパイルしたあとのPHPファイルを見てみれば?
01801782008/09/25(木) 02:06:16ID:???
>>179
見ましたが、既に化けてます・・・
SmartyがEUC以外の文字コードで
テンプレートを処理しているということでしょうか?
0181nobodyさん2008/09/25(木) 02:17:37ID:???
phpの文字コードがあってないんじゃない?
01821782008/09/25(木) 02:47:42ID:???
>>181
あ、Smarty.class.phpがカスタマイズされていました。
SJIS→EUC→SJISみたいな変換してる。
お騒がせしました。すみません。
既存のものとは別にSmartyを入れます。
0183nobodyさん2008/09/26(金) 16:36:37ID:NKaAViJV
template_cの中身を全部削除しても、template_cの中身を見に行こうとして、
そんなファイルないよっていうエラーが出るんですが、なぜでしょうか?
ためしに、force_compileをtrueにしてみましたが、やっぱり見に行ってしまうようです。
01841832008/09/26(金) 17:02:20ID:NKaAViJV
ちなみに、全く同じものを1つ下の階層にコピーすると動きました。
これはいったい・・・。
0185nobodyさん2008/09/26(金) 17:16:56ID:???
パスがおかしい
0186nobodyさん2008/09/26(金) 17:23:10ID:NKaAViJV
>>185
すいません、重要な点を忘れていました。
その別ディレクトリでコンパイルされたテンプレートを、
動かない方のtemplate_cにコピーしてやると、動くのです。
なのでパスが違ってはいないです。
全く謎・・・
0187nobodyさん2008/09/26(金) 17:49:10ID:???
そんな断片的な情報では何も判断できないけど謎だね
0188nobodyさん2008/09/26(金) 23:07:17ID:???
smartyってsjisだとエラー起きませんでしたっけ?
さっきひさぶりにやってみたらsjisでも問題なく動いた(?_?)
0189nobodyさん2008/09/27(土) 01:11:46ID:???
>>188
自己解決しました
0190nobodyさん2008/09/30(火) 23:16:57ID:???
>>189
自己解決の詳細を報告しる!
0191nobodyさん2008/10/01(水) 16:25:04ID:???
>>190
気合で解決!
0192nobodyさん2008/10/02(木) 16:19:26ID:???
preFilterでテンプレートの文字コードを内部文字コードに合わせる。
postFilterで元に戻す。

これは基本だろう。
0193nobodyさん2008/10/03(金) 12:27:37ID:???
みんななんでSmartyなんて使ってるんだ。意味がわからん。
0194nobodyさん2008/10/03(金) 19:01:42ID:???
名前:<?php echo $name ?>
よりも
名前:{$name}
のほうが書きやすくて可読性も高いから。
0195nobodyさん2008/10/03(金) 19:14:40ID:???
それだけじゃなかんべw それだけしか使ってないならもったいないw
0196nobodyさん2008/10/03(金) 19:36:59ID:???
<?=$name?>
0197nobodyさん2008/10/03(金) 20:29:13ID:???
short_tagwwww
0198nobodyさん2008/10/04(土) 01:57:42ID:???
Smarty(というかテンプレートエンジン)の便利さを解らない奴は、
素人or中級者未満だと自覚した方が良いよ。
0199nobodyさん2008/10/04(土) 13:26:02ID:???
>>198
PHPそれ自体がテンプレートじゃん
わざわざSmartyを使う意味がわからん
0200nobodyさん2008/10/05(日) 01:31:28ID:???
>>199
意味がわからんというのは、君のやってる事のレベルが低いからだと思うよ。

PHP単体でキャッシュ処理や、ループ処理、エスケープ処理、携帯、PC両対応を想定したテンプレートを書いてごらん。
PHPはテンプレートっぽく使えるだけで、実務的にテンプレート管理を行おうとしたらかなりの量のコーディングが必要になってくる。
結局はテンプレートエンジンを作る必要はあるんだよ。
0201nobodyさん2008/10/05(日) 01:40:36ID:???
・PHP
<?php echo strlen($var) ? preg_replace("/[\r\n]/", "<br />", htmlspecialchars($var)) : "hoge";?>

・Smarty
{$var|escape|nl2br|default:"hoge"}
0202nobodyさん2008/10/05(日) 06:55:52ID:???
なぜphpのほうでnl2br使わんの
0203nobodyさん2008/10/05(日) 11:15:11ID:???
modelとviewを分けたいからじゃないの
0204nobodyさん2008/10/05(日) 18:38:44ID:???
>>203
どういうこと?
0205nobodyさん2008/10/06(月) 03:08:54ID:???
PHP単体で使う人は、 >>201なりPHPで書いたコードを想定してみれば良い。

「そんなコードを書く状況は100%ねぇよw」って言うなら、Smarty使う意味無いけど。
0206nobodyさん2008/10/06(月) 08:52:51ID:???
>>202
>なぜphpのほうでnl2br使わんの
知らなかっただけだろ。
あと preg_replace("/[¥r¥n]/", "<br />") だと "¥r¥n" があったときに <br /><br /> になっちゃうから
ここは preg_replace("/¥r?¥n/", "<br />") だよな。旧Macは無視したとして。

nl2br知らないわ、正規表現間違うわじゃ、底がしれる
0207nobodyさん2008/10/06(月) 08:55:31ID:???
>>200
>PHP単体でキャッシュ処理や、ループ処理、エスケープ処理、携帯、PC両対応を想定したテンプレートを書いてごらん。

キャッシュは専用ライブラリを使う
ループ処理はPHPのforeachやwhileをそのまま使う
エスケープ処理はhtmlspecialchars()を使うか、短い名前で定義する
携帯、PC両対応はSmartyに備わってる機能ではない


0208nobodyさん2008/10/06(月) 14:44:20ID:???
>>207
全部Smartyで出来るじゃんw
使わない理由と、他のライブラリを使う理由を述べよ。
0209nobodyさん2008/10/06(月) 14:59:38ID:???
>>204
改行が必ずしも<br />とは限らないからだろ。
ViewがHTMLとは限らない。
0210nobodyさん2008/10/06(月) 15:10:02ID:???
>>209
上段はHTML以外も想定してるけど
下段はHTMLのみ想定しているってこと?
0211nobodyさん2008/10/06(月) 17:03:58ID:???
>>210
Smartyのnl2brは拡張&動作の置換が可能。
02121962008/10/06(月) 19:40:07ID:???
全部関数書けばいいじゃん

<?=h(e(n($name)))?>
0213nobodyさん2008/10/06(月) 20:27:56ID:???
グローバル関数っすかwww

そんなの結局は劣化車輪の再発明でしかないし、Smartyを使わない理由を述べよ。
0214nobodyさん2008/10/07(火) 12:25:11ID:???
> 車輪の再発明...
実用レベルでは、してはいけない「車輪の再発明」だが、
言語の学習段階ではレベルアップのために、あえて「車輪の再発明」は必要...

論点ずれた。スマゾ
0215nobodyさん2008/10/07(火) 14:30:17ID:???
そんな段階では「発明」でも何でもないし、する必要も無い。
物理習うときにニュートン方程式の再発明から始めるのか?
0216nobodyさん2008/10/07(火) 15:03:12ID:???
物理では再発明というか、再発見をおのおのの学生がするものじゃないの?
ぶつりほうそくとは発見ではなく自然の理解であるからして。

同様に、対象を理解するために先人の真似をするのは無駄じゃない。
物理の授業でニュートンがやった実験やるのはべつに遊びってわけじゃない。
0217nobodyさん2008/10/07(火) 15:10:28ID:???
初心者の学習段階でよくやるアレは「車輪の再発明」の域にも達してないってことさ。
学習するためにやるものじゃない。
0218nobodyさん2008/10/07(火) 18:26:45ID:???
論点ズレすぎ。

車輪の再発明自体は否定も肯定もしないけど、
>>212 とか、再発明の域にすら達してないだろ。

単にSmartyを勉強するのが面倒だから、批判してるだけに見えてしまうんよ。
実際そうなんだろうけどw
0219nobodyさん2008/10/07(火) 21:01:42ID:???
patTemplate ってはやってるの?
0220nobodyさん2008/10/08(水) 08:35:32ID:???
>>208
>全部Smartyで出来るじゃんw
>使わない理由と、他のライブラリを使う理由を述べよ。

逆だよ。PHPでできるのに、なんでSmartyを使う必要があるのってこと。
0221nobodyさん2008/10/08(水) 08:44:32ID:???
>携帯、PC両対応はSmartyに備わってる機能ではない

だからなんなん?
テンプレートエンジンを利用すれば簡潔に記述できるのは事実だろ
0222nobodyさん2008/10/08(水) 14:08:02ID:???
>>220
PHPで関数集なり、テンプレートエンジンもどきを作るくらいなら
なんで既存の枯れはてたSmartyを使わないのって事。


まぁ >>212みたいなのを見ても尚、PHPで同じ事が出来る。
と感じているのであれば、何説明しても無駄だろうけどさ。
テンプレート関数毎回作って、毎回デザイナに説明して、毎回デバッグしてるんだろうねw
0223nobodyさん2008/10/08(水) 16:35:41ID:???
ああ、、、
だから毎回デスマーチになるのかw
0224nobodyさん2008/10/09(木) 09:57:36ID:???
smartyとかテンプレートエンジンのいいとこは
デザイナに渡すときも
あとはよろしくねーって言えること。
マニュアルもちゃんとしてるし。
0225nobodyさん2008/10/09(木) 11:10:47ID:???
うちの場合ページが先に出来上がってくるから、それを元にtplを作ってるな。
それでもPHPベタ書きよりはよほど楽だしあとで修正しやすい。

0226nobodyさん2008/10/09(木) 16:09:53ID:???
デザイナに include と 変数 の使い方覚えて貰うだけでかなり楽になるよね。
02271962008/10/09(木) 23:38:15ID:???
>>222
> PHPで同じ事が出来る。

逆だよ。Smartyが前提なのではない。
素のPHPに対してSmartyをわざわざ追加する必要が無い、ということ。

しかしほんと、化石みたいなスレだな。
Smarty信者はまだPHP4とか使ってるのかね。
■ このスレッドは過去ログ倉庫に格納されています