ImpressCMSは、CMSと呼ばれるものですが、以下のような構造で出来ています。
プログラムはPHP
テンプレートはSMARTY
データベースはMariadb(MySQL)
全体的な機能についてはImpressCMSが受け持ちますが、その他の小さなプログラムについては
モジュールという個別のプログラムで動作するように作られています。
モジュールは
Smarty は ImpressCMSにおける見栄えを設定するためのテンプレートエンジンです。
具体的に言うと、impressCMSのうち、データの加工や抽出など表示のために必要なデータについては、phpプログラムが行います。そして、見栄えの部分についてSmartyテンプレートが担うということになります。
こうすることで、プログラムのロジックとコンテンツの見栄えを分離して管理する事を容易にします。
これは、プログラマーとテンプレートデザイナーの役割が異なり、 これらの役割を違う人間が受け持っている場合に最適だと言えます。
Smartyは、テンプレートタグを使用します。
全てのテンプレートタグはデリミタによって囲まれます。 デフォルトではデリミタは <{
と }>
となります。
Smarty では、デリミタ外の内容は静的コンテンツ(通常のHTML構文)として表示されます。 Smarty がテンプレ ートタグを見つけると、その解釈を試みて適切な出力に置換します。
テンプレートのコメントはまずアスタリスクで囲まれ、次にそれを デリミタ タグで囲みます。このような形式になります。
<{* これはコメントです *}>
Smarty のコメントは、テンプレートの最終的な出力には表示されません。
この点は <!-- HTML のコメント -->
とは異なります。
これは、テンプレート内での内部的なメモとして使用するのに便利です。 テンプレートファイルを見られない限り、誰にもバレません。
テンプレート変数は、先頭にドル記号 $ を付けます。
変数名には 同様に英数字およびアンダースコア(アンダーバー)が使用できます。
配列の参照には、インデックスの数値もしくはそれ以外の文字を使用できます。 オブジェクトのプロパティとメソッドの参照も同様です。
変数の殆どは、テンプレートを参照するPHPのプログラムで設定を行いますが、ImpressCMSでは標準で設定されている様々な変数があります。
通常変数は、PHPプログラムから与えられます。モジュールのPHPファイルですね。
PHPファイルの中で、
$xoopsTpl->assign('seminar_id', 125);
と書いてあれば、Smarty側では、 <{$seminar_id}>と書くと125が表示されることになります。
連想配列をassignした場合は、PHPとは書き方が異なります。
例えば
$myseminar['ID'] = 1;
$myseminar['name'] = "名前";
$xoopsTpl->assign('seminar', $myseminar);
となっていた場合は、
$myseminar['ID'] -> <{$myseminar.ID}>
$myseminar['name'] -> <{$myseminar.name}>
という形で、'.'ピリオド記号を使って表記します。
単なる配列(数字で管理)する場合は、同じような形で表記をします。
$mynum[0] = 125;
$mynum[1] = 225;
$mynum[2] = 300;
$xoopsTpl->assign('num', $num);
となっていた場合は、<{$num[1]}> という形で書きます。$num.1とは書きません。
オブジェクトの場合は、PHPと同じように "->"を使って表記します。
<{$foo}> | 単純な変数 (配列やオブジェクト以外) を表示します。 |
<{$foo[4]}> | 0から始まるインデックスを持った配列の5番目の要素を表示します。 |
<{$foo.bar}> | "bar"というキーに対応する配列の値を表示します。PHP の $foo['bar'] と同じです。 |
<{$foo->bar}> | オブジェクトのプロパティ "bar"を表示します。 |
<{$foo->bar()}> | オブジェクトのメソッド"bar"の返り値を表示します。 |
すでに、Smartyにて定義済みの変数はこのようなものがあります。
<{$smarty.get.myid}> | ($_GET) http://www.example.com/index.php?myid=5 から myid の内容を表示 |
<{$smarty.post.page}> | ($_POST) フォームからpostで送信された変数"page"の値を表示 |
<{$smarty.const.名前}> | PHPで、define関数で定義された定数を表示します。 |
<{$smarty.cookies.username}> | ($_COOKIE['username']) クッキーに登録された"username"の値を表示 |
<{$smarty.server.SERVER_NAME}> | サーバ変数のうちの"SERVER_NAME"の値を表示 |
<{$smarty.session.id}> | ($_SESSION['id']) phpのセッション変数のうちの"id"の値を表示 |
<{$todaymonth}> | 今日の月 |
<{$todayday}> | 今日の日 |
<{$todayyou}> | 今日の曜日 |
<{$uname}> <{$icms_uname}> |
ログインしている人の名前 |
<{$xoops_meta_keywords}> | metaキーワード |
<{$xoops_meta_description}> | metaデスクリプション |
<{$icms_pagetitle}> | ページタイトル |
<{$icms_imageurl}> | テーマ画像 |
<{$icms_sitename}> | サイト名 |
<{$icms_isuser}> | ログインユーザかどうか |
<{$icms_isadmin}> | 管理者かどうか |
変数の修飾子とは、変数にキメられた修飾を行って見やすくするために作られています。
例えば、2300という数字を2,300というコンマ付きの数字に変えると見やすくなりますよね。
そういうときに修飾子を使います。修飾子は以下のような形で使います。
<{$変数名|修飾子}>
上のサンプルで、例えば<{$gokei}>に2300という数字が入っていて、これをコンマ表示にさせたい場合は
<{$gokei | number_format }>
と表記するとコンマ付きの数字が出力されます。
修飾子の例は以下のとおりです。
capitalize |
変数内の全ての単語の先頭を大文字で開始します。 |
cat | 与えられた変数に値を連結します。 <{$kokyaku | cat:' 様'}>とすると、「様」が$kokyakuという変数に追加されます。 |
count_characters | 変数の文字数をカウントします。 count_characters:trueとすると、スペースも文字数にカウントします。 |
lower | 変数をすべて小文字に書き換えます |
upper | 変数をすべて大文字に書き換えます |
Smartyの組み込み関数はいくつもありますが、実際にimpressCMSを運用する上で使いそうなものをいくつか紹介します。
条件演算子 | 代替 | 構文例 | 意味 | PHP 相当 |
---|---|---|---|---|
== | eq | $a == $b $a eq $b |
等しい | == |
!= | ne, neq | $a != $b $a neq $b |
等しくない | != |
> | gt | $a > $b $a gt $b |
より大きい | > |
< | lt | $a < $b $a lt $b |
より小さい | < |
>= | gte, ge | $a >= $b $a ge $b |
以上 | >= |
<= | lte, le | $a <= $b $a le $b |
以下 | <= |
=== | $a === 0 | 同一性のチェック | === | |
! | not | ! $a not $a |
否定 (単項) | ! |
% | mod | $a mod $b | 剰余 | % |
is [not] div by | $a is (not) div by 4 | 割り切れる | $a % $b == 0 | |
is [not] even | $a is (not) even | 偶数である [ない] (単項) | $a % 2 == 0 | |
is [not] even by | $a is (not) even by $b | 偶数番目のグループである [ない] | ($a / $b) % 2 == 0 | |
is [not] odd | $a is (not) odd | 奇数である [ない] (単項) | $a % 2 != 0 | |
is [not] odd by | $a is (not) odd by $b | 奇数番目のグループである [ない] | ($a / $b) % 2 != 0 |
組み込み関数の他に、いくつかカスタム関数がありますので、それを紹介します。
0 MacでCSRをつくる
キーチェーンアクセス
タブのキーチェーンアクセス → 証明書アシスタント
→ 認証局に証明書を要求
→ メールアドレスを入力 → ディスクに保存
CSRファイルが出来上がる
1 Identifier
NewApp → App IDs 設定
Descriptionに名称を入れる
Bundle名に有効なBundleIDを入れる
Push Notificationにチェック
開発用と本番用と2つ必要
2 Certificateに移動
Apple Push Service
開発のときは開発用
本番のときは本番用
→1で決定したAppを選ぶ
→0で作ったCSRファイルを選ぶ
→できた
→出来たやつを証明書として保存
aps.cerみたいな感じ
3 Macで2で出来たcerファイルをダブルクリック
・・・を書き出すをクリック
p12ファイルを作りたいがそれが出来ない場合は自分の証明書タブをクリックしてから
右クリックで作成
パスワードを求められるが「入力しない」
4 ニフクラでアカウントを作成 gmailで作成
アプリを作成する
右のアプリ設定をクリック
プッシュ通知を許可する
で3で作ったiOS用のp12ファイルを登録
5 AndroidでAppをつくる
Firebaseでアプリをつくる
プロジェクトの設定 → 新しい秘密鍵の作成
→ 保存する jsonファイルができる
→ ニフクラの4のところのAndroid用のjsonファイルを保存する
1 | ImpressCMSの全体的な考え方について | Draft | 460 bytes | 2022-05-30 | by 管理人 | |
2 | モジュールについて | Draft | 976 bytes | 2022-05-30 | by 管理人 | |
2 - 1 | icms_version.php | Blank | 0 bytes | 2022-08-18 | by 管理人 | |
3 | Smartyテンプレート | Draft | 728 bytes | 2022-05-30 | by 管理人 | |
3 - 1 | Smartyの基本構文 | Draft | 518 bytes | 2022-05-30 | by 管理人 | |
3 - 1 - 1 | コメント | Draft | 770 bytes | 2022-05-30 | by 管理人 | |
3 - 2 | 変数 | Draft | 5286 bytes | 2022-05-30 | by 管理人 | |
3 - 3 | 変数の修飾子 | Draft | 2422 bytes | 2022-05-30 | by 管理人 | |
3 - 4 | 組み込み関数 | Draft | 6493 bytes | 2022-12-26 | by 管理人 | |
3 - 5 | カスタム関数 | Draft | 1549 bytes | 2022-05-30 | by 管理人 | |
4 | ニフクラでプッシュ通知 | Blank | 0 bytes | 2022-12-09 | by 管理人 | |
4 - 1 | 手順 | Draft | 2072 bytes | 2022-12-09 | by 管理人 |