ホーム > タグ > smarty
smarty
phpでカレンダーを作りました
- 2008-10-23 (木)
- 備忘録
カレンダーを作ったので、メモ。
まず、表示したい月を決めます。
たとえば、現在の月を表示したいなら、
$nowts = time();
という、現在のタイムスタンプを格納する変数をつくる。
これを起点日とします。
今日以前は表示したくないカレンダーを作りたかったので、
この変数を基準に必要なパラメータを出していきます。
- $stweek = date(“w”,$nowts);//起点日の曜日番号
- $stday = date(“j”,$nowts);//起点日
- $edday = date(“t”,$nowts);//起点日の月の最終日
まず、$nowts の月の残り日数を計算します。
$nokori = $edday-($stday-1);
起点日から-1をしないと引きすぎてしまいます。
ここに、$stweekを足します。
カレンダーは週単位で計算しないといけないので、起点日の週の既に終わった日も
プラスしてあげないといけません。
なので、
$nokori += $stweek;
これをさらに、週の日数である、7で割り、切り上げます。
そうすると、計算すべき週数が出ます。
$nokori = ceil($nokori/7);
これで、必要なパラメータが揃いました。
これを処理して、smartyのテンプレートで表示したいので、加工しやすいように
配列を作ります。
- Comments: 0
- Trackbacks: 0
さくらでのSmarty設置
- 2008-06-23 (月)
- 備忘録
さくらでのSmarty設置ですが、 まず、公式サイト(http://www.smarty.net/)から、Smarty本体をDL。
解凍します。
解凍したものの中に、libsフォルダがあるので、それをさくらのサーバーにアップする。 さくらのサーバーの公開ディレクトリまでのパス構造は、 /home/アカウント名/www になっているが、公開ディレクトリより上層のディレクトリにも設置可能な為、 /home/アカウント名/ に、上記libsフォルダをアップロード。
templatesディレクトリ&templates_cディレクトリも、公開ディレクトリより上層へ設置したかった為、 MySmarty.class.phpを作成。内容は↓
<?php
define ("ROOT_DIR" ,$_SERVER['DOCUMENT_ROOT']."/..");
require_once("Smarty.class.php");
class MySmarty extends Smarty {
function MySmarty () {
$this->template_dir = ROOT_DIR."/templates";
$this->compile_dir = ROOT_DIR."/templates_c";
$this->left_delimiter = "<{";
$this->right_delimiter = "}>";
$this->Smarty();
}
}
?>
デリミタも、<{}>に変更してます。 libs内へアップロード。
phpでの呼び出し時は、
require_once (“../libs/MySmarty.class.php” );
で、いけました。
- Comments: 0
- Trackbacks: 0
smartyでの多次元配列の扱い
- 2008-06-21 (土)
- 備忘録
検証モデル:
$rec = array ( array ("id" => "01" , "name" => "久保田" , "list" => "php,mysql,css") , array ("id" => "02", "name" => "山本" , "list" => "mt,css,design") , array ("id" => "03" , "name" => "立松" , "list" => "mt,css,dance") );
というデータがあったとします。 まず、これの、listの値をコンマで分けて配列に格納したい場合、
foreach ( $rec as $key => $value ) {
$rec[ $key ][ "list" ] = explode ("," , $value["list" ]);
}
という式で、listの中にさらに配列ができます。 ポイントは、$valueで配列を指定しているところです。 この場合、$valueには、arrayという値が入っているはずです。
このデータをテンプレートで出力する場合、まず、
$smarty->assign ( “rec” , $rec );
でアサインし、 テンプレート側では、
{foreach item=value key=key from=$rec name=rec}
<p> {$value.id} </p>
<p> {$value.name} </p>
{foreach item=seplist from=$value.list name=seplist}
{if $smarty.foreach.seplist.first}
<ul>
<li> {$seplist} </li>
{/if}
<li> {$seplist} </li>
{if $smarty.foreach.seplist.last}
<li> {$seplist} </li>
</ul>
{/if}
{/foreach}
{/foreach}
と、記述します。 id、nameは、$valueに続けて.でキーをつなげてやれば出力されますが、 listには更に配列が格納されているので、foreachを入れ子にし、 出力を定義させてやる必要があります。
- Comments: 0
- Trackbacks: 0
Home > Tags > smarty
- Search
- Banner
- Feeds
- Meta