質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

87.90%

smarty記述をHTMLタグ内に埋め込むことは可能なのでしょうか?

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 2,945

score 76

よろしくお願いします。
非常にバカな幼稚な質問で恐縮ですが、ご教授いただきたくお願いします。

tplファイルを作成する際、smartyの記述は大抵は
<table>
<tr>
<!-- {if $a} -->
<td style="color: red;"> AAA </td>
<!-- {else} -->
<td style="color: blue;"> BBB </td>
<!-- {/if} -->
</tr></table>
という書き方であると思っていますが、これを・・・

<!-- <td {if}~~{else}~~{/if} >  -->
このような書き方は出来るものなのでしょうか?

上記例だと、条件によってtd内の色を変えたいという処理をさせたいのですが
それを<td>タグ内に処理を書いてもできるものか。ということです。

実際やってみて出来なかったのですが、あるサイトでこのような書き方をされている
のを見たことがあり、私だけが出来てないのか、そもそもそういう書き方はできないのか
を知りたく思っています。

可能でしたらサンプルコードや参考先URLなどお教え頂けると嬉しいです。
よろしくお願いします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+2

公式マニュアルにも行頭に書かなければならないという記述はないので
可読性の面では少し難が出てきますが、問題なくできるはずですよ。
というよりこの場合<!-- -->は不要というか邪魔しているのではないかと・・・
HTMLでは「画面上に表示しない」コメント機能として使うようなものですしね。
http://www.htmq.com/html/comment2.shtml

「実際やってみて出来なかった」コードをご提示いただければ
なぜ出来なかったかこちらの方で検証もできますしどうすれば良いかアドバイスもできますよ。

 サンプルのようなもの

下記のように書いて動作確認してみましたが、問題なく動きました。

{* $colorがtrueなら赤、それ以外は黒 *}
<p style="color:{if $color }red{else}black{/if};">
Hello!!
</p>

やはりHTMLタグを<!-- -->で囲っているので「何も表示されない」という問題が起きているのではないでしょうか?
そもそもSmartyのif文などの構文はPHPの構文処理に変換されて元々画面に表示されないので<!-- -->で囲う必要がないですね。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/06/05 01:41

    返信遅れて申し訳ございません。ご回答いただき有難うございました。
    結論を言えば私のコーディングミスでした。ミスを直したところ無事エラーなく実行できました。
    有難うございました。

    Smartyをもっと使うならもっとSmartyのこと勉強しないといけないなあと思ったのと、海外もふくめてSmarty書籍って本当に少ないですよね。Smartyてあまり使われないんでしょうかね。(愚痴失礼しました)

    キャンセル

  • 2017/06/05 06:27

    確かにSmartyは古い書籍が多いですね。ちょっと検索しても私がSmartyを初めて使った時の何年も前の書籍がいまだに検索上位にくるくらしですし。基本が変わっていないといえばそれまでですが・・・。
    今はtwigの方が多いというのもどこかで見ました。twigを標準のテンプレートとして採用しているフレームワークもあるようですし。
    フレームワークもそうですが、使う人や案件に合っているかとか、好みなのかなとも思います。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 87.90%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る