質問
ユーザーの組織に基づいてチケットフォームを非表示にするにはどうすればよいですか?
回答
免責事項:この記事は説明のみを目的として提供されています。記事内で例示したコードについて、Zendeskはサポートも保証もいたしません。また、Zendeskは、JavaScript、jQuery、CSSなどのサードパーティの技術をサポートすることができません。何か問題があった場合はコメントセクションに投稿するか、インターネットで解決策を探してみてください。
特定のチケットフォームをユーザーの組織名に基づいて非表示にするには、次の手順を実行します:
メモ:テーマがGuideのテンプレートV2の場合は、Queryをインポートする必要があります。詳細については、次の記事を参照してください:「jQueryのインポートまたはアップグレード」
ステップ1:チケットフォームIDを確認する
ステップ2:組織名を確認する
- 「管理センター」に移動し、「メンバー」に移動します。
- 組織を参照または検索して、適切な組織名を見つけます。
ステップ3:JavaScriptを編集する
メモ:ユーザーが「;」や「}」などのすべての文字をテンプレートからコピーしなかった場合、コードが意図したとおりに機能せず、ユーザーがユーザープロフィールのドロップダウンにアクセスできず、「マイアクティビティ」ボタンや「ログアウト」ボタンなどが表示されない可能性があります。
- Guideで、サイドバーにある「デザインをカスタマイズ」アイコン()をクリックします。
- 編集したいテーマをクリックして、開きます。
- オプションメニューをクリックし、「コードを編集」を選択して、「script.js」を選択します。
- 下記のコードブロックをコピーします。
$(document).ready(function() { var formID = 6502769669773; // Change this to the form ID you wish to remove var userOrgs = window.HelpCenter.user.organizations; var userOrgNames = userOrgs.map(org => org.name); if (!(userOrgNames.includes("ZENDESK"))) { // Specify the organization name here // If the user does not belong to the organization specified, remove the form option from the dropdown $('#request_issue_type_select option[value="' + formID + '"]').remove(); $('.nesty-panel').on('DOMNodeInserted', function(e) { $(this).children('ul').children().remove('#' + formID); }); } });
- 変数
formID = 6502769669773
を、非表示にするチケットフォームIDに置き換えます。 -
"ZENDESK"
をチケットフォームを表示する組織の名前に置き換えます。 - コードをヘルプセンターコードのJavaScriptテンプレートに貼り付けます。
- テンプレートを保存し、変更を公開します。
提供されたコードは、別の組織のためのスペースを確保します。フォームと組織を追加するには、上記のifステートメントをコピーし、以下のように既存のifステートメントの下に置きます。チケットフォームIDを正しいものに置き換え、さらにユーザーが入っているかどうかを確認する組織に置き換えます。必要に応じてチケットフォームと組織でこれを繰り返します。
メモ:指定された組織を除くすべての組織に1つのチケットフォームを表示するようにコードの動作を変更する場合は、NOT演算子
(!)
を if 文から削除します。
for (var c in HelpCenter.user.organizations) {
if (HelpCenter.user.organizations[c].name !== "ZENDESK"){
$("#TICKT_FORM_ID").remove();
}if (HelpCenter.user.organizations[c].name !== "MYORG"){
$("#TICKET_FORM_ID2").remove();
}
メモ:このワークフローは、認証されていないユーザーまたは組織に所属していないユーザーには機能しません。これらのユーザーには、すべてのフォームが表示されます。