skinny

in_gl_A

FAQ よくある質問

お問い合わせ頂く頻度の高い質問や、ちょっとした裏技的な使い方を紹介します。
この項目は作者が思いついたタイミングで随時追加していく予定です。

Skinnyでよくある質問

コメントみたいなタグはないの?

下記のような書き方をする事でHTMLに影響を与えないコメントは書くことが出来ます。
但し「展開処理に渡された結果何もしない」という処理を経ているので、コメントとして使えば使うほどページの展開速度は遅くなっていくのでご注意ください。

 1| <% こんな風にタグ括弧内にコメントを書けますよ %>
 2| <% echo(username) %>

注意点として、コメントの先頭にスラッシュ記号 '/' を書かないようにしてください。
Ver0.4.0以降、先頭に'/'があると終了タグと判定するようになりました。
<% / %> のように終了タグを短縮出来るようになったのはその為です。
下記ような書き方をすると、3行目は終了タグと判断されパースエラーが発生します。

 1| <% スタイル設定 %>
 2| <% external('../css/common_style.css') %>
 3| <% /スタイル設定 %>

大量のコメントをユーザーに知られず残したり、リリース時にデバッグ用HTML要素をごそっと丸ごと隠蔽したい時など、作者は良く defタグ を使います。
変数で宣言するはずもない名前を指定して下記の様に defタグで括ると丸ごとHTMLから隠蔽する事が出来ます。

 1| <% 下記の要素はセールが始まるまで隠蔽しておくよ %>
 2| <% def(HOGEHOGE) %>
 3| <div>
 4|   <h1><% echo(summer_sale_title|html) %></h2>
 5|   <div class="summer_sale">
 6|     今年も夏がやってきた!!<br />サマーセール開催中!!
 7|   </div>
 8|   <img src="<% echo(sale_image_fname) %>" />
 9| <div>
10| <% /def %>

echoの短縮表記は無いの?

echoタグだけは短縮コーディングできます。。。といっても2文字減るだけですが。
開始終了タグの%記号を2つ重ねる事で、echo と打たなくても echoタグを呼び出すことが出来ます。
※)下記の2行はどちらも同じ動作をします。

 1| <% echo(username) %>
 2| <%% (username) %%>

一次元の連想配列をループさせたい

表立って機能紹介しませんが、Skinnyの裏機能として実装してあります。
マニュアル化するつもりはありませんので、このサンプルとSkinnyのソースを見て理解してください。


PHPソース

 1| <?php
 2|     // Skinny 呼び出し
 3|     include_once( "Skinny.php" );
 4|     $out = array();
 5|     // こんな一次連想配列
 6|     $out['userdata'] = array( "lname" => "Sasaki"
 7|                             , "fname" => "Junichi"
 8|                             , "sex  " => "m"
 9|                             , "birth" => 163479600 );
10|     
11|     $Skinny->SkinnyDisplay( "template.html", $out );
12| ?>

HTMLテンプレート

 1| <% def(userdata) %>
 2|     <% keach(userdata) %>
 3|         <% kecho(KEY) %><% kecho(VAL) %>
 4|         <% if(KEY,==,'birth') %><% echo(VAL|date['Y-m-d']) %><% /if %>
 5|         <br />
 6|     <% /keach %>
 7| <% elsedef %>
 8|     ユーザー情報がありません
 9| <% /def %>
10| 

出力結果

 1| lname → Sasaki 
 2| fname → Junichi 
 3| sex → m 
 4| birth → 163479600 (1975-03-08) 

PHPっぽくすると…

 2|     <?php foreach($userdata as $KEY => $VAL){ ?>
 3|         <?php echo $KEY; ?><?php echo $VAL; ?>
 4|         <?php if($KEY == 'birth'){ ?><?php echo date('Y-m-d',$VAL) ?><?php } ?>
 5|         <br />
 6|     <?php } ?>

ループせず配列の要素を表示したい

echoタグで連想配列の要素にアクセスするにはeachのループを回すしかありませんでした。
v0.3.0以降は、特定の多次元連想配列にアクセスするための @指定子 が実装されました。
下記のHTMLテンプレートのようにパラメータ先頭に@を付ける事でループせず要素にアクセスする事が出来ます。


PHPソース

 1| <?php
 2|     // Skinny 呼び出し
 3|     include_once( "Skinny.php" );
 4|     $out = array();
 5|     // SERVER情報
 6|     $out['serverData'] = $_SERVER;
 7|     
 8|     $Skinny->SkinnyDisplay( "template.html", $out );
 9| ?>

HTMLテンプレート

 1| YourIP  : <% echo(@serverData/REMOTE_ADDR) %><br />
 2| ThisHost: <% echo(@serverData/SERVER_NAME) %><br />

出力結果

 1| YourIP  : 54.198.142.121
 2| ThisHost: skinny.sx68.net

btn_pagetop