メニュー

Home >freo講座>初心者の為のfreoテンプレート編集講座> 【基本編(05)】演算子を使った条件式(基本)

【freo講座】【初心者の為のfreoテンプレート編集講座】【基本編(05)】演算子を使った条件式(基本)

2012/08/23 13:49|タグ:演算子論理演算子条件分岐条件式if関数smartyグッジョブ表示 53

freoの編集方法のものすごく簡単な説明第5弾です。

前回までのおさらい

freoではsmartyを使っているのでテンプレートとPHPをわけて管理することができます。
テンプレートでは変数を利用できます。
テンプレートでは簡単な条件分岐が利用できます。

この回では、条件分岐で活用する条件式の書き方について説明します。

条件式とは

freoのテンプレートでは、色んな条件分岐が利用されています。
条件分岐の書き方は、前回説明したとおり、

<!--{if 条件式1}-->
   条件式1だった場合の表示
<!--{elseif 条件式2}-->
   条件式2だった場合の表示
<!--{else}-->
   条件式1でも条件式2でもなかった場合の表示
<!--{/if}-->

となります。
条件分岐中で、どんな条件であるかを表すのが、条件式です。
条件式にも、さまざまな書き方があります。
簡単なものから説明します。
前回と同じように、[freo/templates/internals/pages/default.html]を使用して説明しますので、こちらを開いておいてください。

条件式の書き方(基本)

(1)「ある変数に値が入っていた場合」を示す条件式の書き方

一番単純な条件式が、「ある変数に値が入っていた場合」を示す条件式です。
これは、

<!--{if $ある変数}-->

と書けばOKです。
単純に、<!--{if この部分}-->に変数の名前を書くだけです。
例えば、[freo/templates/internals/pages/default.html]の2行目を見てください。

<!--{if $freo.query.id}-->

と書かれていますが、前回さらっと説明したように、これは、

<!--{もしページIDがあったら}-->

という意味になります。
(正確には、「もしIDがあったら」なのですが、このテンプレートはページ用のテンプレートなので、ここでいうIDとはつまりページIDということになります。)

演算子を使った条件式(基本)

(2)複数の条件を示す条件式の書き方

一行の条件式で、2個以上の条件を示したいときの書き方を説明します。
複数の条件を示すときの注意は、その条件が、「かつ」条件なのか「または」条件なのかということです。

条件式Aと条件式Bを示したいとき、
「AかつB」つまり「A and B」なのか、「AまたはB」つまり「A or B」なのかによって、書き方が違います。

AかつBの場合は、

<!--{if 条件式A and 条件式B}-->

と書きます。
AまたはBの場合は、

<!--{if 条件式A or 条件式B}-->

と書きます。

実際の使用例を見てみます。
[freo/templates/internals/pages/default.html]の12行目に、

<!--{if $page.file and $page.image}-->

と書いてあります。
(1)で見たとおり、{if $変数}は「ある変数に値が入っていた場合」を示す条件式です。
ですので、上記の条件式は、

<!--{もしページファイルがあって、かつページイメージもあったら}-->

という意味になります。

ここで使っている「and」と「or」のことを、演算子といいます。
smartyで使う記号のことで、英語や数字が使われています。
英語っぽく使われてはいるのですが、正確な英語の文章ではなく、smartyを使う上での単なる記号なので、難しいことは考えないで意味ごと覚えちゃうのがいいと思います。
こういった演算子を使うと、条件式で指定できる条件の幅がグンと広がります。

 

(3)「ある変数に値が入っていなかった場合」を示す条件式の書き方

(1)で説明した、「ある変数に値が入っていた場合」とは反対に、今度は「ある変数に値が入っていなかった場合」の条件式の書き方です。

(1)だけを使っても、「ある変数に値が入っていた場合」を表現することはできます。
たとえば、

<!--{if $ある変数}-->
    ある変数に値が入っていた場合の表示
<!--{else}-->
    ある変数に値が入っていなかった場合の表示
<!--{/if}-->

のように、{else}を使う方法です。

ある数に値が入っていた場合はなにかを表示し、なにも入っていなかった場合は別のなにかを表示する場合には、この方法が有効です。
しかし、ある変数に値が入っていた場合にはなにもしないで、ある変数に値が入っていなかった場合にのみなにかを表示したいとき、いちいち「ある変数に値が入っていた場合」を指定するのは面倒です。
もっとシンプルに、「ある変数に値が入っていなかった場合」のみを定義したいときは、(2)で使用したような演算子を利用します。

<!--{if !$ある変数}-->

!」の部分が演算子です。
意味は「not」というとわかりやすいと思います。
上記をむりやり翻訳してみると、

<!--{もし でなかったら $ある変数}-->

となって、「ある変数に値が入っていなかった場合」を表現することができます。

論理演算子について

とりあえずここまで理解しておけば充分ですが、プラスアルファで覚えておいていただくとよさそうなおまけを少々。

(2)で解説した「and」と「or」、(3)で解説した「!」のことを、演算子の中でも、特に論理演算子といいます。
ちなみに、「and」は「&&」、「or」は「||」と書き換えることもできます。
そして、「!」は「not」と書き換えることができます。

よって、それぞれ書き換えて(2)と(3)を書いてみると、
(2)の「かつ」条件

<!--{if 条件式A && 条件式B}-->

となり、また(2)の「または」条件

<!--{if 条件式A || 条件式B}-->

となり、(3)は

<!--{if not $ある変数}-->

となります。
わかりやすく表にするとこんな感じです。

演算子 別表記 演算子の意味
and && ~かつ~
or || ~または~
not ! ~ではない

ページ移動

ユーティリティ

Twitter

サイト内検索

ページ上部へ