• ブログTOP
  • AI・ディープラーニング
  • AR
  • VR
  • WEBサイト
  • WEBマーケティング
  • SEO
  • SNS
  • その他
  • お問い合わせ

ALAKI株式会社

COZIKEEいつまでも使えるTech情報発信ブログ

リクルートサイトはこちら >

twig30分クッキング-テンプレート編(1)-

2016年8月12日

  • このエントリーをはてなブックマークに追加

こんばんは、Webプログラマの篠田です。

猛暑日&熱帯夜が続きますね。夏バテにならないようにウナギなどを食べながら涼しい季節がくるのを一日千秋の思いで耐えていますw

今回も前回に引き続きテンプレートエンジン「twig」のお話メインに、「テンプレート」としての作り方の基本設定をご紹介したいと思います。

この記事の目次

  • 1 テンプレートファイル「.twig」を用意してみよう
  • 2 テンプレートファイル「.twig」とは
  • 3 「twig」の「include」を使って共通化をしよう。
  • 4 まとめ

テンプレートファイル「.twig」を用意してみよう

前々回から使っているPHP側でのtwig呼び出しの方法に手を加えていきます。

【Before】

ベースのPHPファイル(Before)
PHP
1
2
3
4
5
6
7
<?php
require_once './vendor/autoload.php';
 
$loader = new Twig_Loader_String();
$twig = new Twig_Environment($loader);
 
echo $twig->render(‘<h1>Hello {{ message }}!</h1>', array('message' => 'twig World'));

上記のコードを下記のように修正します

【After】

ベースのPHPファイル(After)
PHP
1
2
3
4
5
6
7
<?php
require_once './vendor/autoload.php';
 
$loader = new Twig_Loader_Filesystem('./views/');
$twig = new Twig_Environment($loader);
 
echo $twig->render(‘index.twig', array('message' => 'twig World'));

変更点は下記の2点です。

・「Twig_Loader_String」が「Twig_Loader_Filesystem」になり、引数「./views/」を持つ
・「 $twig->render」の第1引数が「index.twig」になった

「Twig_Loader_String」は直接文字列を渡して、出力するというものでした。
「Twig_Loader_Filesystem」にすることで、ファイルに書かれた内容を出力するという意味合いに変わります

そして、「Twig_Loader_Filesystem」の引数として参照するファイルがどこにあるかを指定することができます。

今回であれば「./views/」となっているので、実行するPHPファイルと同階層にある「views」ディレクトリを参照するという設定になります。
※環境に応じて「views」の内容を変えることで参照先を変更することができます。
※今回は「vendor」ディレクトリと同階層に「views」ディレクトを作っています。

続いて、「views」ディレクトリに保存する「index.twig」ファイルを用意します。
下記の内容を記述しています。
もちろん文字コードは「UTF-8」で保存してください。

index.twigのテンプレートファイル
1
2
3
4
5
6
7
8
9
<!DOCTYPE html>
<html>
<header>
    <meta charset="UTF-8">
</header>
<body>
    <h1>Hello {{ message }}!</h1>
</body>
</html>

この状態でPHPファイルを実行してみましょう。
すると、変更前と同じ結果になったのではないでしょうか?

テンプレートファイル「.twig」とは

見てもらうと分かるように「index.twig」フィアルの中身は基本「HTML」で書かれた内容と同様です。

違いを見るとHTMLでない「{{ message }}」というのが書かれているぐらいです。

拡張子は「.html」から「.twig」に変わりましたが基本はHTMLと同じで、内容が動的に変わる部分のみが「{{ }}」に置き換わったという理解で使うことができます。

これさえ理解しておけば、HTMLファイルの中にPHPのコードが混ざるようなこともなくページを作ることができます。
※このままでは、まだまだ簡単なことしかできませんが。。。

「twig」の「include」を使って共通化をしよう。

さて、ここまでの内容だけでサイトを作り出してしまうとテンプレートエンジンを導入したメリットが薄れてしまいます。

テンプレートエンジンの良さは「汎用性」をコードに保たせることができることです。

例えばHTMLの中で同じ記述が何度も出てくる場面が有ります。

その代表としては「<html>〜<body>」と「</body>〜</html>」の内容は大体1つのサイトで同じ記述になると思います。
※metaが違うというお話はまた次回にしますのでお楽しみに!

この部分を「共通化」することで1ページの「生産効率」をあげることもできます!

共通化の第1歩は共通化できる部分を切り出して別のファイルに記述することです。

ということで下記のようなファイルを作ってみましょう。

(1)「<html>〜<body>」を保存した「_header.twig」を作る

_header.twig
1
2
3
4
5
6
<!DOCTYPE html>
<html>
<header>
    <meta charset="UTF-8">
</header>
<body>

(2)「</body>〜</html>」を保存した「_footer.twig」を作る

_footer.twig
1
2
</body>
</html>

このように「index.twig」に記述されていた他のファイルでも利用できる部分を書き出してみました。

これにより、「index.twig」は下記のようになります。

(3)残りの「index.twig」

index.twig
1
<h1>Hello {{ message }}!</h1>

この状態ではうまく動いてくれませんね。
※ブラウザがよしなにしてくれるので動かなくもないですが厳密には動いていない状態です。

今、1つのファイルだった「index.twig」が3つのファイルにわかれました。
この状態では意味がありませんので「index.twig」から「_header.twig」と「_footer.twig」を読み込んで、1つの塊としてブラウザに読み込むようにしましょう。

その時に活躍するのが、twigの「include」です。
PHPではお馴染みの別ファイルを読み込むときに使う関数です。

使い方のイメージはPHPの時とおなじ感覚で利用することができます。
早速、「index.twig」に組み込んでいきたいと思います。

includeを利用したindex.twig
1
2
3
{% include '_header.twig' %}
<h1>Hello {{ message }}!</h1>
{% include '_footer.twig' %}

「include」は「Twig_Loader_Filesystem」で設定したディレクトリをスタートしてファイルを指定ます。

今回は「views」ディレクトリ直下に「_header.twig」と「_footer.twig」が保存されている想定なので上記のような記述になります。

これで、「<html>〜<body>」と「</body>〜</html>」の内容がソースに書かれていればinclude成功です。

まとめ

やっと、テンプレートエンジンの良さをご紹介できる所まで来ましたが、まだまだ実務に耐えられる状態ではないですね。

「metaが変わる場合はどうしたらいいの?」といったincludeでは十分な対応がしづらい点を次回ご紹介して、テンプレートエンジンの便利さを知ってもらえればと思います。

  • ツイート
  • このエントリーをはてなブックマークに追加

You may also like...

  • e3e0346bbd8a5a654b06dfbed496002d_m

    「Failure writing to local file」でパニックに陥らない処方箋

    12 1月, 2018

  • 14800708_xl

    コーダーさんにフィーバータイムを与えてくれる(かも知れない)formタグの属性のお話

    30 9月, 2016

  • 828d070c1e9b0e8c43a7f928c1098ea8_m

    何となく使っているプログラム①-デバイス判定 編-

    21 11月, 2018

プログラマー募集
  • Next story SNSを導入する前に考えるべき3つのこと
  • Previous story 賢くて仕事ができる人を気取るための、デザインにまつわる数字の話

弊社サービス

MONJI+ MUGHEN ALAKI クラウド型受発注システム さよなら過去のAR。WebARがイベント集客に革命を起こします。

運営会社

ALAKI株式会社 ALAKI株式会社採用サイト

人気の記事

  • alaki1462_A_businessman_who_works_logically_1da80a2e-c297-4911-bdd6-feba0ebf1357

    仕事術

    【書籍要約】数学的な仕事術大全

    4 11月, 2024

  • fv-main-img-min

    空間コンピューティング

    世界初!「空間コンピューティング」を専用端末不要、スマホのWebブラウザのみで実現する『Web XR Site』を公開しました

    22 6月, 2023

  • Virtual reality players isometric vector illustration. VR UI and navigation. Futuristic digital technology. Virtual screen. Mixed reality 3d concept. Person in VR headset. Web banner idea

    AR

    Appleから新世代MRグラス「Vision Pro」の登場 – デジタルと現実世界が融合する新時代へ

    6 6月, 2023

  • AWE

    未分類

    ARアプリ『MUGHEN』が世界最大のAR/VRアワード「AWE」のファイナリストに選出されました!

    26 5月, 2023

  • python-logo-master-v3-TM

    pyhotn / 業務効率化

    「SwinIR」で高画質化した画像を pythonを使用して一括で元のサイズに戻す方法

    2 2月, 2023

カテゴリー

  • AI・ディープラーニング
  • AR
  • BtoB
  • CMS
  • Git
  • Google AdWords
  • gulp
  • Javascript
  • Laravel
  • Photoshop
  • Pug
  • pyhotn
  • Sass
  • SEO
  • SNS
  • Twitter広告
  • VR
  • Web3.0
  • WEBサイト
  • WEBマーケティング
  • YouTube
  • コーディング
  • システム開発
  • スマートフォンサイト
  • セキュリティ
  • セミナー
  • その他
  • ツール
  • デザイン
  • ベトナムレポート
  • 仕事術
  • 未分類
  • 業務効率化
  • 空間コンピューティング
  • 色

アーカイブ

  • 2024年11月
  • 2023年6月
  • 2023年5月
  • 2023年2月
  • 2023年1月
  • 2022年12月
  • 2022年11月
  • 2022年10月
  • 2022年9月
  • 2022年2月
  • 2021年12月
  • 2021年9月
  • 2021年7月
  • 2021年6月
  • 2020年10月
  • 2020年9月
  • 2020年8月
  • 2020年6月
  • 2019年6月
  • 2019年5月
  • 2019年4月
  • 2019年3月
  • 2019年2月
  • 2019年1月
  • 2018年12月
  • 2018年11月
  • 2018年9月
  • 2018年8月
  • 2018年7月
  • 2018年6月
  • 2018年5月
  • 2018年4月
  • 2018年3月
  • 2018年2月
  • 2018年1月
  • 2017年12月
  • 2017年11月
  • 2017年10月
  • 2017年9月
  • 2017年8月
  • 2017年7月
  • 2017年6月
  • 2017年4月
  • 2017年3月
  • 2017年2月
  • 2017年1月
  • 2016年12月
  • 2016年11月
  • 2016年10月
  • 2016年9月
  • 2016年8月
  • 2016年7月
  • 2016年6月
  • 2016年5月
  • 2016年4月
  • 2016年3月
  • 2016年2月
  • 2016年1月
  • 2015年12月
  • 2015年11月
  • 2015年10月
  • 2015年9月
  • 2015年7月
  • 2015年3月
  • 2015年2月
  • 2015年1月
  • 2014年12月
  • 2014年11月
  • 2014年10月
  • 2014年9月
  • 2014年8月
  • 2014年7月
  • 2014年6月
  • 2013年10月
  • 2013年9月

Facebook

お問い合わせ

お問い合わせ

人気の記事

  • 【書籍要約】数学的な仕事術大全
  • 世界初!「空間コンピューティング」を専用端末不要、スマホのWebブラウザのみで実現する『Web XR Site』を公開しました
  • Appleから新世代MRグラス「Vision Pro」の登場 – デジタルと現実世界が融合する新時代へ
  • ARアプリ『MUGHEN』が世界最大のAR/VRアワード「AWE」のファイナリストに選出されました!
  • 「SwinIR」で高画質化した画像を pythonを使用して一括で元のサイズに戻す方法

カテゴリー

  • AI・ディープラーニング
  • AR
  • BtoB
  • CMS
  • Git
  • Google AdWords
  • gulp
  • Javascript
  • Laravel
  • Photoshop
  • Pug
  • pyhotn
  • Sass
  • SEO
  • SNS
  • Twitter広告
  • VR
  • Web3.0
  • WEBサイト
  • WEBマーケティング
  • YouTube
  • コーディング
  • システム開発
  • スマートフォンサイト
  • セキュリティ
  • セミナー
  • その他
  • ツール
  • デザイン
  • ベトナムレポート
  • 仕事術
  • 未分類
  • 業務効率化
  • 空間コンピューティング
  • 色

検索

ALAKI株式会社 © 2025. All Rights Reserved.