2023.09.27

Experience Cloudで顧客向けのパスを表示する方法

はじめに

ケースや商談などで、パスコンポーネントを使用してレコードの状況を視覚的に管理できますよね。

しかし、標準機能のパス設定では1つのレコードタイプに対し1つのパス設定という制限があるため、同じレコードを表示する際に、Lightning Experienceでは内部向けのステップを表示し、Experience Cloudサイトでは顧客向けのステップを表示させる、といった設定ができません。

標準機能でできないなら・・・そう!開発しましょう!
今回はLightning Web Componentを使って顧客向けのパスコンポーネントを表示する方法について紹介します。

※Lightningページでのパスコンポーネント設定方法は弊社の過去ブログをご覧ください。
今回は顧客から起票された問合せの状況を視覚的に管理できるように、ケースレコードにパスコンポーネントを表示していきたいと思います。

事前準備

標準機能ではパス表示に「状況」(Status)項目を使用することが多いと思いますが、顧客向けに「問い合わせ状況」項目を作成して表示を行っていきたいと思います。

設定値は下記です。
項目名 API参照名 データ型 選択リスト値 用途
問い合わせ状況 InquiryStatus__c 選択リスト
起票
対応中
回答済み
クローズ
顧客向け
事前準備はこれで完了です。
それではさっそく、作成した項目を使用してパスコンポーネントを作成していきましょう!

パスコンポーネントの作成

HTML

<template>
    <div class="path-container">
        <lightning-progress-indicator current-step={currentStatus} type="path">
            <template for:each={statusOptions} for:item="step">
                <lightning-progress-step
                    key={step.value}
                    label={step.label}
                    value={step.value}>
                </lightning-progress-step>
            </template>
        </lightning-progress-indicator>
    </div>
</template>
pathComponent.html
「lightning-progress-indicator」
current-stepで現在のステップを設定します。
typeは「base」と「path」のいずれかを設定可能ですが、今回はLightningページの表示形式に合わせるため「path」を選択します。

typeを"base"としたとき

typeを"path"としたとき

「lightning-progress-step」
labelvalueによって、矢羽で表示するステップを設定します。
今回はケースの「問い合わせ状況」項目の選択リスト値分ステップを表示させたいので、for:eachを使って繰り返し表示します。

JavaScript

import { LightningElement, wire, api } from 'lwc';
import { getPicklistValues, getObjectInfo } from 'lightning/uiObjectInfoApi';
import { getRecord, getFieldValue } from 'lightning/uiRecordApi';
import CASE_OBJECT from '@salesforce/schema/Case';
import CASE_STATUS_FIELD from '@salesforce/schema/Case.InquiryStatus__c';

export default class pathComponent extends LightningElement {
    @api recordId;          // レコードId
    defaultRecordTypeId;    // レコードタイプId
    statusOptions;          // 問い合わせ状況項目の選択リスト値
    currentStatus;          // 現在の問い合わせ状況

    // レコードタイプIdを取得
    @wire( getObjectInfo, { objectApiName: CASE_OBJECT })
    wireObjectInfo({ error, data }){
        if( data ){
            this.defaultRecordTypeId = data.defaultRecordTypeId;
        } else if ( error ) {
            // handle error
        }
    }

    // 現在の問い合わせ状況項目値を取得
    @wire( getRecord, { recordId: '$recordId', fields: CASE_STATUS_FIELD })
    getRecordValues({ error, data }) {
        if( data ){
            this.currentStatus = getFieldValue( data, CASE_STATUS_FIELD );
        } else if( error ) {
            // handle error
        }
    }

    // 問い合わせ状況項目の選択リスト値を取得し、パスの矢羽として表示
    @wire( getPicklistValues, { recordTypeId: '$defaultRecordTypeId', fieldApiName: CASE_STATUS_FIELD })
    pickValues({ error, data }) {
        if( data ){
            this.statusOptions = data.values.map( item => {
                return {
                    label: item.label,
                    value: item.value
                }
            });
        } else if( error ) {
            // handle error
        }
    }
}
pathComponent.js
JavaScriptでは、「lightning-progress-indicator」に設定するレコードの問い合わせ状況項目値と「lightning-progress-step」に設定する問い合わせ状況項目の選択リスト値を取得する処理を記述しています。

メタファイル

<?xml version="1.0" encoding="UTF-8"?>
<LightningComponentBundle xmlns="http://soap.sforce.com/2006/04/metadata">
    <apiVersion>58.0</apiVersion>
    <isExposed>true</isExposed>
    <targets>
        <target>lightningCommunity__Page</target>
        <target>lightningCommunity__Page_Layout</target>
        <target>lightningCommunity__Default</target>
    </targets>
    <targetConfigs>
        <targetConfig targets="lightningCommunity__Default">
            <property name="recordId" type="String" label="Record ID" />
        </targetConfig>
    </targetConfigs>
</LightningComponentBundle>
pathComponent.js-meta.xml
Experience Cloudサイトでコンポーネントを表示させるためには、プロパティでレコードIdを渡す必要があります。
一点注意点として、propertyでデフォルト値を設定するとサイト上でコンポーネントが表示されません。
プロパティの値はコンポーネントを配置する際に手動で入力しましょう。

パスコンポーネントの配置

最後にサイト上にコンポーネントを配置していきましょう。

ケースのレコード詳細ページを開き、コンテンツヘッダーに作成したパスコンポーネントを配置します。
配置後、プロパティ「Record Id」に{!recordId}を入力しましょう。

プロパティの設定

おわりに

今回の記事ではExperience Cloudサイトで顧客向けのパスコンポーネントを表示する方法についてご紹介しました。

メタファイルをいじればLightningページ上にも表示が可能ですので、プロファイルによって表示するステップを変更したい場合に今回のコンポーネントを作成してみてはいかがでしょうか。

公式の開発ガイドではステップエラーの実装に関する記載もあるので気になる方はこちらもご覧ください。

最後まで読んでいただきありがとうございました。
27 件
     
  • banner
  • banner

関連する記事