タッチモジュール

タッチモジュールは、見ているページ(テンプレート)がその条件にあてはまる時だけ表示されます。次の例では、単一記事の表示のときだけコメントモジュールを読み込みます。

例:エントリーが指定されている(個別ページ)時のみコメントモジュールを表示する

<!-- BEGIN_MODULE Touch_Entry -->
 <!-- BEGIN_MODULE Comment_Body -->
  (中略)
 <!-- END_MODULE Comment_Body -->
<!-- END_MODULE Touch_Entry -->

タッチモジュール

Touch_Top 「トップページ」の時のみ表示する ソース
<!-- BEGIN_MODULE Touch_Top -->
<!-- END_MODULE Touch_Top -->
Touch_Index 「一覧ページ」の時のみ表示する ソース
<!-- BEGIN_MODULE Touch_Index -->
<!-- END_MODULE Touch_Index -->
Touch_Entry 「エントリー」が指定されている時のみ表示する ソース
<!-- BEGIN_MODULE Touch_Entry -->
<!-- END_MODULE Touch_Entry -->
Touch_Category 「カテゴリー」が指定されている時のみ表示する ソース
<!-- BEGIN_MODULE Touch_Category -->
<!-- END_MODULE Touch_Category -->
Touch_Keyword 「キーワード」が指定されている時のみ表示する ソース
<!-- BEGIN_MODULE Touch_Keyword -->
<!-- END_MODULE Touch_Keyword -->
Touch_Tag 「タグ」が指定されている時のみ表示する ソース
<!-- BEGIN_MODULE Touch_Tag -->
<!-- END_MODULE Touch_Tag -->
Touch_User 「ユーザー」が指定されている時のみ表示する ソース
<!-- BEGIN_MODULE Touch_User -->
<!-- END_MODULE Touch_User -->
Touch_SearchEngineKeyword 「検索エンジンのキーワード」を取得できている時のみ表示する ソース
<!-- BEGIN_MODULE Touch_SearchEngineKeyword -->
<!-- END_MODULE Touch_SearchEngineKeyword -->
Touch_RootBlog ルートブログの時のみ表示する ソース
<!-- BEGIN_MODULE Touch_RootBlog -->
<!-- END_MODULE Touch_RootBlog -->
Touch_BlogGlobal ログインしたブログ自身に子ブログを持っている時のみ、そのブログと子ブログに表示する(※ログイン状態のみ適用) ソース
<!-- BEGIN_MODULE Touch_BlogGlobal -->
<!-- END_MODULE Touch_BlogGlobal -->
Touch_Admin 「管理状態(エントリー編集など)」の時のみ表示する ソース
<!-- BEGIN_MODULE Touch_Admin -->
<!-- END_MODULE Touch_Admin -->
Touch_SessionWithAdministration 「管理者」の時のみ表示する ソース
<!-- BEGIN_MODULE Touch_SessionWithAdministration -->
<!-- END_MODULE Touch_SessionWithAdministration -->
Touch_SessionWithCompilation 「編集者」以上の時のみ表示する ソース
<!-- BEGIN_MODULE Touch_SessionWithCompilation -->
<!-- END_MODULE Touch_SessionWithCompilation -->
Touch_SessionWithContribution 「投稿者」以上の時のみ表示する ソース
<!-- BEGIN_MODULE Touch_SessionWithContribution -->
<!-- END_MODULE Touch_SessionWithContribution -->
Touch_SessionWithSubscription 「読者」以上の時のみ表示する ソース
<!-- BEGIN_MODULE Touch_SessionWithSubscription -->
<!-- END_MODULE Touch_SessionWithSubscription -->
Touch_SessionIsCompilation 「編集者」の時のみ表示する ソース
<!-- BEGIN_MODULE Touch_SessionIsCompilation -->
<!-- END_MODULE Touch_SessionIsCompilation -->
Touch_SessionIsContribution 「投稿者」の時のみ表示する ソース
<!-- BEGIN_MODULE Touch_SessionIsContribution -->
<!-- END_MODULE Touch_SessionIsContribution -->
Touch_SessionIsSubscription 「読者」の時のみ表示する ソース
<!-- BEGIN_MODULE Touch_SessionIsSubscription -->
<!-- END_MODULE Touch_SessionIsSubscription -->
Touch_Login 「ログイン状態」の時のみ表示する ソース
<!-- BEGIN_MODULE Touch_Login -->
<!-- END_MODULE Touch_Login -->
Touch_Unlogin 「非ログイン状態」の時のみ表示する ソース
<!-- BEGIN_MODULE Touch_Unlogin -->
<!-- END_MODULE Touch_Unlogin -->
Touch_Edit 「エントリー編集(作成・変更・追加)」の時のみ表示する ソース
<!-- BEGIN_MODULE Touch_Edit -->
<!-- END_MODULE Touch_Edit -->
Touch_EditInplace ダイレクト編集が利用可能な場合かつ、ダイレクト編集が有効な時のみ表示する ソース
<!-- BEGIN_MODULE Touch_EditInplace -->
<!-- END_MODULE Touch_EditInplace -->
Touch_EditInsert 「エントリー編集(作成)」の時のみ表示する ソース
<!-- BEGIN_MODULE Touch_EditInsert -->
<!-- END_MODULE Touch_EditInsert -->
Touch_EditUpdate 「エントリー編集(変更・追加)」の時のみ表示する ソース
<!-- BEGIN_MODULE Touch_EditUpdate -->
<!-- END_MODULE Touch_EditUpdate -->
Touch_BlogParent 現在見ているブログ自身が子ブログを持っている時のみ表示する ソース
<!-- BEGIN_MODULE Touch_BlogParent -->
<!-- END_MODULE Touch_BlogParent -->
Touch_Ssl 現在見ているページがHTTPSで通信されている時のみ表示する ソース
<!-- BEGIN_MODULE Touch_Ssl -->
<!-- END_MODULE Touch_Ssl -->
Touch_SslEnable config.server.php内でSSL_ENABLEが1に設定されている時のみ表示する ソース
<!-- BEGIN_MODULE Touch_SslEnable -->
<!-- END_MODULE Touch_SslEnable -->
Touch_Debug config.server.php内でDEBUG_MODEが1に設定されている時のみ表示する ソース
<!-- BEGIN_MODULE Touch_Debug -->
<!-- END_MODULE Touch_Debug -->
Touch_HookEnable config.server.php内でHOOK_ENABLEが1に設定されている時のみ表示する Ver. 3.0.16〜 ソース
<!-- BEGIN_MODULE Touch_HookEnable -->
<!-- END_MODULE Touch_HookEnable -->

Not系タッチモジュール

Touch_NotTop トップページ」ではない時に表示する ソース
<!-- BEGIN_MODULE Touch_NotTop -->
<!-- END_MODULE Touch_NotTop -->
Touch_NotIndex 「一覧ページ」ではない時に表示する ソース
<!-- BEGIN_MODULE Touch_NotIndex -->
<!-- END_MODULE Touch_NotIndex -->
Touch_NotEntry 「エントリー」が指定されていない時に表示する ソース
<!-- BEGIN_MODULE Touch_NotEntry -->
<!-- END_MODULE Touch_NotEntry -->
Touch_NotCategory 「カテゴリー」が指定されていない時に表示する ソース
<!-- BEGIN_MODULE Touch_NotCategory -->
<!-- END_MODULE Touch_NotCategory -->
Touch_NotAdmin 「管理ページ(エントリー編集など)」ではない時に表示する ソース
<!-- BEGIN_MODULE Touch_NotAdmin -->
<!-- END_MODULE Touch_NotAdmin -->
Touch_NotTag 「タグ」が指定されていない時に表示する ソース
<!-- BEGIN_MODULE Touch_NotTag -->
<!-- END_MODULE Touch_NotTag -->
Touch_NotKeyword 「キーワード」が指定されていない時に表示する ソース
<!-- BEGIN_MODULE Touch_NotKeyword -->
<!-- END_MODULE Touch_NotKeyword -->
Touch_NotSearchEngineKeyword 「検索エンジンのキーワード」を取得できていない時のみ表示する ソース
<!-- BEGIN_MODULE Touch_NotSearchEngineKeyword -->
<!-- END_MODULE Touch_NotSearchEngineKeyword -->
Touch_NotEdit エントリー編集(作成・変更・追加)」ではない時のみ表示する ソース
<!-- BEGIN_MODULE Touch_NotEdit -->
<!-- END_MODULE Touch_NotEdit -->
Touch_NotEditInplace ダイレクト編集が利用可能な場合かつ、ダイレクト編集が有効でない時のみ表示する ソース
<!-- BEGIN_MODULE Touch_NotEditInplace -->
<!-- END_MODULE Touch_NotEditInplace -->
Touch_NotRootBlog ルートブログでない時のみ表示する ソース
<!-- BEGIN_MODULE Touch_NotRootBlog -->
<!-- END_MODULE Touch_NotRootBlog -->
Touch_NotBlogParent 現在見ているブログ自身が子ブログを持っていない時のみ表示する ソース
<!-- BEGIN_MODULE Touch_NotBlogParent -->
<!-- END_MODULE Touch_NotBlogParent -->
Touch_NotPreview タイムマシーンモードでない及び、プレビューモードでないときに表示する ソース
<!-- BEGIN_MODULE Touch_NotPreview -->
<!-- END_MODULE Touch_NotPreview -->
Touch_NotDebug config.server.php内でDEBUG_MODEが1に設定されていない時のみ表示する ソース
<!-- BEGIN_MODULE Touch_NotDebug -->
<!-- END_MODULE Touch_NotDebug -->
Touch_NotHookEnable config.server.php内でHOOK_ENABLEが1に設定されていない時のみ表示する Ver. 3.0.16〜 ソース
<!-- BEGIN_MODULE Touch_NotHookEnable -->
<!-- END_MODULE Touch_NotHookEnable -->

画像のカスタムフィールドグループで「ブラウザ側のリサイズ機能」が動作しない問題


最近はメディア機能を利用される人も多いかもしれませんが、カスタムフィールドグループで画像を利用すると「ブラウザ側のリサイズ機能を使用する」が機能していない事が分かりました。将来的なアップデートで修正される予定ですが、正常に動作するサンプルコード を紹介しておきます。

グループ名: album / 画像 : photo で設定しています。

正常に動作するサンプルコード

<table class="js-fieldgroup-sortable adminTable acms-admin-table-admin-edit">
  <tbody>
  <!-- BEGIN album:loop -->
  <tr class="sortable-item">
    <td class="item-handle acms-admin-table-nowrap">
      <i class="acms-admin-icon-sort"></i>
    </td>
    <td>
      <table>
        <tr>
          <td class="js-img_resize_cf">
            <!-- BEGIN_IF [{photo@path}/nem] -->
            <img src="%{ARCHIVES_DIR}{photo@path}" class="js-img_resize_preview" style="max-width:300px" alt="{photo@alt}" />
            <input type="hidden" name="photo@old[]" value="{photo@path}" />
            <label for="input-checkbox-photo@edit[]" class="acms-admin-form-checkbox">
              <input type="checkbox" name="photo@edit[]" value="delete" id="input-checkbox-photo@edit[]" />
              <i class="acms-admin-ico-checkbox"></i>削除</label>
            <!-- ELSE -->
            <img src="%{ARCHIVES_DIR}{photo@path}" class="js-img_resize_preview" style="max-width:300px;display:none" />
            <!-- END_IF -->
            <input type="file" name="photo[]" class="js-img_resize_input" />
            <br/>
            <input type="hidden" name="photo@width[]" value="800" />
          </td>
        </tr>
      </table>
    </td>
    <td class="acms-admin-table-nowrap">
      <input type="button" class="item-delete acms-admin-btn-admin acms-admin-btn-admin-danger" value="削除" />
    </td>
  </tr>
  <!-- END album:loop -->
  <tr class="sortable-item item-template">
    <td class="item-handle acms-admin-table-nowrap">
      <i class="acms-admin-icon-sort"></i>
    </td>
    <td>
      <table>
        <tr class="js-custom-img_resize_cf">
          <td class="js-img_resize">
            <img src="" style="max-width:300px;display:none" class="js-img_resize_preview" />
            <input type="file" name="photo[]" class="js-img_resize_input" style="max-width:300px" />
            <br/>
            <input type="hidden" name="photo@width[]" value="800" />
          </td>
        </tr>
      </table>
    </td>
    <td class="acms-admin-table-nowrap">
      <input type="button" class="item-delete acms-admin-btn-admin acms-admin-btn-admin-danger" value="削除" />
    </td>
  </tr>
  </tbody>
  <tfoot>
  <tr>
    <td colSpan="3">
      <input type="button" class="item-insert acms-admin-btn-admin" value="追加" />
      <input type="hidden" class="item-max" value="20" />
    </td>
  </tr>
  </tfoot>
</table>
<input type="hidden" name="@album[]" value="photo@path" />
<input type="hidden" name="@album[]" value="photo@alt" />
<input type="hidden" name="@album[]" value="photo@x" />
<input type="hidden" name="@album[]" value="photo@y" />
<input type="hidden" name="@album[]" value="photo@edit" />
<input type="hidden" name="@album[]" value="photo@old" />
<input type="hidden" name="photo:extension" value="image" />
<input type="hidden" name="@album[]" value="photo" />
<input type="hidden" name="field[]" value="photo" />
<input type="hidden" name="field[]" value="@album" />

<script>
ACMS.Ready(function () {
  ACMS.addListener("acmsAddCustomFieldGroup", function(e) {
    $('.js-custom-img_resize_cf', e.target).each(function () {
      ACMS.Library.ResizeImage(this);
    });
  });
});
</script>

WebP画像を一括で生成する


Ver. 2.11.22 より、次世代画像フォーマットである「WebP」画像の生成に対応しました。

新規制作であれば、最初からWebP画像が生成されるので問題ないですが、CMSをアップデートしてWebP画像に対応した場合、 古い画像は残念ながらWebP対応されません。

そこで今回は、古い画像もWebP画像に対応させる方法について、紹介したいと思います。

cwebp コマンド

最初に、WebP画像を生成するために、Googleが開発している「cwebp」コマンドをインストールします。
公式ページ: https://developers.google.com/speed/webp

いろいろな環境があるため、ここでは、macOS環境で「homebrew」を使ってインストールしてみます。 他の環境の場合は「cwebp」のインストール方法は、いろいろ記事で紹介されていますので、そちらをご参考ください。

Homebrewでのインストール

ターミナルで以下のコマンドを実行することにより「cwebp」をインストールすることができます。 $ brew install webp

シェルスクリプトの用意

以下のシェルスクリプトを、画像変換したいディレクトリ(例えば「media」ディレクトリなど)に設置します。

#!/bin/sh

images=`find . -type f -name *.jpg -or -name *.jpeg -or -name *.png`

for image in $images;
do
    cwebp $image -o $image".webp" >/dev/null 2>&1
done

上記のスクリプトを webp.sh として media ディレクトリに設置した場合。

$ cd path/to/media
$ chmod 755 webp.sh // 実行可能なパーミッションに変更
$ ./webp.sh

これで、pngやjpegの元画像と同じディレクトリ、元ファイル名.webp というファイルができてると思います。



これで、バージョンアップ前の画像も、WebP画像対応することができました。是非WebPが利用できる環境であれば是非お試しください。