「今いるページ / 全ページ数」を表示させるページャーのカスタマイズ
標準のページャーの設定では、上記の画像のように 1 2 3 4 のように表示され、今いるページのスタイルが違うような表示になるようになっています。先日サポートで、これを 1 / 4 と表示させたいという相談があり、その対応が簡単に思いつかなかったのでブログに書き残しておきます。
Entry_Summary のコンフィグ 初期設定
利用できる変数を考える
表示させる 1 / 4 は「現在表示しているページ / 全ページ数」ということになります。
「現在表示しているページ」については、Entry_Summary の変数にはありませんが、グローバル変数に %{PAGE} というものが用意されていますので、これを利用ください。
問題は「全ページ数」です。Entry_Summary の変数表に以下のような {lastPage} という設定があります。これがページ数が少ない時に初期の設定では表示ができない仕様になっております。これを強制的に表示するための設定するための「前後に表示するページ数」に -1 を設定することで目的の動きになります。
カスタマイズ設定
Entry_Summary のコンフィグ設定
テンプレートへの記述
<p class="acms-text-center">%{PAGE} / {lastPage}</p>
これで当初の目的である 1 / 4 が表示可能になります。
GETモジュールのID化
独自に開発したGETモジュールも、標準のビルドインモジュールと同様にモジュールID化する事ができます。ここでは、モジュールID化の仕方と、モジュールID化によってどのような動作になるかみていきます。
モジュールID化できるようにする
まずモジュールID化に対応するため、モジュールID作成時に独自モジュールを選択できるようにします。
ご利用のテーマに以下のファイルを作成し、セレクト要素を記述します。
- /themes/ご利用テーマ/admin/module/select.user.html
<optgroup label="独自モジュール"> <option value="Sample"{name:selected#Sample}>独自モジュール(Sample)</option> </optgroup>
以下の仕様でセレクト要素を記述してください。
- 値: GETモジュールの呼び出しと同じ値
- 変数: {name:selected#セレクトの値}
この実装を行う事でモジュールIDの作成ができるようになります。
モジュールIDの作成
モジュールIDの作成ができるようになったので、モジュールIDを作成してみます。以下画像のように作成できると思います。
モジュールID化でのコンテキスト情報の取得
モジュールID化した時のコンテキスト情報の取得について解説します。モジュールID化する前は、以下のコードを書く事により、そのページの情報を取得できていました。
var $_scope = array( 'bid' => 'global', 'cid' => 'global', 'eid' => 'global', ); function get() { $string[] = 'Global Vars'; $string[] .= "BID = $this->bid"; $string[] .= "CID = $this->cid"; $string[] .= "EID = $this->eid"; return nl2br(implode("\r\n", $string)); }
しかし、モジュールID化したモジュールを利用すると $this->cid や $this->eid で、そのページのコンテキスト情報を取得できなくなります。(bidだけはモジュールID化しても取得できます。)
モジュールID化したモジュールを利用すると、そのままではコンテキスト情報は取得できない。 <!-- BEGIN_MODULE Sample id="sample" --><!--END_MODULE Sample -->
ではどのようにURLコンテキスト情報を取得するかというとモジュールID管理画面で取得したい情報の引数項目にチェックをつけます。これによりURLコンテキストの情報を取得できるようになります。
これでプログラム側で、以下のようにURLコンテキスト情報を取得できるようになりました。
$string[] = 'Global Vars'; $string[] .= "BID = $this->bid"; $string[] .= "CID = $this->cid"; $string[] .= "EID = $this->eid"; return nl2br(implode("\r\n", $string));
ここまで、$this->cid や $this->eid はURLコンテキスト情報(つまりURLの情報)を取得すると説明してきましたが、モジュールID化する事により、そうでなくなる場合があります。以下の設定画面をみてください。
この場合、表示しているURLが別のカテゴリーや、トップページなどカテゴリー情報がない場合でも、常に $this->cid はお知らせのカテゴリーIDを返すようになります。このようにモジュールID化するとモジュールIDの設定により取得してくる情報は変わるようになります。
モジュールID化時のコンテキスト情報の取得まとめ
引数チェック | 固定値 | $this->cid などのプロパティ |
---|---|---|
あり | なし | URLの情報を取得 |
なし | あり | モジュールIDで設定した固定値を取得 |
あり | あり | URLに該当の情報があればURLの情報を取得。ない場合は固定値を取得 |
モジュールIDの設定と関係なく表示ページのURLコンテキストが取得したい場合は、定数を利用します。
項目 | 定数 |
---|---|
ブログID | BID |
ユーザーID | UID |
カテゴリーID | CID |
エントリーID | EID |
キーワード | KEYWORD |
タグ | TAG |
フィールド | FIELD |
日時検索のスタート | START |
日付検索のエンド | END |
ページ番号 | PAGE |
並び順 | ORDER |
カスタムフィールドメーカーを改良しました。
デベロッパーサイトのカスタムフィールドメーカーを改良しました。
従来のカスタムフィールドメーカーから生成されたソースコードだと、カスタムフィールドグループの際に、下の画像のように項目が横に積まれてしまい入力欄が狭くなってしまう問題がありました。
そこで今回は縦向きレイアウトに対応しました。縦向きレイアウトだと、下記の画像のように先ほどと同じ項目数ですが、入力欄が狭くなりません。
スイッチトグルで従来の横向きレイアウトか、新しい縦向きレイアウトか選択できるようにしています! ぜひご活用ください!