要件
商品をカードレイアウトで表示し、必須の商品をカートに追加するボタンを配置します。
使用する Case
ある eコマース企業が、注文管理アプリを使用して注文を処理しています。商品はカードレイアウトで商品画像とともに表示され、顧客は必須の商品をカートに追加して注文を行うことができます。
手順
|
フォーム |
フォームリンク名 |
項目タイプ |
項目名 |
項目リンク名 |
|
商品 |
商品 |
単一行 |
商品 |
商品 |
|
画像 |
画像 |
画像 |
|
通貨 |
価格 |
価格 |
|
商品 |
商品
|
ルックアップ |
商品 |
商品 |
|
数値 |
数量 |
数量 |
|
通貨 |
価格 |
価格 |
|
通貨 |
合計 |
合計 |
|
メール |
メール |
メール |
|
順番 |
順番 |
名前 |
名前 |
名前 |
|
住所 |
住所 |
住所 |
|
電話番号 |
電話番号 |
Phone_Number |
|
SubForm |
商品 (既存 Form) |
商品 |
|
通貨 |
合計 |
合計 |
2.
初期値を設定し、
商品フォームのメール項目の値を
${Zoho。loginuserid}にします。
3.
名前を変更し、
商品レポートを
My カートにリネームします。そのうえで、
Quick 表示>
Layout で、次の
レイアウトを設定します。
4.
QuickView>
処理 に移動し、
名前を変更して
削除処理を
カートから削除にし、さらに
削除で
編集や
複製などの追加処理を削除します。
5.
フィルターを設定し、
My カートレポートの
レポートプロパティで、以下のように設定します。これにより、顧客はレポート内で自分の商品のみを閲覧できるようになります。
7.
ボタンを追加し、名前を
注文を作成とします。そのうえで、
操作タブで次のパラメーターを設定します。
URL は注文フォームにリダイレクトされるようにします。形式は次のとおりです:
https://creatorapp.zoho.com/<app-owner-name>/<app-linkname>/#Form:Order
- <%{
- %>
- /* フォントサイズを定義するクラス */
- <style>
- .商品-リンク {
- text-decoration: なし;
- フォント-size: 1rem;
- }
- /* カードレイアウトを定義するクラス */
- .商品-カード {
- display: grid;
- grid-テンプレート-columns: 繰り返し(3, 1fr);
- grid-auto-rows: auto;
- gap: 0。5rem;
- }
- /* 戻るボタンを取得するクラス */
- .no_record_wrapper {
- display: なし;
- }
- /* 「データが追加されていません」というテキストを削除するクラス */
- .row。reportfullwidth。カスタム-レポート。zc-カード-レポート
- {
- background-color: white;
- }
- /* 各カード内の詳細を定義するクラス */
- .商品-カード {
- 箱-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0。2);
- transition: 0。3s;
- width: 70%;
- height: fit-content;
- text-align: center;
- padding: 1rem;
- float: left;
- margin: 25px;
- }
- /* 商品名と「カートに追加」テキストの間に余白を追加するクラス */
- .商品-カード .商品-container-カード {
- padding: 1rem;
- }
- /* 画像サイズを定義するクラス */
- .商品-header-画像 {
- display: block;
- margin: auto;
- max-width: 150px;
- height: 60%;
- }
- </style>
- /* レポートから画像を取得するクラス */
- <div クラス='商品-カード'>
- <%
- for each 商品 in 商品[ID != null]
- {
- var = 商品。画像。getprefix('\' lowqual').getsuffix('<img src = \'').replaceAll('/sharedBy/appLinkName/viewLinkName/fieldName',Zoho。appuri + 'All_Products/Image');
- %>
- /* 上記スニペットで取得した各カード内に商品画像を表示するクラス */
- <div クラス='商品-カード'>
- <img src=<%=var%> クラス='商品-header-画像' alt=<%=商品。商品%>/>
- <div クラス='商品-container-カード'>
- <h4><b><%=商品。商品%></b></h4>
- /* 「カートに追加」をクリックしたときにフォームを開くアクション */
- <p><a クラス='商品-リンク' href='#Form:商品?zc_LoadIn=dialog&商品=<%=商品。ID%>'>カートに追加</a></p>
- </div>
- </div>
- <%
- }
- %>
- </div>
- <%
- }%>
10.
ワークフローを作成し、
商品フォームの読み込み時に、数量に値「1」を設定し、商品価格を自動入力するようにします。
11. 新しいアクションを追加をクリックし、次のスニペットを Deluge エディターに追加します。
- // 選択された商品の詳細を取得
- productDetails = 商品[ID == input。商品];
- // 商品の詳細をフォーム項目に代入
- input。価格 = productDetails。価格;
- input。数量 = 1;
- input。合計 = productDetails。価格;
- // 現在のユーザーの商品を追跡するためだけに使用するメール項目を非表示にする
- 隠す メール;
- // 手動更新を防ぐため、価格と合計の項目を無効にする
- 無効にする 価格;
- 無効にする 合計;
12. 次に、
条件を設定し、上記スクリプトが
商品の値が null と等しくない場合にのみ実行されるようにします。
13. 次に、
別のワークフローを追加し、
数量が更新されたときに
合計を計算するようにします。
14. 新しいアクションを追加をクリックし、次のスニペットを追加します。
- input。合計 = input。数量 * input。価格;
15. 次に、
ワークフローを作成し、商品がカートに追加された後にユーザーを
商品 Listingページへリダイレクトするようにします。
16. [新しいアクションを追加] をクリックし、Deluge Script を選択して、次のスクリプトをエディタに追加します:
- openUrl('https://creatorapp.zoho.com/<owner-name>/<app-linkname>/#Product_Listing','same window');
- 更新する;
17. 次に、
注文フォームに
ワークフローを追加し、選択した商品のサブフォーム行を追加します。
18. [新しいアクションを追加] をクリックし、次のスニペットを追加します:
- // メール項目を非表示にする
- 隠す 商品。メール;
- // 選択した商品でサブフォーム行を挿入する
- rows = コレクション();
- // 合計を後で計算するための初期値を宣言する
- sum = 0。0;
- // 現在のユーザーの 商品 フォームのデータをループし、値を取得してサブフォームに挿入する
- for each rec in 商品[メール == Zoho。loginuserid]
- {
- row1 = 順番。商品();
- row1。商品=rec。商品;
- row1。価格=rec。価格;
- row1。数量=rec。数量;
- row1。合計=rec。合計;
- rows。insert(row1);
- sum = sum + rec。合計;
- }
- input。商品。insert(rows);
- input。合計 = sum;
19. 次に、
注文フォームで選択した商品が変更されたときに価格を更新する
ワークフローを追加します。
20. [新しいアクションを追加] をクリックし、次のスニペットを追加します:
21. 次に、注文フォームで選択した数量が変更されたときに価格を更新し、選択した商品の合計費用を計算するワークフローを追加します。
22. [新しいアクションを追加] をクリックし、次のスニペットを追加します:
- if(row。数量 != 0 && row。数量 != null)
- {
- row。費用=row。数量 * row。価格;
- }
- input。合計 = input。商品。sum(費用);
23. 最後に、注文が確定した後に
商品フォームからデータを削除する
ワークフローを追加します。
24. [新しいアクションを追加] > Deluge Script をクリックし、次のスクリプトをエディタに追加します:
- 削除 差出人 商品[ID != 0];
- openUrl('https://creatorapp.zoho.com/<app-owner>/<app-linkname>/#Product_Listing','parent window');
動作を確認する
注意事項
- カスタムカードレイアウトは、同様の方法でZML スニペットを使用して実装することもできます。
- 商品フォームは、スタンドアロンコンポーネントとして表示されないように、顧客から非表示にすることができます。
- ページ
- Deluge