<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
   <channel>
      <title>Smartyをはじめよう！</title>
      <link>http://smarty.karakuriya.biz/</link>
      <description>SmartyはPHPのテンプレートエンジンです。</description>
      <language>ja</language>
      <copyright>Copyright 2008</copyright>
      <lastBuildDate>Tue, 16 May 2006 11:49:25 +0900</lastBuildDate>
      <generator>http://www.sixapart.com/movabletype/?v=3.2-ja-2</generator>
      <docs>http://blogs.law.harvard.edu/tech/rss</docs> 

            <item>
         <title>プラグインはとても便利</title>
         <description><![CDATA[カンマ編集のみならず、プラグインはとてもｌ便利です。

値はこうだけど、画面上はこう出したい！

って時は、プラグインがおすすめです。

例えば、データとして、１は男、２は女だった場合、次のようなプラグインを作っておけばいいわけです。

<blockquote><pre>
function smarty_modifier_sex($sex)
{
	if ($sex == 1) return "男";
	if ($sex == 2) return "女";
	return "";
}
</pre>
</blockquote>]]></description>
         <link>http://smarty.karakuriya.biz/cat36/000428.html</link>
         <guid>http://smarty.karakuriya.biz/cat36/000428.html</guid>
         <category>　４．変数の修正子</category>
         <pubDate>Tue, 16 May 2006 11:49:25 +0900</pubDate>
      </item>
            <item>
         <title>カンマ編集プラグインの作り方</title>
         <description><![CDATA[では、実際に作ってみましょう。

テンプレートの中では

<blockquote>
{$price|<strong>kanma</strong>}
</blockquote>

と使うことにしましょう。作る修正子の名前は「kannma」です。

まず、ファイル名ですが、

<blockquote>modifier.修正子の名前.php</blockquote>

になります。なので、今回の場合は、<strong>modifier.kanma.php</strong> です。

次に関数名ですが、

<blockquote>smarty_modifier_修正子名</blockquote>

になります。なので、今回は、<strong>smarty_modifier_kanma</strong> です。

この関数の中で、値をもらって、カンマ編集して返してあげればいいわけで

]]></description>
         <link>http://smarty.karakuriya.biz/cat36/000427.html</link>
         <guid>http://smarty.karakuriya.biz/cat36/000427.html</guid>
         <category>　４．変数の修正子</category>
         <pubDate>Tue, 16 May 2006 11:39:42 +0900</pubDate>
      </item>
            <item>
         <title>カンマ編集って面倒じゃない？（プラグインのススメ）</title>
         <description><![CDATA[すっかり更新が止まってました。はよ書け！と、突っ込みまで頂きました（汗）。

金額などはよく、カンマ編集して表示します。カンマ編集自体は、PHPの <strong>number_format</strong> 関数を使えばなんてことないんですが、カンマ編集した値は計算には使えないので、表示用に、カンマ編集した値も別途必要になります。

１つの値に２つの変数が要るわけで、変数名をどうするか？例えば、$price と $price_str にしようかとか。。。

これを考えるだけでも、メンドイ。プログラムの関数の中で、引数で２つ渡すべきか、それぞれの関数の中で編集するかとか。。。。あぁ～、メンドイ。

と、Smartyの修正子を見ても、あってもよさそうなカンマ編集がない。

こんなときは、]]></description>
         <link>http://smarty.karakuriya.biz/cat36/000426.html</link>
         <guid>http://smarty.karakuriya.biz/cat36/000426.html</guid>
         <category>　４．変数の修正子</category>
         <pubDate>Tue, 16 May 2006 11:23:46 +0900</pubDate>
      </item>
            <item>
         <title>修正子を連結して使う</title>
         <description><![CDATA[修正子はそれ単体でも使えます（当然です）が、通常は複数の修正子を使います。

例えば、input タグで入力された内容を、確認画面でそのまま表示する場合、エスケープしないといけない文字（&lt;、&gt; など）が入力されることもあります。
この場合、入力された文字をそのまま表示するには、<strong>escape</strong> が必要です。しかも、未入力の場合は「＊未入力」と表示したい場合には、<strong>default</strong> も使います。

このような場合は、次のように書きます。

<blockquote>
{$str|escape<strong>|</strong>default:"＊未入力"}
</blockquote>]]></description>
         <link>http://smarty.karakuriya.biz/cat36/000399.html</link>
         <guid>http://smarty.karakuriya.biz/cat36/000399.html</guid>
         <category>　４．変数の修正子</category>
         <pubDate>Thu, 23 Mar 2006 12:46:06 +0900</pubDate>
      </item>
            <item>
         <title><![CDATA[nl2br：改行文字を &lt;br /&gt;に変換]]></title>
         <description><![CDATA[textareaで複数行入力すると、必ずと言っていいほど「<strong>改行</strong>」されます。これをこのまま表示しても改行されません。HTMLの改行は <strong>&lt;br /&gt;</strong> なので、HTML上で改行させるには、これに変換しないといけません。

PHPには便利な関数があって、<strong>nl2br()</strong> を使って、改行文字を &lt;br /&gt; に変換できます。通常はこれを使って表示すればいいのですが、まったく同じ機能がSmartyにもあります。それが、 <strong>nl2br</strong> です。

<blockquote>
{$str|<strong>nl2br</strong>}
</blockquote>

で、勝手に改行してくれます。]]></description>
         <link>http://smarty.karakuriya.biz/cat36/000387.html</link>
         <guid>http://smarty.karakuriya.biz/cat36/000387.html</guid>
         <category>　４．変数の修正子</category>
         <pubDate>Wed, 08 Mar 2006 18:28:50 +0900</pubDate>
      </item>
            <item>
         <title><![CDATA[escape：&lt;や&gt;をそのまま表示]]></title>
         <description><![CDATA[&lt; や &gt; を表示しようとする時は、&amp;lt; や &amp;gt; とわざわざ変換してやらないといけないんですが、<strong>escape</strong>を使うと、その変換をしてくれます。

<blockquote>
<pre>
$str = "&lt;b&gt;太字&lt;/b&gt;";
$smarty = new Smarty;
$smarty->assign("str",$str);
$smarty->display('index.html')
</pre>
</blockquote>

とPHPでは、値をそのまま渡して、テンプレートのほうで

<blockquote>
{$str|<strong>escape</strong>}
</blockquote>

と書けば、出力結果は

<blockquote>&lt;b&gt;太字&lt;/b&gt;
</blockquote>

となります。この種の変換はいちいち面倒なので、かなり重宝します。

escapeしなければ、&lt;b&gt;　はそのままタグとして、<b>太字</b> と表示されます。]]></description>
         <link>http://smarty.karakuriya.biz/cat36/000384.html</link>
         <guid>http://smarty.karakuriya.biz/cat36/000384.html</guid>
         <category>　４．変数の修正子</category>
         <pubDate>Fri, 03 Mar 2006 09:47:46 +0900</pubDate>
      </item>
            <item>
         <title>default：空文字の場合の表示の指定</title>
         <description><![CDATA[表示する内容が空文字の場合はよくあります。任意登録の項目は往々にして何も入力しない場合が多いです。
その場合、それをそのまま出すと、表示的によろしくない場合があります。
また、未登録の場合は「未登録」と明示的に表示したい場合もあります。

今までは、これらの処理はPHPでやってました。

<blockquote>
<pre>
if ($mail == "")
    $dispmail = "<メールアドレスは登録されていません>";
else
    $dispmail = $mail;
</pre>
</blockquote>

今までの話だと、Smartyで表示する場合も同じようなものです。

ここで使うのが <strong>default</strong> です。]]></description>
         <link>http://smarty.karakuriya.biz/cat36/000372.html</link>
         <guid>http://smarty.karakuriya.biz/cat36/000372.html</guid>
         <category>　４．変数の修正子</category>
         <pubDate>Wed, 22 Feb 2006 11:10:09 +0900</pubDate>
      </item>
            <item>
         <title>表示に関する部分は出来るだけテンプレートで</title>
         <description><![CDATA[テンプレートでPHPからの値を表示するには <strong>{$name}</strong> と書きます。また、連想配列で値を渡す場合は <strong>{$member.name}</strong> のように書きます。

テンプレートの便利なところは、この変数に、修正子と呼ばれる、修飾語みたいなものが書けます。つまり、この修正子を使えば、今まで、PHPプログラムのほうで、出力のための編集を、テンプレート側で行うことが出来ます。]]></description>
         <link>http://smarty.karakuriya.biz/cat36/000371.html</link>
         <guid>http://smarty.karakuriya.biz/cat36/000371.html</guid>
         <category>　４．変数の修正子</category>
         <pubDate>Tue, 21 Feb 2006 09:54:32 +0900</pubDate>
      </item>
            <item>
         <title>表示の仕方もテンプレートで</title>
         <description><![CDATA[<a href="http://smarty.karakuriya.biz/cat33/000362.html">繰り返しの行を表示する</a>。<a href="http://smarty.karakuriya.biz/cat33/000352.html">表示項目が多くても意外と簡単に表示できる</a>。この２とおりが出来れば、検索して結果を一覧で表示して、タイトルなりをクリックすると詳細な画面を表示するといった、基本的なWebプログラムは出来上がります。

もう１つテンプレートの素晴らしい機能として、表示の仕方もいろいろ設定ができます。

どういうことかと言うと、例えば、改行の扱い。textareaで改行付きの文章を入力し、それを表示する場合など、今まではPHPプログラムのほうで、改行コードを <strong>&lt;br /&gt;</strong> に置き換えていました。しかし、この処理もテンプレートで出来ます。

また、<strong>&lt;</strong> や <strong>&gt;</strong> のような文字もエスケープする必要があります。これもテンプレートで可能です。

その他にもいろいろあります。
Smartyのマニュアルでいうところの<strong>変数の修正子</strong>と呼ばれる機能です。
（前回書いた制御構造は、Smartyのマニュアルだと<strong>組み込み関数</strong>と呼ばれています）

こうやって、表示に関係する部分を出来るだけテンプレートに書くことで、PHPプログラムのほうは、なおいっそう、すっきりとしたコードになります。]]></description>
         <link>http://smarty.karakuriya.biz/cat33/000364.html</link>
         <guid>http://smarty.karakuriya.biz/cat33/000364.html</guid>
         <category>　３．使い方</category>
         <pubDate>Mon, 13 Feb 2006 12:04:54 +0900</pubDate>
      </item>
            <item>
         <title>表（行）を表示するには？</title>
         <description><![CDATA[しばらく、脱線ネタで日を稼いでましたが、続きです。

表示する項目が多い場合、連想配列を使うと便利です。というのは、<a href="http://smarty.karakuriya.biz/cat33/000352.html">前回の話</a>で、今回は、表の行のような、繰り返し表示する方法です。
このような場合は、出力が何行になるか？は分かりません。データベースを読んで初めてわかるものです。なので、最初からテンプレートに

<blockquote><pre>
{$member.name1}
{$member.name2}
{$member.name3}
</pre></blockquote>

とは書けません。

テンプレートには、PHPプログラムからの値を表示するだけでなく、いわゆる<strong>制御構造</strong>をいうモノを持っています。

なんですか？それ？]]></description>
         <link>http://smarty.karakuriya.biz/cat33/000362.html</link>
         <guid>http://smarty.karakuriya.biz/cat33/000362.html</guid>
         <category>　３．使い方</category>
         <pubDate>Sat, 11 Feb 2006 17:47:18 +0900</pubDate>
      </item>
            <item>
         <title>Smarty日本語</title>
         <description><![CDATA[日本語のサイトです。
日本語のマニュアルはここです。

<a href="http://sunset.freespace.jp/smarty/">http://sunset.freespace.jp/smarty/</a>

マニュアルはWebでも見れますし、Windows用のヘルプファイルの形式でダウンロードも出来ます。
]]></description>
         <link>http://smarty.karakuriya.biz/cat35/000354.html</link>
         <guid>http://smarty.karakuriya.biz/cat35/000354.html</guid>
         <category>関連サイト</category>
         <pubDate>Fri, 10 Feb 2006 09:42:40 +0900</pubDate>
      </item>
            <item>
         <title>Smarty本家</title>
         <description><![CDATA[いわずと知れた Smartyの本家です。

<a href="http://smarty.php.net/">http://smarty.php.net/</a>

]]></description>
         <link>http://smarty.karakuriya.biz/cat35/000353.html</link>
         <guid>http://smarty.karakuriya.biz/cat35/000353.html</guid>
         <category>関連サイト</category>
         <pubDate>Thu, 09 Feb 2006 23:47:19 +0900</pubDate>
      </item>
            <item>
         <title>Smarty入門 PHP5＋テンプレート・エンジンでつくるMVCアプリケーション</title>
         <description><![CDATA[smarty関連の書籍は知らなかったのですが、amazonで１冊だけありました。

<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4798108839/qid=1138940421/sr=1-1/ref=sr_1_2_1/503-6243085-7639919http://www.amazon.co.jp/exec/obidos/ASIN/4798108839/qid=1138940421/sr=1-1/ref=sr_1_2_1/503-6243085-7639919">Smarty入門 PHP5＋テンプレート・エンジンでつくるMVCアプリケーション</a>

実物は見たことないのですが、入門書には最適みたいです。
PHPはver.5みたいですね。]]></description>
         <link>http://smarty.karakuriya.biz/cat34/000349.html</link>
         <guid>http://smarty.karakuriya.biz/cat34/000349.html</guid>
         <category>書籍</category>
         <pubDate>Tue, 07 Feb 2006 02:02:39 +0900</pubDate>
      </item>
            <item>
         <title>表示するアイテムが多い場合</title>
         <description><![CDATA[なるほど、表示したい値（変数）に対して　<strong>$smarty-&gt;assign("…",$…);</strong> を繰り返せば表示できますが、普通、１つのページに山ほど表示する値はあります。

手前味噌で恐縮ですが、福井の不動産サイト（<a href="http://fukui.fudo-3.info/">http://fukui.fudo-3.info/</a>）の物件の詳細画面ともなると、所在地、沿線、賃料、敷金、礼金、うんぬんかんぬんと。

これ全部について、$smarty-&gt;assign("…",$…);　をしないといけないのかと思うと、プログラマーはゾッとします。正直、そんなたくさん書くのは面倒。。。でも、これを言っちゃうとダメなので、プログラムの管理上どーのこーのとか、共通化出来んのか？とか言い始めます。バグ対策もあるので、ひとえに否定も出来ませんが、その半分以上は

こんなに書くの面倒じゃ！！

が率直な意見だと思います。現に私はそうです。どうも、プログラマーという人種は、楽をしたがります。

そこで、]]></description>
         <link>http://smarty.karakuriya.biz/cat33/000352.html</link>
         <guid>http://smarty.karakuriya.biz/cat33/000352.html</guid>
         <category>　３．使い方</category>
         <pubDate>Mon, 06 Feb 2006 10:23:31 +0900</pubDate>
      </item>
            <item>
         <title>基本的な流れ</title>
         <description><![CDATA[プログラムからの値を表示出来たので、流れを簡単に説明します。

マニュアルを熟読すれば、もっと効率良い使い方があるかも知れませんが、私は普段使っている内容しか書けないので、その範囲内ということで。

まず、PHPプログラムのほうですが、

index.php
<blockquote>&lt;?

require_once "libs/Smarty.class.php";　<strong>（１）</strong>

$name = "矢口真里";　<strong>（２）</strong>

$smarty = new Smarty;　<strong>（３）</strong>
$smarty-&gt;clear_cache('index.html');　<strong>（４）</strong>
$smarty-&gt;assign("namae",$name);　<strong>（５）</strong>
$smarty-&gt;display('index.html');　<strong>（６）</strong>
?&gt;
</blockquote>]]></description>
         <link>http://smarty.karakuriya.biz/cat33/000351.html</link>
         <guid>http://smarty.karakuriya.biz/cat33/000351.html</guid>
         <category>　３．使い方</category>
         <pubDate>Sat, 04 Feb 2006 20:27:17 +0900</pubDate>
      </item>
      
   </channel>
</rss>
