カスタムフィールドをキーにしたエントリーの表示順設定
カスタムフィールドの検索を行ったときに、検索結果のエントリーを指定した順番に表示する方法を説明します。(※カスタムフィールド検索については「カスタムフィールドの検索」をご覧ください)
1. 検索対象になるエントリーを用意する
まずは検索対象になるエントリーを用意します。エントリーを作成し、エントリーのカスタムフィールドを追加します。 ここでは例として、「price」というフィールドを用意し、いくつかエントリーを登録しておきます。 /themes/使用中のテーマ/admin/entry/field.html というファイルを作成します。 以下のソースを、/themes/使用中のテーマ/admin/entry/field.html にエントリーのカスタムフィールドを記述します。
<table class="entryFormTable acms-admin-table-entry"> <tr> <th>価格</th> <td> <input type="text" name="price" value="{price}" size="10" /> 円 <input type="hidden" name="field[]" value="price" /> <input type="hidden" name="price:c" value="n" /> <input type="hidden" name="price:validator#digits" /> <!-- BEGIN price:validator#digits --> <p class="acms-admin-error-text">数値を入力してください。</p> <!-- END price:validator#digits --> </td> </tr> </table>
エントリーのカスタムフィールドが作成できたら、作成したカスタムフィールドに値を入力し、[作成]ボタンをクリックし保存します。これを数回繰り返し、いくつかエントリーを登録します。 これで検索対象になるエントリーが用意できました。
2. カスタムフィールドをキーにした検索フォームを作成する
手順1で作成したカスタムフィールドをキーにした検索フォームを作成します。以下のソースは、フィールド「price」をキーにして検索するフォームです。
21行目にて、tplを「/index.html」と指定しているので、/themes/使用中のテーマ/index.html に検索フォームを設置してください。
<!-- BEGIN_MODULE Field_Search --> <table> <th>演算子検索</th> <td> <form action="" method="post" class="acms-form"> <!-- 宣言 --> <input type="hidden" name="field[]" value="price" /> <!-- 演算子 --> <input type="hidden" name="price@operator" value="lte" /> <p>価格 <select name="price"> <option value="">上限なし</option> <option value="300"{price:selected#300}>300円以下</option> <option value="200"{price:selected#200}>200円以下</option> <option value="100"{price:selected#100}>100円以下</option> </select> </p> <p> <input type="hidden" name="tpl" value="/index.html" /> <input type="hidden" name="cid" value="%{CID}" /> <input type="hidden" name="bid" value="%{BID}" /> <input type="submit" name="ACMS_POST_2GET" value="検索する" class="acms-btn" /> </p> </form> </td> </table><!-- END_MODULE Field_Search -->
これでカスタムフィールドの値をキーにして検索するフォームができました。
3. エントリーを表示する順番を設定する
検索結果のエントリーの表示順を設定をする方法は3つあります。
- (A)モジュールまたはモジュールIDのコンフィグ [優先度:低]
- (B)モジュールIDの引数設定 [優先度:中]
- (C) input要素での指定 [優先度:高]
(A)モジュールまたはモジュールIDのコンフィグ [優先度:低]
検索結果のエントリー表示にはモジュールを使用します。その使用するモジュールのコンフィグの「表示順」の設定で、以下の4つの中から選択します。
- フィールド(昇順)
- フィールド(降順)
- 数値フィールド(昇順)
- 数値フィールド(降順)
※ カスタムフィールドを「数値」として扱いたい場合は「数値フィールド」を選択します。
※ フィールドと数値フィールドの違い … 数値フィールドの昇順にすると、3、20、100…のように数値として小さい値から順になりますが、フィールドの昇順の場合、数値ではなく「文字列」として扱われるため、100、20、3…のようにアルファベット順になります。アルファベット順の昇順の場合、1が2より先にくるためです。
なお、モジュールIDを使って、検索内容を表示する場合は「フィールド」の引数にチェックをつけてください。チェックをつけることで、検索内容と一致するものが表示されます。
(B)モジュールIDの引数設定 [優先度:中]
検索結果のエントリー表示で使用しているモジュールIDの引数設定で、以下の4つの中から設定します。
表示順 | 意味 |
---|---|
field-asc | フィールド(昇順) |
field-desc | フィールド(降順) |
intfield-asc | 数値フィールド(昇順) |
intfield-desc | 数値フィールド(降順) |

モジュールIDの引数設定の例
※ カスタムフィールドを数値として扱いたい場合は「intfield-asc」「intfield-desc」を使用します。
(C)input要素を使った指定 [優先度:高]
手順2で作成したフォームのsubmitボタンの記述部分に、表示順を指定する記述を追加します。この記述の情報はURLコンテキストに反映されるため、指定を反映させるにはモジュールIDの引数設定にチェックを入れてください。
表示順を設定する記述
<input type="hidden" name="order" value="表示順" />
表示順 | 意味 |
---|---|
field-asc | フィールド(昇順) |
field-desc | フィールド(降順) |
intfield-asc | 数値フィールド(昇順) |
intfield-desc | 数値フィールド(降順) |
今回の例では、価格は数値として扱い降順に表示する場合は、以下のような記述と設定になります。
<input type="hidden" name="order" value="intfield-desc" /> <input type="hidden" name="tpl" value="search" /> <input type="hidden" name="cid" value="%{CID}" /> <input type="hidden" name="bid" value="%{BID}" /> <input type="submit" name="ACMS_POST_2GET" value="検索する" class="acms-btn" />

モジュールIDの引数設定にチェックを入れる
表示順のチェックと表示順指定を両方設定した場合
引数設定の表示順で、表示順のチェックと表示順指定を両方設定すると、URLコンテキストに表示順の情報があるときにはURLコンテキストが優先され、URLコンテキストに表示順の情報がないときに、引数設定に入力した表示順が適用されます。

引数設定にチェックと表示順指定を両方入力した場合
以上で、エントリーをソート表示する検索フォームができました。
表示順設定の優先度について
先述の(A)〜(C)の3つの表示順設定が、(A)〜(C)いずれか1つではなく重複している場合は、優先度がより高いものが適用されます。
表示順の設定の使い分け
基本的には「(A)モジュールまたはモジュールIDのコンフィグ」で説明した設定で表示順 を設定します。1ページに複数の検索フォームがある場合で、それぞれのフォームによって検索結果の表示順を変えたいときは、「(B)モジュールIDの引数設定」 か、「(C)input要素を使った指定」で指定します。
OCN Bizメール&ウェブレンタルサーバでの動作
php5.4で問題が確認されました
OCN Bizメール&ウェブのレンタルサーバをphp5.4で動かすとa-blog cmsが動作しない事が確認されました。 php5.4で動かす場合a-blog cmsが動かないサーバとなります。
ただ、現在このサーバでa-blog cmsを動かしているユーザが多くいますので、 a-blog cms1.7.0が動くパッチを用意しました。
対応方法
- a-blog cms 1.7.0 にバージョンアップ
- パッチをダウンロードして解凍する
- パッチのindex.phpをa-blog cms直下のindex.phpと置き換える
2013/11/15 追記
パッチが完全ではありませんでした。 2013/11/15日前にパッチをあてた方は再度パッチをあてて下さい。
今後ともa-blog cmsをよろしくお願いいたします。
ionCube日本代理店の契約終了について

いつも、a-blog cms をご利用いただき誠にありがとうございます。
a-blog cms のプログラムを動かすために必要な ionCube のサポートを行なっている日本代理店の アシアル株式会社 が 2017年1月31日をもって代理店契約を終了いたしました。
これにより、ionCube Loader のダウンロードを 英国ionCube社 から直接ダウンロードしていただくことになります。
ここでは、ionCube Loader のダウンロード方法とインストール方法をご説明いたします。
ダウンロード
お使いのサーバーのOSに合わせたファイルをダウンロードする必要があります。サーバーOSの詳細な情報については、サーバー管理者にご確認いただくか、以下の方法によりご確認ください。
サーバーOSの確認方法
phpファイル(ファイル名をお好きなものをつけてください)を1つドキュメントルートに作成していただき、以下のコードを入力します。
<?php phpinfo();
ファイル設置後、ブラウザで作成したファイルにアクセスすると、様々な情報が表示されます。 ionCubeをインストールするにあたり、以下の情報をメモしてください。
項目 | 例 |
---|---|
PHP Version | 5.6.30 |
System | Linux 856688bab75a 4.4.43-boot2docker #1 SMP Wed Jan 18 18:33:18 UTC 2017 x86_64 |
Thread Safety | disabled |
Loaded Configuration File | /usr/local/etc/php/php.ini |
またここでSystemの最後がマシンタイプ(x86_64)になります。マシンタイプより32bitか64bitが判定できるようになっております。
- x86_64, amd64 の場合 64bit
- i686, i686, i386 の場合 32bit
以上より以下の情報をメモしてください。※()の中身は先ほどの表に記入した「例」の項目に当たる値となります。
- PHPのバージョン(5.6.30)
- OS名(Linux)
- マシンタイプ(64bit)
- PHPがスレッド化(disabled)
- php.iniの場所(/usr/local/etc/php/php.ini)
ionCube Loader ダウンロード
メモした情報より、OS名とマシンタイプにあったionCube Loaderを以下よりダウンロードください。
インストール
ionCube Loaderのインストールは「php.ini」ファイルを編集し、インストールします。
以下、インストール方法の流れになります。
- 先ほどダウンロードしたファイルを適当な場所に設置
- php.ini を編集
- apacheなどを再起動を行い、php.iniの反映
ionCube Loaderの設置
まず、先ほどダウンロードしてきたファイルを解凍してください。そうするとたくさんのローダーが入っていることがわかります。

必要なのはこの中から一つのファイルになります。ファイルを決定するために先ほどのメモを使います。ファイルの命名規則は下記のようになっています。
スレッドセーフでない場合
ioncube_loader_<OSの種類>_<お使いのPHPのバージョン>.so
スレッドセーフの場合
ioncube_loader_<OSの種類>_<お使いのPHPのバージョン>_ts.so
これで使用するべきionCube Loaderのファイルが把握できました。このファイルを適当な場所に設置します。
php.iniの編集
次にionCube Loaderをインストールするため php.ini ファイルを編集します。 php.iniファイルの場所は、サーバーによって異なります。たとえば、ご利用のレンタルサーバーによってはコントロールパネルから設定する場合がありますので、ご利用のレンタルサーバーのマニュアルをご覧ください。
php.iniファイルに以下のようなコードを追記ください。
スレッドセーフでない場合
zend_extension = /path/to/ioncube_loader_<OSの種類>_<お使いのPHPのバージョン>.so # 例 zend_extension = /usr/local/ioncube_loader_lin_5.6.so
スレッドセーフの場合
zend_extension_ts = /path/to/ioncube_loader_<OSの種類>_<お使いのPHPのバージョン>_ts.so # 例 zend_extension_ts = /usr/local/ioncube_loader_lin_5.6_ts.so
php.iniの反映
WebサーバーがPHPを使用する場合、Webサーバーの起動時にphp.iniファイルが読み込まれます。Webサーバーを再起動して設定を反映させましょう。ただしレンタルサーバーなどをご利用の場合は、特に何もしなくても反映される場合もあります。またFastCGIなどをご利用の場合は、WebサーバーでなくCGIを再起動させてください。
以上となります。
ご不便をおかけしてしまい申し訳ございませんが、ご対応お願いいたします。近いうちに、a-blog cms の公式ドキュメントに追記をしたいと思います。
今後ともa-blog cmsをよろしくお願いいたします。