お名前.comでSmartyを使う方法

お名前.comの共用サーバーではSmartyが使えるのかわかりません。サポートのFAQには使えないとは書いていませんが使えるとも書いていません。PHPがつかれば基本的には使えると思いますが、念のため確認はしておいたほうがいいなというのはありますので調べて見ました。

事前確認

共用サーバーを使う際は、ある程度確認が必要です。他のサーバーで使えていたから使えるだろうという安易な考え方で契約すると、いざって時に使えなかったりもしたり苦労します。なのである程度調べておいた方が吉です。WordPressやECキューブみたいに有名なCMSで簡単インストール機能がついている場合は調べなくても使えますが、そんなケースではない時は調べるくせをつけています。

ヘルプ確認

お名前.comのヘルプを確認してみたいと思います。
【共用サーバーSD】Smarty は利用できますか?

Smartyは初期状態ではインストールされておりません。 お客様領域にインストールを行っていただいての
ご利用をお願いいたします。

※インストールならびに操作方法に関してはサポート致しておりませんので、あらかじめご了承ください。

となっております。多分使えるだろうとは思いますが、やはり説得力にかけます。このまま使用できるのかできないのかわからないまま結論だすには早いです。というわけで実験してみます。

Smartyをダウンロード

公式サイトからダウンロードします。

libsをアップロード

解凍したフォルダの中にあるlibsを、ドキュメントルート直下にいれます。フォルダ構造は以下のようにしたいと思います

ドキュメントルート/smarty/libs
           ├───template
           │
           └───template_c

とします。libsをアップロードすればインストールは終わりです

phpファイルを作成

ということでsmarty.phpというファイルを作成します。

<?php

/* Smarty クラスを読み込む場合は下記のように表記します */  

define( 'SMARTY_DIR', '/export/sd05/www/jp/r/e/gmoserver/6/4/sd0064164/ドメイン名/smarty/libs/' );
require_once( SMARTY_DIR . 'Smarty.class.php' );

/*
 * Smarty オブジェクトを生成し、テンプレートディレクトリとコンパイルディレクトリを設定します。
 * テンプレートディレクトリ内に Smarty 用のテンプレートを設置します。
 * コンパイルディレクトリは、PHP が書き込みを出来るパーミッションにしておく必要があります。
 */

$smarty = new Smarty();
$smarty->template_dir = "smarty/templates";
$smarty->compile_dir  = "smarty/templates_c";

/*
 * テンプレート変数に値をセットします。
 * ここでは、message というテンプレート変数に Hello World! という文字列をセットしています。
 * テンプレート内では、{$message} という変数でセットした文字列を呼び出すことができます。
 */

$smarty->assign("message", "Hello World!");

/*
 * テンプレートを出力します。出力するテンプレートファイル名を渡します。
 * Hello World! と出力されていたら成功です。
 */

$smarty->display("index.tpl");
?>

ファイルを作成したら、ドキュメントルートの直下に置きます。

フォルダのパーミッションの変更

templateフォルダを755、template_cフォルダを777に変更します。

tplファイルを作成

smartyで使うファイルはtplファイルといいます。このtplファイルを作成します。

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Smarty のテスト</title>
</head>
<body>

<h1>{$message}</h1>

</body>
</html>

普通にHTML書いていきます。変数を使えるため、プログラムで表示したい箇所などには変数を使います。tplファイルを作成したら、smarty/template/の中に入れます。ファイル名はindex.tplとします。

ドメイン名でアクセス

http://ドメイン名/smarty.phpでアクセスします。Hello World!と表示されれば使えるようになります。