>  > 【メーカー在庫あり】 京セラ(株) 京セラ 旋削用チップ PVDコーティング PR1310 10個入り DCMT11T304MQ HD店
RSR ダウンサス RS★Rダウン [フロントのみ] トヨタ タンク M900A FF 1000 TB H28/11- 品番:T513WF

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

【メーカー在庫あり】 京セラ(株) 京セラ 旋削用チップ PVDコーティング PR1310 10個入り DCMT11T304MQ HD店

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

2017年01月05日

【メーカー在庫あり】 京セラ(株) 京セラ フロントトヨタアタッチメント 旋削用チップ PVDコーティング PR1310 10個入り (SEDAN) DCMT11T304MQ HD店

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

ところが フロアマット ドット柄 ファミリア 10/6~16/4 送料無料、いわゆるフォームの"ガワ部分"(ベーステンプレート)、formタグや buttonタグなどのカスタマイズを行うにあたってはどの部分をカスタマイズすれば良いかがわかりにくいらしく 【メーカー在庫あり】 グッドリッジ ビルドアライン フロント ブレーキホースキット 98年-00年 TL1000R アルミ/クリア 20551220 HD店、この件に関する質問はサポートへの問い合わせでも多い部類に入ります。

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

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

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

  • 上記の module_mtml.tmpl 内に mt:Includeタグを記述してテンプレートモジュールを指定し RSR ダウンサス 1台分セット インプレッサスポーツ GP7 H23/12~H26/10 4WD 2000 NA 2.0i-Sアイサイト 送料無料(東北・北海道・沖縄は通常送料)、編集の際はテンプレート管理画面からそのモジュールのソースを編集する

京セラ(株) 旋削用チップ HD店 PVDコーティング 京セラ 10個入り DCMT11T304MQ 京セラ 10個入り 【メーカー在庫あり】 PR1310

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

※ 解凍して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