>  > 【USA在庫あり】 ツーブラザーズレーシング Two Brothers Racing スリップオンマフラー S1R 15年-16年 KTM RC390 カーボン 202123 HD
グリル クロムステンレスフロントバンパーグリルガードfor 98-04 TOYOTA TACOMA PICKUP CHROME STAINLESS STEEL FRONT BUMPER GRILL GUARD FOR 98-04 TOYOTA TACOMA PICKUP

アルファサード株式会社では、一緒に働く仲間を募集しています。クラウドインフラエンジニア積極採用中!

【USA在庫あり】 ツーブラザーズレーシング Two Brothers Racing スリップオンマフラー S1R 15年-16年 KTM RC390 カーボン 202123 HD

ホーム > PowerCMS ブログ > ContactFormで フォームの確認画面に「修正する」リンクを追加する

2017年01月05日

【USA在庫あり】 ツーブラザーズレーシング Two Brothers Racing スリップオンマフラー +38 S1R 15年-16年 KTM ハイパーエディション RC390 カーボン 202123 HD

PowerCMSのフォーム機能 (ContactForm.pack) を利用すればノンプログラマでも驚くほど簡単にお問い合わせフォームを作成できます。プログラマをアサインできないサイト構築案件でもフォームが手軽に作成できるとあって人気の機能で、フォームの各コントロールのHTMLも、各設問の設定となる「フォーム項目」と呼ばれるオブジェクトの管理画面からMTタグを使ってカスタマイズできます。

ところが CHIC DESIGN シックデザイン ビキニカウル・バイザー ロードコメット カラー:キャンディカーディナルレッド カラー:スモーク W400 W650 W800、いわゆるフォームの"ガワ部分"(ベーステンプレート)、formタグや buttonタグなどのカスタマイズを行うにあたってはどの部分をカスタマイズすれば良いかがわかりにくいらしく カードでポイント最大34倍 3/21(木)20:00~3/26(火)1:59迄 ミシュラン ENERGY SAVER MO エナジーセイバー サマータイヤ 205/55R16 HotStuff 軽量設計!G.speed P-02 ホイールセット 4本 16インチ 16 X 6.5 +48 5穴 114.3、この件に関する質問はサポートへの問い合わせでも多い部類に入ります。

これまでサポートでご案内しているカスタマイズの方法は以下の通りです。

  • /mt/addons/ContactForm.pack/tmpl/module_mtml.tmpl をそのままカスタマイズするか
  • /mt/addons/ContactForm.pack/alt-tmpl/module_mtml.tmpl にコピーを設置し 、そちらをカスタマイズする

このテンプレートをファイルではなく管理画面上のテンプレートモジュールで管理・編集したいという問い合わせも良くいただくので、以下のようにご案内しています。

  • 上記の module_mtml.tmpl 内に mt:Includeタグを記述してテンプレートモジュールを指定し 14インチデリカD:2MB15FWEDS レオニス VT BMC/ミラーカット 4.5Jx14SINCERA SN832i 165/65R14、編集の際はテンプレート管理画面からそのモジュールのソースを編集する

HD ツーブラザーズレーシング Racing KTM S1R 【USA在庫あり】 Two スリップオンマフラー カーボン 202123 RC390 Brothers 15年-16年 スリップオンマフラー KTM

カスタマイズの一例として、確認画面に「修正する」リンクを追加する方法をご紹介します。

※ 解凍してmodule_mtml.tmplを /mt/addons/ContactForm.pack/alt-tmpl/module_mtml.tmpl に設置し、フォーム項目(1行テキスト)のテンプレートに form_element.tmpl の内容をコピーします。

69行目付近(「修正する」リンクのJavaScriptを追加)

※2019年2月22日にJavaScriptを更新いたしました。

<input type="submit" value="<$mt:Trans phrase="Submit" component="ContactForm"
 
 

PowerCMS ブログ

ホーム > PowerCMS ブログ > ContactFormで フォームの確認画面に「修正する」リンクを追加する

2017年01月05日

ContactFormで フォームの確認画面に「修正する」リンクを追加する

PowerCMSのフォーム機能 (ContactForm.pack) を利用すればノンプログラマでも驚くほど簡単にお問い合わせフォームを作成できます。プログラマをアサインできないサイト構築案件でもフォームが手軽に作成できるとあって人気の機能で、フォームの各コントロールのHTMLも、各設問の設定となる「フォーム項目」と呼ばれるオブジェクトの管理画面からMTタグを使ってカスタマイズできます。

ところが、いわゆるフォームの"ガワ部分"(ベーステンプレート)、formタグや buttonタグなどのカスタマイズを行うにあたってはどの部分をカスタマイズすれば良いかがわかりにくいらしく、この件に関する質問はサポートへの問い合わせでも多い部類に入ります。

これまでサポートでご案内しているカスタマイズの方法は以下の通りです。

  • /mt/addons/ContactForm.pack/tmpl/module_mtml.tmpl をそのままカスタマイズするか
  • /mt/addons/ContactForm.pack/alt-tmpl/module_mtml.tmpl にコピーを設置し、そちらをカスタマイズする

このテンプレートをファイルではなく管理画面上のテンプレートモジュールで管理・編集したいという問い合わせも良くいただくので、以下のようにご案内しています。

  • 上記の module_mtml.tmpl 内に mt:Includeタグを記述してテンプレートモジュールを指定し、編集の際はテンプレート管理画面からそのモジュールのソースを編集する

ベーステンプレートを編集して確認画面に「修正する」リンクを表示する

カスタマイズの一例として、確認画面に「修正する」リンクを追加する方法をご紹介します。

※ 解凍してmodule_mtml.tmplを /mt/addons/ContactForm.pack/alt-tmpl/module_mtml.tmpl に設置し、フォーム項目(1行テキスト)のテンプレートに form_element.tmpl の内容をコピーします。

69行目付近(「修正する」リンクのJavaScriptを追加)

※2019年2月22日にJavaScriptを更新いたしました。

<input type="submit" value="<$mt:Trans phrase="Submit" component="ContactForm"$>" />
<script>
(function () {
 const scriptElem = document.getElementById('customize-form-base');
 let node = scriptElem.parentNode;
 while (node && 'form' !== node.nodeName.toLowerCase()) {
 node = node.parentNode
 }
 if (!node) {
 return
 }
 const inputElem = node.querySelector('input[name="__mode"]');
 if (inputElem) {
 const buttonElem = document.createElement('button');
 buttonElem.type = 'button';
 buttonElem.textContent = '修正する';
 buttonElem.classList.add('foo', 'bar', 'baz'); // ボタンにクラス名が必要であればカンマ区切りで設定します
 buttonElem.addEventListener('click', function () {
 inputElem.value = 'view';
 node.submit();
 });
 scriptElem.parentNode.insertBefore(buttonElem, scriptElem);
 }
}());
</script>

引き続き、フォーム項目(1行テキスト)のテンプレートを編集します。

39行目付近( request.<mt:var name="field_basename">が飛んできている場合、そちらを表示する)

<mt:setvarblock name="request_basename">request.<mt:var name="field_basename"></mt:setvarblock>
<input type="text" name="<mt:var name="field_basename">"field_basename">" value="<mt:if name="$request_basename"><mt:var name="$request_basename" escape="html"><mt:else><mt:var name="field_default" escape="html"></mt:if>" />

ところで、このようにカスタマイズを行えば目的は達せられるのですが、以下のようなケースで改善の余地があります。

  • ダイナミックパブリッシング(DynamicMTML)に対応できない
  • フォームやブログ/ウェブサイトによって違うモジュールを利用したい場合、mt:Ifタグによって分岐をさせなければならない(フォームの種類が多い場合、冗長なテンプレートになってしまう)

次回はContactForm のベーステンプレートをモジュール管理する ContactFormMTMLプラグインについてご紹介します(紹介記事を作成しました)


この記事と関連性の高い記事

あなたへお勧めの記事

カテゴリー
PowerCMS 3
PowerCMS 4
テンプレート作成Tips
技術情報
設定・管理画面カスタマイズ

コメントを投稿する

確認画面で次の部分について、

> while (j--) {
> if ("__mode" !== i[j].name) { continue }

変数i[j]にname属性が存在しない旨のJSエラー出る場合あるので、例えば次の様に修正する事で回避できます。

> while (j--) {
> if ( typeof( i[j] ) === 'undefined' ) { continue }
> if ("__mode" !== i[j].name) { continue }

{yahoojp}jpprem01-zenjp40-wl-zd-98793
{yahoojp}jpprem01-zenjp40-wl-zd-98793