【PHP】 Smarty 隔離スレ 【テンプレート】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2008/02/02(土) 00:21:09ID:6cKcKeTp0136nobodyさん
2008/06/05(木) 21:38:50ID:???俺は半年ほど休んでた時期に趣味で遊んだのはSchemeだけだった。
実務(共同作業)がSchemeでも進められるなら、迷わずこれを選ぶ。
しかし近年の現実はどいつもこいつもPerlすら宇宙語だからな。PHP一択にならざるをえない。
0137nobodyさん
2008/06/06(金) 13:01:48ID:???MovableType4.1 + αカスタマイズのCMSモドキの方が、お客には受けが良かった上に見積もりも良かった!
業務でSmartyを使うなら、隠れて使いたい
0138nobodyさん
2008/06/06(金) 21:00:18ID:???0139nobodyさん
2008/06/06(金) 22:14:37ID:???0140nobodyさん
2008/06/06(金) 23:39:38ID:???いや、判断材料としては操作感も重要だけど、使う側と作る側のロジックが違うから
どう考えても不条理な操作が要求されたりするんだよなあ。
もちろん使う人のために作るんだからお客様優先なわけだが、
将来コケるのが目に見えてるから困る。
0141nobodyさん
2008/06/06(金) 23:48:35ID:astBuURj・セールスレターテンプレート集(68通)
・売れるセールスレターの書き方
・ダイレクトメールワークシート
・穴埋め式Eメールテンプレート(14通)
・究極のセールスレターツールBOX
など、合計で500ページ近いパッケージとCDROMが
セットになっています。
ただ、この無料お試しはだいぶコストがかかるらしいので
500個の限定だそうです。
興味があればこちらをクリックしてください。
http://www.123marketing.jp/yanik/indextrial.php?jvcd=16797
0143nobodyさん
2008/07/10(木) 05:42:24ID:NxX5vAdg{$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<?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" );
?>
これは仕様なの?
0147146
2008/07/21(月) 01:41:40ID:8uak49aQ2chにコピペするときの変換ミスで、実際は正常に動いています。
0148nobodyさん
2008/07/21(月) 01:47:07ID:???0149146
2008/07/21(月) 01:52:13ID:???ええ!? マジすか……。
それじゃ、ディレクトリが多数ある場合は、
全てのディレクトリにMySmarty.class.phpが必要ってこと?
プラグイン自作してどうにかなる話じゃないですよ?w
0150nobodyさん
2008/07/21(月) 02:24:44ID:???0151nobodyさん
2008/07/21(月) 03:18:45ID:???いや、文字通り、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:???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:???0156nobodyさん
2008/07/24(木) 21:30:17ID:???これは、デフォルトのテンプレートディレクトリの名前です。 ファイルのインクルード時にリソースの種類を指定しなかった場合は、
このディレクトリから探します。デフォルトは ./templates で、 これは、実行しているスクリプトと
同じ場所にある templates/ ディレクトリを探すということです。
という文章からすると「実行しているスクリプト」が基準になるということみたいだな。
0157nobodyさん
2008/08/01(金) 21:13:05ID:???そんなことより、PHPもJSPのように
カスタムタグが使えたらいいのにね。
0158nobodyさん
2008/08/02(土) 02:29:09ID:???0159nobodyさん
2008/08/02(土) 19:51:20ID:???ぶっちゃけ、必要な機能だけ絞り込んで自分で作った方がいい。
0160nobodyさん
2008/08/02(土) 19:56:13ID:???0161nobodyさん
2008/08/03(日) 10:51:13ID:4+uLL3BX0162nobodyさん
2008/08/03(日) 11:32:25ID:???各種FW使うなら同梱されてるテンプレートエンジンを使う
0163nobodyさん
2008/08/04(月) 11:49:55ID:???smartyで↑の「xxx」を取得する方法ってありますか?
0164nobodyさん
2008/08/04(月) 22:09:03ID:???例で示されたxxxの部分は通常サーバ側には送信されることはない。
なのでサーバサイドで動いているsmartyから取得することは不可能。
0166nobodyさん
2008/08/06(水) 21:40:18ID:???0167nobodyさん
2008/08/07(木) 20:08:18ID:???0168nobodyさん
2008/08/07(木) 20:16:02ID:???0169nobodyさん
2008/09/04(木) 10:40:28ID:???で出力された結果が複数行にわたる場合、全ての行に対してインデントさせるにはどうすればいいですか?
{"\t"}{include}
とかしても先頭の行だけしかインデントされなくて
0170nobodyさん
2008/09/04(木) 11:33:28ID:???0171169
2008/09/04(木) 12:15:47ID:???0172nobodyさん
2008/09/04(木) 12:25:57ID:???0173169
2008/09/04(木) 21:08:05ID:???配布されているウェブアプリがsmartyを使っているのですが
配布ファイルのバージョンアップの際に面倒なことにならないかな・・・と
というかphpはわからなくて
smartyも触るのは初めてでマニュアルを見ながら触っているのですが・・・
インデントするのも難しいですね
レスしてくれた方々、ありがとうございますm(_ _)m
0174nobodyさん
2008/09/04(木) 21:11:12ID:???0175nobodyさん
2008/09/04(木) 21:31:16ID:???0176169
2008/09/05(金) 00:54:49ID:???レスしてくれた方々、ありがとうございますm(_ _)m
0177nobodyさん
2008/09/24(水) 00:32:25ID:KMdxurbqタグとクラスが一対一になってるのが素晴らしい。
0178nobodyさん
2008/09/25(木) 00:09:46ID:lXgzxRnB<p>名前:{$name}</p>
テンプレートに上記のような記述をしたのですが、
「名前:」の部分が化けてしまいます。
テンプレートファイルはEUCで保存してあります。
原因としてはどのような事が考えられますか?
0180178
2008/09/25(木) 02:06:16ID:???見ましたが、既に化けてます・・・
SmartyがEUC以外の文字コードで
テンプレートを処理しているということでしょうか?
0181nobodyさん
2008/09/25(木) 02:17:37ID:???0182178
2008/09/25(木) 02:47:42ID:???あ、Smarty.class.phpがカスタマイズされていました。
SJIS→EUC→SJISみたいな変換してる。
お騒がせしました。すみません。
既存のものとは別にSmartyを入れます。
0183nobodyさん
2008/09/26(金) 16:36:37ID:NKaAViJVそんなファイルないよっていうエラーが出るんですが、なぜでしょうか?
ためしに、force_compileをtrueにしてみましたが、やっぱり見に行ってしまうようです。
0184183
2008/09/26(金) 17:02:20ID:NKaAViJVこれはいったい・・・。
0185nobodyさん
2008/09/26(金) 17:16:56ID:???0186nobodyさん
2008/09/26(金) 17:23:10ID:NKaAViJVすいません、重要な点を忘れていました。
その別ディレクトリでコンパイルされたテンプレートを、
動かない方のtemplate_cにコピーしてやると、動くのです。
なのでパスが違ってはいないです。
全く謎・・・
0187nobodyさん
2008/09/26(金) 17:49:10ID:???0188nobodyさん
2008/09/26(金) 23:07:17ID:???さっきひさぶりにやってみたらsjisでも問題なく動いた(?_?)
0192nobodyさん
2008/10/02(木) 16:19:26ID:???postFilterで元に戻す。
これは基本だろう。
0193nobodyさん
2008/10/03(金) 12:27:37ID:???0194nobodyさん
2008/10/03(金) 19:01:42ID:???よりも
名前:{$name}
のほうが書きやすくて可読性も高いから。
0195nobodyさん
2008/10/03(金) 19:14:40ID:???0196nobodyさん
2008/10/03(金) 19:36:59ID:???0197nobodyさん
2008/10/03(金) 20:29:13ID:???0198nobodyさん
2008/10/04(土) 01:57:42ID:???素人or中級者未満だと自覚した方が良いよ。
0200nobodyさん
2008/10/05(日) 01:31:28ID:???意味がわからんというのは、君のやってる事のレベルが低いからだと思うよ。
PHP単体でキャッシュ処理や、ループ処理、エスケープ処理、携帯、PC両対応を想定したテンプレートを書いてごらん。
PHPはテンプレートっぽく使えるだけで、実務的にテンプレート管理を行おうとしたらかなりの量のコーディングが必要になってくる。
結局はテンプレートエンジンを作る必要はあるんだよ。
0201nobodyさん
2008/10/05(日) 01:40:36ID:???<?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:???0203nobodyさん
2008/10/05(日) 11:15:11ID:???0205nobodyさん
2008/10/06(月) 03:08:54ID:???「そんなコードを書く状況は100%ねぇよw」って言うなら、Smarty使う意味無いけど。
0206nobodyさん
2008/10/06(月) 08:52:51ID:???>なぜ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:???>PHP単体でキャッシュ処理や、ループ処理、エスケープ処理、携帯、PC両対応を想定したテンプレートを書いてごらん。
キャッシュは専用ライブラリを使う
ループ処理はPHPのforeachやwhileをそのまま使う
エスケープ処理はhtmlspecialchars()を使うか、短い名前で定義する
携帯、PC両対応はSmartyに備わってる機能ではない
0212196
2008/10/06(月) 19:40:07ID:???<?=h(e(n($name)))?>
0213nobodyさん
2008/10/06(月) 20:27:56ID:???そんなの結局は劣化車輪の再発明でしかないし、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:???0220nobodyさん
2008/10/08(水) 08:35:32ID:???>全部Smartyで出来るじゃんw
>使わない理由と、他のライブラリを使う理由を述べよ。
逆だよ。PHPでできるのに、なんでSmartyを使う必要があるのってこと。
0221nobodyさん
2008/10/08(水) 08:44:32ID:???だからなんなん?
テンプレートエンジンを利用すれば簡潔に記述できるのは事実だろ
0222nobodyさん
2008/10/08(水) 14:08:02ID:???PHPで関数集なり、テンプレートエンジンもどきを作るくらいなら
なんで既存の枯れはてたSmartyを使わないのって事。
まぁ >>212みたいなのを見ても尚、PHPで同じ事が出来る。
と感じているのであれば、何説明しても無駄だろうけどさ。
テンプレート関数毎回作って、毎回デザイナに説明して、毎回デバッグしてるんだろうねw
0223nobodyさん
2008/10/08(水) 16:35:41ID:???だから毎回デスマーチになるのかw
0224nobodyさん
2008/10/09(木) 09:57:36ID:???デザイナに渡すときも
あとはよろしくねーって言えること。
マニュアルもちゃんとしてるし。
0225nobodyさん
2008/10/09(木) 11:10:47ID:???それでもPHPベタ書きよりはよほど楽だしあとで修正しやすい。
0226nobodyさん
2008/10/09(木) 16:09:53ID:???0227196
2008/10/09(木) 23:38:15ID:???> PHPで同じ事が出来る。
逆だよ。Smartyが前提なのではない。
素のPHPに対してSmartyをわざわざ追加する必要が無い、ということ。
しかしほんと、化石みたいなスレだな。
Smarty信者はまだPHP4とか使ってるのかね。
0228nobodyさん
2008/10/10(金) 00:21:33ID:???0229nobodyさん
2008/10/10(金) 01:12:51ID:???必死すぎwww
196のコードなんでPHP4とか以前にPGとしてウンコのレベルだろww
君が無知なのはわかったから
PHP単体じゃテンプレートエンジンとして機能しないのに、
「何故、Smartyは必要ないのか」を具体的に答えてくれよな?
もしSmarty云々じゃなくてテンプレートエンジンがいらねーって事なら論外だ。
初心者スレから出直してこい。
>>228
普通に使われているし、需要も多いよ。
先月にも解説新刊が出た。
0230196
2008/10/10(金) 09:49:15ID:???答えは196に示してある通りなんだが。
俺もSmartyは仕事で3年くらい使ってたよ。
> 「何故、Smartyは必要ないのか」を具体的に答えてくれよな?
> もしSmarty云々じゃなくてテンプレートエンジンがいらねーって事なら論外だ。
じゃあ俺はお前さんにとって論外らしいので、議論の余地は無いな。
SmartyじゃないとMVCが守れない開発者は現場では使えない。
もしお前さんがデザイナーなら、PHPの基礎くらい勉強しろと言いたくなるな。
うちのWebデザイナーはみんなPHP触れるよ。
> 初心者スレから出直してこい。
ここよりレベルの低いスレがあるのか。それは恐ろしいな。
0231nobodyさん
2008/10/10(金) 10:34:43ID:???それだとあとでデザイン修正があったときとかめんどくさくない?
もらったデザインを前のとdiffかけて
差分をtplに反映とか。
ただプログラマが一元的に管理してたほうが
セキュリティ的にはいいよね。
escape忘れただけで大変なことになることもあるし。
0232nobodyさん
2008/10/10(金) 15:47:13ID:???0233nobodyさん
2008/10/10(金) 17:37:52ID:???こんな輩が得意げに宣ってるからPHPはウンコだって言われるんだろうな。
0234nobodyさん
2008/10/10(金) 17:44:35ID:???0235196
2008/10/10(金) 23:28:20ID:???209の要件を満たす方法の一つが212で、それは211と大して変わらない。
だけど196は、MVCさえ理解できれば、209で述べられている要件も、
201よりスマートなコードにする事も、満たすことが出来るんだ。
なんでか知らんけど、Smartyを信じる人は知識があって偉い、
そうじゃない人はみんな素人だ、という反論しか戴けないのは残念だな。
>>234
ストローク数の少なさと可読性は若干損なわれるが、
それでもSmartyよりは<?php echo $name ?>のほうがマシだと思う。
0236nobodyさん
2008/10/11(土) 00:30:31ID:???>そうじゃない人はみんな素人だ
誰もそんな事言ってないから。
君がSmartyを否定するだけの根拠を持ち出さないから素人扱いされちゃうんだよ。
(まぁ、テンプレートエンジンを否定してる時点で底が知れてるけども。)
196が良いって、グローバル変数かつ、ショートタグかつ、エスケープ無しがView的にOKって事かい?
それなら、早急にWEB系PGを辞めた方が良い。
212の記法に疑問を持たないのであれば、
やはり、早急にPGを辞めた方が良い。
一応聞いとくけど、OOP&MVC的に開発する時、どんな構成で作ってるの?
フレームワークとかライブラリとか教えてよ。
まさかhtdocs以下に.phpファイルを量産してたりしないよね?
■ このスレッドは過去ログ倉庫に格納されています