Smarty」カテゴリーアーカイブ

Smarty section

ここではSmartyのsection関数を解説していきます。

smarty

基本構文

{section name=i loop=5}
    {$smarty.section.i.index}、
{/section}

出力結果は「0、 1、 2、 3、 4、」 になります。
name=i
sectionに名前をつけて使用します。
loop=5
ループする回数を指定します。

初期値を設定する

{section name=i start=1 loop=5}
    {$smarty.section.i.index}、
{/section}

出力結果は「1、 2、 3、 4、 」 になります。

ステップを設定する

{section name=i start=1 loop=10 step=2}
    {$smarty.section.i.index}、
{/section}

出力結果は「1、 3、 5、 7、 9、 」 になります。

ステップに逆順を設定する

{section name=i loop=10 step=-2}
    {$smarty.section.i.index}、
{/section}

出力結果は「9、 7、 5、 3、 1、 」 になります。

配列を渡しループさせる

php

<?php
    $data = array(1,2,3,4,5,6,7,8,9);
    $smarty->assign('data', $data);

tpl

{section name=i loop=$data}
    {$data[i]}、
{/section}

出力結果は「1、 2、 3、 4、 5、 6、 7、 8、 9、 」になります。

連想配列を渡しループさせる

php

<?php
    $data = array(
        array(
            name => 'Tanaka',
            tel => '000-0000-0000'
        ),   
        array(
            name => 'Yamada',
            tel => '111-1111-1111'
        ),
    );
    $smarty->assign('data', $data);

tpl

{section name=i loop=$data}
    <p>
        {$data[i].name}<br />
        {$data[i].tel}<br />
    </p>
{/section}

出力結果

<p>
    Tanaka<br />
    000-0000-0000<br />
</p>
<p>
    Yamada<br />
    111-1111-1111<br />
</p>

$data[i][‘name’]とはアクセスできずエラーになってしまうので注意してください。

Smarty アナリティクストラッキングコードを記述する

ここではSmarty tplファイルでトラッキングコードを記述する方法について解説していきます。

google-analytics

例でブログに記述しているトラッキングコードを使用しています。

{literal}
<script type="text/javascript">
  
  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-38171779-1']);
  _gaq.push(['_trackPageview']);
  
  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();
  
</script>
{/literal}

Smartyの仕様上、{}は変数の表示に使われていてデリミタに設定されています。
なのでデリミタとして解釈されるとまずい場合
{literal}{/literal}でトラッキングコードを囲んでください。

Smarty インストール

ここではSmartyのインストールを解説していきます。

smarty

ダウンロードはこちら
http://www.smarty.net/download

設置

Smarty/libsフォルダをドキュメントルート直下に設置します。
cache , templates , templates_c フォルダをプロジェクト内に作成します。
(例ではSmartyフォルダにlibsの中身を置いています)

パスを通す

<?PHP
  
    // 読み込み
    require_once('Smarty/Smarty.class.php');
    // オブジェクト作成
    $smarty = new Smarty();
    // ディレクトリ設定
    $smarty->template_dir = 'smarty/templates';
    $smarty->compile_dir = 'smarty/templates_c';
    $smarty->cache_dir = 'smarty/cache';
  
    // 表示データをアサイン
    $smarty->assign('hoge', 'Hello world');
  
    // テンプレート表示
    $smarty->display('index.tpl');

Smarty.class.phpを読み込み、オブジェクトを生成後、cache , templates , templates_c フォルダのパスを通します。

アサインした変数の利用法

<!DOCTYPE html>
<html lang="ja">
<head>
   
<meta charset="UTF-8">
<meta content="86400" http-equiv="Expires"/>
<!--[if lt IE 9]>
    <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<title>Smarty</title>
</head>
   
<body>
{$hoge}
</body>
   
</html>

ファイルの拡張子は.tplです。
{$hoge}でアサインした変数が使用できHello worldと出力されます。

※注意
cache , templates_cにはキャッシュが書き込まれるので、書き込み権限が必要になります。
私はレンタルサーバーではパーミッションを777にしています。