テンプレートの挿入

拡張アプリで様々な拡張をする場合、プログラムだけではなく管理ページを拡張したい場合があると思います。例えば、モジュールID化したいため、モジュール選択肢のテンプレートを拡張したい、拡張アプリ用の管理画面ページ(コンフィグページ)を作りたいなどです。

テンプレートの挿入方法

テンプレートを挿入するためには、ServiceProviderの initメソッド で 挿入処理を書く必要があります。

例: extension/plugins/SamplePlugin/ServiceProvider.php

<?php

namespace Acms\Plugins\SamplePlugin;

use ACMS_App;
use Acms\Services\Common\InjectTemplate;

class ServiceProvider extends ACMS_App
{
    /* 省略... */

    /**
     * サービスの初期処理
     */
    public function init()
    {
        $inject = InjectTemplate::singleton();
        $inject->add('admin-module-select', PLUGIN_DIR . 'SamplePlugin/template/module-select.html');
    }

    /* 省略... */
}

ポイント

Acms\Services\Common\InjectTemplate のオブジェクトを

$inject = InjectTemplate::singleton();

で取得して addメソッド でテンプレートを挿入します。

$inject->add('挿入先', 'テンプレートのパス');
  • 第一引数: 挿入先の識別子
  • 第2引数: 挿入するテンプレートパス(PLUGIN_DIR定数 を使うと便利です)

挿入先の仕込み

テンプレートはどこでも挿入できるわけではなく、挿入先に仕込みがされています。

例えば、モジュールIDのセレクトの選択肢のテンプレート(themes/system/admin/module/select.html)を見ると以下のような記述があります。

<!-- BEGIN_MODULE Admin_InjectTemplate id="admin-module-select" --><!-- END_MODULE Admin_InjectTemplate -->

この Admin_InjectTemplateモジュールid に指定されている識別子が、テンプレートを挿入するときに使う Acms\Services\Common\InjectTemplateaddメソッド の第一引数に指定されます。

挿入先一覧



識別子 挿入先パス 説明
admin-main themes/system/admin.html 管理ページのメインHTMLを追加
admin-action themes/system/admin/action.html アクションボックスに追加
admin-topicpath themes/system/admin/topicpath-list.html 管理画面のトピックパスを追加
admin-module-select themes/system/admin/module/select.html モジュールIDの選択肢を追加
admin-module-config-%{MODULE_NAME} themes/system/admin/module/edit.html モジュール編集ページに追加。%{MODULE_NAME} はモジュール名に変更する。
例: Sampleモジュール -> admin-module-config-Sample
admin-form themes/system/admin/form/edit.html フォームID編集ページに追加
admin-entry-field themes/system/admin/entry/edit.html エントリーのカスタムフィールドを追加
admin-entry-field-foot themes/system/admin/entry/edit.html エントリーのカスタムフィールドを追加
admin-category-field themes/system/admin/category/edit.html カテゴリーのカスタムフィールドを追加
admin-blog-field themes/system/admin/blog/edit.html ブログのカスタムフィールドを追加
admin-user-field themes/system/admin/user/edit.html ユーザーのカスタムフィールドを追加

Ver. 3.0.25 フィックスバージョンリリースのお知らせ


2023年04月28日にリリースした Ver. 3.0.25 の修正内容についてご紹介いたします。

現在お困りの問題に該当する項目がありましたら、お早めにバージョンアップのご検討をお願いいたします。

Ver. 3.0.25 リリースノート

不具合修正

  • CMS-6359 拡張アプリの状態が「要アップデート」の場合に、拡張メニューに、有効化がされていない拡張アプリのメニューが表示されてしまう問題の修正
  • CMS-6357 Entry_Summary, Entry_GeoList, Entry_Photo, Entry_List, Entry_Headline, Entry_TagRelational, Category_EntrySummaryモジュールの変数表を更新(sort, usort, csort, ecd)
  • CMS-6363 多言語ユニットの場合、ブログ・エントリーのインポートで、ID(メディアなど)がずれて正常にインポートできない問題を修正
  • CMS-6364 レンタルサーバーによって、sendmailではメールが送信できない場合がある問題を修正
  • CMS-6369 pdfjsをアップデート

主なリリースノート内容

CMS-6363 多言語ユニットの場合、ブログ・エントリーのインポートで、ID(メディアなど)がずれて正常にインポートできない問題を修正

多言語ユニットの利用している時、ブログ・エントリーのエクスポートをして、インポートをすると、メディアIDがずれてしまい、元と違った画像やファイルが表示されてしまう不具合を修正しました。


CMS-6364 レンタルサーバーによって、sendmailではメールが送信できない場合がある問題を修正

Ver. 3.0.24 での「CMS-6331 メールライブラリを変更 swiftmailer -> symfony/mailer & メールのISO-2022-JP文字コードを廃止」が影響して、レンタルサーバーによっては、メール送信ができない不具合を修正しました。

メール送信できない条件

  • a-blog cms のバージョンが、Ver. 3.0.24
  • sendmailを利用(管理ページのメールのコンフィグで、SMTPを設定していない)
  • 再現する一部レンタルサーバー(現状ヘテムルで確認されています。Xserverは問題ありません)

最後に

該当する問題がありましたら、お早めにバージョンアップのご検討をお願いいたします。また、迅速にご報告いただいたユーザーの皆さま、誠にありがとうございました。

今後もご報告いただいた内容に対して真摯に受け止め修正と改善を行ってまいります。 今後ともどうぞよろしくお願いいたします。

Shoping Cart拡張アプリ アップデートのお知らせ 2023年5月


この記事では、ShoppingCart 拡張アプリ について、2023年5月9日にリリースした  Ver. 2.1.0、Ver. 2.1.1 の内容及び、5月15日にリリースした Ver. 2.1.2 について紹介いたします。

現在お困りの問題に該当する項目がありましたら、お早めにバージョンアップのご検討をお願いいたします。

Ver. 2.1.0 のリリースノート

Added

  • Order_Summaryモジュールで注文商品・決済方法・追加手数料・配送地域・総注文商品(エントリー)数合計・総注文商品の数量合計のデータを出力できるブロック、変数を追加
  • ShoppingForm モジュールで適用中の決済方法の説明用画像を表示できるように改良
  • 決済方法に利用条件を設定できる機能及び、利用条件を満たした決済方法を表示するモジュール(Payment_Select)を追加
  • フォーマットした送料無料のしきい値(小計)を表示するグローバル変数(%{SHIPPING_FREE_SUBTOTAL_FORMATTED} )を追加
  • ShoppingCart 及び ShoppingCart_Summary モジュールで配送グループ(shippingGroup)ブロックを表示できるように改修
  • 決済方法・配送グループ・追加手数料にステータス設定を追加(公開 or 非公開)& Payment_Selectモジュールでステータスを考慮した決済方法のみを表示するように改修 & ステータスを考慮した配送グループ・追加手数料を表示するモジュール(ShippingGroup_AdminSelect・Addition_Select)を追加
  • Squareで決済をした場合、レシート番号(square-receiptNumber)とレシートURL(square-receiptUrl)をメール用の変数として表示できる機能を追加
  • ShoppingCart_Summary モジュールで税金情報と小計を表示できる変数を追加(taxAmount:loop, subtotal)

Changed

  • ECテーマのカート追加・更新・削除時にJavaScriptを触らずにバリデーションを追加できる用に変更
  • 管理画面のタブの分け方を変更
  • ECテーマでOrder_SummaryモジュールからAPI経由で取得していたカート内商品のデータをShoppingCart_Summary に置き換え
  • ECテーマの決済フォームのカテゴリーを cart → shopping に変更
  • ECテーマ決済フォームにおいて、注文情報を Order_Summaryモジュールで表示するように変更
  • ECテーマの不要なCSS及びJavaScript を削除など整理

Fixed

  • ECテーマのカート追加時に、カラーとサイズの必須チェックをするように修正
  • 送料無料のしきい値に0を設定した場合に、送料無料にならない問題の修正
  • ShippingCart_Summaryモジュールの変数表に(sort, usort, csort, ecd)を追加
  • 設定されている決済方法・配送グループ・追加手数料が0個の場合、エラーが出る問題を修正

Ver. 2.1.1 のリリースノート

Fixed

  • fix: PHP7.4で syntax error, unexpected '|', expecting variable (T_VARIABLE) が発生する問題の修正
  • ECテーマ詳細ページの Entry_Summary で ページネーションが表示されてしまう問題の修正

Ver. 2.1.2 のリリースノート

Fixed

  • ECテーマ: IOSでモーダルの背景がスクロールできてしまう問題の修正
  • ShippingGroup_AdminSelect モジュールの変数表が間違っている問題の修正
  • Firefox でクレジットカード決済が必ずエラーになってしまう問題の修正
  • Ver. 16 未満の Safariで Square の クレジットカード情報取得時にフォームが送信されない問題の修正
  • カート及び決済フォームを表示するページはページキャッシュされないように修正

主なリリースノート内容

今回のリリースではいくつか新しい機能が追加されていますが、新しい機能を利用するためにテンプレートの変更が必要になることがあります。

そのため、この記事では、テンプレートの変更が必要になる部分について詳しく説明いたします。

決済方法に利用条件を設定できる機能及び、利用条件を満たした決済方法を表示するモジュール(Payment_Select)を追加

Ver. 2.1.0 より、決済手数料を利用条件毎に設定できるようになりました。

具体的には、注文の合計金額(決済手数料を含めます)が0円 ~ 9999円の場合の決済手数料は 330 円、10000円 以上の場合の決済手数料は 440 円 のような要件が実現可能になりました。

特に、代引き手数料では、実際に購入者が支払う金額によって決済手数料が変動する場合があるため、決済手数料を利用条件毎に設定することで、販売者側が損をしてしまうといったことをなくすことが可能です。

Ver.2.1.0 より前のバージョンに同梱の EC テーマをご利用の場合、決済手数料を利用条件毎に設定できるようにするためにはテーマのテンプレートを変更する必要があります。

変更点としては、決済フォームで決済方法の選択肢を表示するために利用しているモジュールを ShoppingCart_Settings モジュールから Payment_Select モジュールに置き換える必要があります。

ECテーマで決済方法を表示しているところを、Payment_Select モジュールに置き換えてください。以下はサンプルコードになります。

        <!-- BEGIN_MODULE Payment_Select -->
        <ul class="form-table-list">
          <!-- BEGIN payment:loop -->
          <li class="form-table-list-item">
            <div
              class="acms-form-radio payment-method-select"
            >
              <input
                id="input-radio-payment-method-{block}"
                type="radio"
                name="payment-method"
                value="{block}"
                \{payment-method:checked#{block}\}
                <!-- BEGIN_IF [\{payment-method\}/em/_and_/{payment.i}/eq/1] -->
                checked="checked"
                <!-- END_IF -->
                data-validator="payment-method"
              />
              <label for="input-radio-payment-method-{block}">
                <i class="acms-ico-radio"></i>{name}<!-- BEGIN_IF [{commissionPaid}/gt/0] -->:手数料 ¥{commissionPaid}[number_format]<!-- END_IF -->
              </label>
              <!-- BEGIN description:veil -->
              <div class="form-table-description">
                <!-- BEGIN_IF [{description}[delnl]/nem] -->
                <div class="form-table-message">{description}[nl2br]</div>
                <!-- END_IF -->
                <!-- BEGIN_IF [{image@path}/nem] -->
                <img
                  src="%{MEDIA_ARCHIVES_DIR}{image@path}"
                  class="acms-img-responsive"
                  alt="{image@alt}"
                  width="{image@width}"
                  height="{image@height}"
                >
                <!-- END_IF -->
                <!-- BEGIN_IF [{block}/eq/creditcard] -->
                @include("/include/parts/card-form.html")
                <!-- END_IF -->
              </div>
              <!-- END description:veil -->
            </div>
          </li>
          <!-- END payment:loop -->
        </ul>
        <!-- END_MODULE Payment_Select -->

Payment_Select モジュールに置き換えることで、利用条件に当てはまる決済方法のみを選択肢として表示することができます。また、{commissionPaid} 変数で表示される決済手数料においても利用条件を考慮した金額が表示されます。

また、購入者が決済方法の選択を行うステップより前に配送先や追加手数料を選択するフォームのステップを設置する必要があることに注意してください。

これは決済手数料の利用条件として設定する金額は配送手数料や追加手数料を含んだ購入者が支払う合計金額のことになり、決済手数料を計算するためには配送手数料や追加手数料が決定している必要があるためです。

決済方法の利用条件設定についての詳しい内容はドキュメントに記載しましたので、以下のリンクからご確認ください。


決済方法・配送グループ・追加手数料にステータス設定を追加(公開 or 非公開)& Payment_Selectモジュールでステータスを考慮した決済方法のみを表示するように改修 & ステータスを考慮した配送グループ・追加手数料を表示するモジュール(ShippingGroup_AdminSelect・Addition_Select)を追加

Ver. 2.1.0 より、決済方法・配送グループ・追加手数料にステータス(公開 or 非公開)を設定できるようになりました。

これにより、管理者側としては設定画面に登録しておきたいが、閲覧者には表示させたくないといった仕様を実現できるようになりました。

Ver.2.1.0 より前のバージョンに同梱の EC テーマをご利用の場合、ShoppingCart 設定画面で設定した決済方法・配送グループ・追加手数料のステータスを考慮した選択肢を表示するためには、それぞれ Ver. 2.1.0 で新しく追加されたモジュールに置き換える必要があります。

決済方法の場合

ステータスが「公開」の決済方法のみを購入フォームで表示するためには Payment_Select モジュールを利用する必要があります。こちらの変更方法については、先程、「決済方法に利用条件を設定できる機能及び、利用条件を満たした決済方法を表示するモジュール(Payment_Select)を追加」で説明いたしましたので割愛させていただきます。

配送グループの場合

ステータスが「公開」の配送グループのみをエントリー編集画面で表示するためには ShippingGroup_AdminSelect モジュールを利用する必要があります。

Ver. 2.0.0 に同梱の EC テーマのエントリー編集画面で配送グループの選択肢を ShoppingCart_Settings モジュールで表示しているテンプレートを、 ShippingGroup_AdminSelect モジュールに置き換えてください。以下はサンプルコードになります。

<select name="item_shipping_group_id">
  <!-- BEGIN_MODULE ShippingGroup_AdminSelect -->
    <!-- BEGIN shippingGroup:loop -->
    <option value="{id}" \{item_shipping_group_id:selected#{id}\}>{name}</option>
    <!-- END shippingGroup:loop -->
    <!-- END_MODULE ShippingGroup_AdminSelect -->
  </select>
<input type="hidden" name="field[]" value="item_shipping_group_id" />

ShippingGroup_AdminSelect モジュールに置き換えることで、ステータスが「公開」の配送グループのみをエントリー編集画面で表示することができるようになります。

追加手数料の場合

ステータスが「公開」の追加手数料のみを購入フォームで表示するためには Addition_Select モジュールを利用する必要があります。

Ver. 2.0.0 に同梱の EC テーマの購入フォームで追加手数料の選択肢を ShoppingCart_Settings モジュールで表示しているテンプレートを、 Addition_Select モジュールに置き換えてください。以下はサンプルコードになります。

<!-- BEGIN_MODULE Addition_Select -->
<!-- BEGIN addition:veil -->
<h3>追加手数料</h3>
<table>
  <tbody>
    <tr>
      <th></th>
      <td>
        <ul>
          <!-- BEGIN addition:loop -->
          <li class="form-table-list-item">
            <div class="acms-form-checkbox">
              <input type="checkbox" name="addition[]" value="{id}" \{addition:checked#{id}\} id="input-checkbox-addition-{id}" />
              <label for="input-checkbox-addition-{id}">
                <i class="acms-ico-checkbox"></i>{name}(¥{fee}[number_format])</label>
            </div>
          </li>
          <!-- END addition:loop -->
        </ul>
        <input type="hidden" name="field[]" value="addition" />
      </td>
    </tr>
  </tbody>
</table>
<!-- END addition:veil -->
<!-- END_MODULE Addition_Select -->

Addition_Select モジュールに置き換えることで、ステータスが「公開」の追加手数料のみをエントリー編集画面で表示することができるようになります。

最後に

該当する問題がありましたら、お早めにバージョンアップのご検討をお願いいたします。また、迅速にご報告いただいたユーザーの皆さま、誠にありがとうございました。

今後もご報告いただいた内容に対して真摯に受け止め修正と改善を行ってまいります。 今後ともどうぞよろしくお願いいたします。