Smarty

iPhoneStyleで1000人へのカウントダウン開始。

iPhone対応SNS『iPhoneStyle』の登録者数がまもなく1000人を迎えることもあり、SNS内で1000人までのカウントダウンの表示をスタート。

今回は、事前に1000人達成日の予測を呼びかけたことから、数字の見えない総数ではなく、誰でも確認することのできる初期登録コミュ『iStyle』の登録者数をカウント数値として採用している。

こういった場合、特定のコミュの登録者数を得るには、OpenPNEで用意している、db_commu_count_c_commu_member_list4c_commu_idという関数を利用するのが簡単でいい。
引数にコミュのID番号を渡してやると、登録者数が返ってくる。
実際にはその値をテンプレートに使うので、以下のようにしている。

$this->set(‘target_commu_member_num’, db_commu_count_c_commu_member_list4c_commu_id($target_commu_id));

あとはsmartyの書式に従いテンプレートファイルで利用すればいい。

OpenPNEで日記新しい項目を追加したい時

OpenPNEでのSNS運用していて、日記等のフォームに新しい項目を追加したいこともあるだろう。
しかし、OpenPNEの場合、単純にテンプレートに追加するだけでは処理されない。
その場合は、以下のファイルを修正していくことで変更することが可能となる。

———————————————————————-

まずは、表示のためのテンプレートファイル
フォームの希望する場所(テーブル処理されている部分)に

<tr>
<th>項目</th>
<td>内容</td>
</tr>

と追加する。

■変更ファイル
templates/
h_diary_add.tpl
h_diary_add_confirm.tpl

※項目内容をデータベースから取得する場合や、フォーム内に登録者毎のデータが必要な場合は、以下のPHPファイル内で取得する

———————————————————————-

テンプレート用にデータ取得等の処理が必要であれば、以下のPHPファイル内で処理し
$this->set(‘hoge’, $hoge);
といった形でtplに渡せばいい

■変更ファイル
page/
h_diary_add.php
h_diary_add_confirm.php

———————————————————————-

項目内での変更や選択肢の追加等の場合は上記page内とtemplates内のファイルのみで良いが、新たに項目を追加しリクエスト変数が増えた場合は、validate内で定義してやる必要がある

■変更ファイル
validate/do
h_diary_add_insert_c_diary.ini

validate/page
h_diary_add.ini
h_diary_add_confirm.ini

上記ファイル内で、欲しいデータ形式に合わせ、新たなリクエスト変数を定義する

type
int→整数
string→文字列

———————————————————————-

これでデータの項目表示、フォームデータの受け渡しが可能となる。
あとは、渡されたデータをデータベースに登録するロジックを追加すればいい。

OpenPNEのテンプレートをカスタマイズしたい時

OpenPNEでは、ページのデザインと,ロジックのコーディングを分離する目的で、SmartyというPHPプログラムのテンプレートエンジンを使用しています。
Smartyを使用していることにより、アプリケーションのロジックが分からない人でも、ある程度のHTMLの知識があれば、OpenPNEのレイアウトを変更(カスタマイズ)することができます。

具体例を示しながら、実際に進めていく手順を説明

レイアウトを修正したいページを表示させるURLが以下の場合
http://iphone-sns.com/?m=pc&a=page_fh_diary&target_c_diary_id=2

レイアウトテンプレートの場所は
(config.phpがあるディレクトリ名)/webapp/modules/pc/templates/
ディレクトリ内にある、
fh_diary.tpl
となる。
これに習えば、修正・レイアウト変更・カスタマイズしたいページの引数の文字を見れば、他のテンプレート名が分かる。

さて、一番簡単なのは、このテンプレートファイルをFTP等でダウンロードし、エディターで修正し、再びアップロードすれば良いのだが、修正に失敗したりした場合や、元に戻したい時に問題がある。

OpenPNEは、その点も良く考えられており、
・webapp
・webapp_ext
という二つのディレクトリが用意されている。

先ほどダウンロードしたテンプレートファイルはwebappにあったものだが、修正したテンプレートファイルをアップする場所を元の場所では無く、webapp_ext内にあるtemplatesの中にアップする。
OpenPNEは、webapp_extに同ディレクトリ同名のファイルが存在した場合、webapp_ext内にあるファイルの方が処理される。

このことにより、元のテンプレートファイルをそのままにして、レイアウトの修正・カスタマイズが可能となる。
修正に失敗したり、レイアウトが崩れてしまったりしたら、webapp_ext内のテンプレートファイルを削除してしまえば、デフォルトのテンプレートファイルを読み込み表示される。

なお、このwebapp_extの機能を使いたい場合は、config.phpを開き

///
// webapp_ext ディレクトリ使用設定
///

define(‘USE_EXT_DIR’, false);

define(‘USE_EXT_DIR’, true);

falseをtrueにする。

これをしないと、webapp_extを使用しないので注意。

SmartyでHTMLタグを有効にする方法

OpenPNEで使われているSmartyは、通常HTMLタグが無効になるようにエスケープされる。
文字データを取得し表示する場合等はこのままで構わないが、アフィリエイト用タグやGoogleアドセンス、Google Analytics、RSSデータ等、タグをエスケープして欲しくない場合もある。
そんな場合は以下のようにnodefaultsを使うことでHTMLタグを有効にすることができる。

■SmartyでHTMLタグを有効にするサンプル

({$hoge:nodefaults})

※通常のSmartyでは、{$hoge}が置き換わるようになっているが、OpenPNEの場合、({$hoge})と表記する。

有効にしたい部分にnodefaultsを使うだけで、読み込むデータがそのまま表示されるようになる。