0

カスタマーポータルの「組織」をもとに「インシデントレポート」を表示するというものです。入力ボックスに組織を入力し、[送信] をクリックします。インシデント レポートは、その組織についてのみ表示する必要があります。

これは発生していますが、「ログイン済み」の連絡先 ID (c_id) もインシデント レポートにフィルターとして渡されています。

上記のインシデント レポートに適用されている c_id フィルターを削除することはできますか? この連絡先 ID フィルターをインシデント レポートから削除するにはどうすればよいですか?

pre_report_get_data フックを使用してから、連絡先 ID (c_id) フィルターの設定を解除することを提案した人がいます。しかし、私はそれを行う方法を理解できませんでした。

pre_report_get_data フックを使用して c_id フィルターを削除するためのコード スニペットを教えてもらえますか? または、この問題に対する他の解決策。

4

1 に答える 1

0

編集するレポートを新しいバージョンにコピーしてから、必要に応じてレポートのフィルターを編集します。デフォルトの定型レポートを直接編集することはできませんが、コピーがあれば完全に編集できます。

編集

カスタマー ポータルのユーザー モデルのため、コンタクト フィルターは常にカスタマー ポータル フィルターに適用されます。CP は、Web 上のユーザーが特定の顧客であり、ユーザー セッションの特定の連絡先に固有の連絡先データにのみアクセスできることを想定しています。これはセキュリティ メカニズムであり、意図したとおりに機能しています。

連絡先データが関連している可能性があるが、すべての連絡先に公開する必要があるレポートからのデータを表示することが目標である場合は、ROQL または Analytics API クエリを直接実行するカスタム ウィジェットを作成する必要がありますが、その可能性には注意してください。誤って実装された場合、他の顧客データを公開する。

pre_report_get_data フックを使用する場合、settings/hooks.php ファイルでフックを有効にするのは非常に簡単です。フックで呼び出すモデルとメソッドをフックでポイントします。次に、他の投稿で述べたように、渡されたデータの配列を編集して、filters 配列から c_id を設定解除します。

$rnHooks['pre_report_get'][] = array(
   'class' => 'filter_report',
   'function' => 'report_run',
   'filepath' => ''
); 

これにより、モデルreport_run()内のメソッドを呼び出すようにフック エンジンに指示されます。filter_reportこれらは通常、CP のサンプル コード ファイルであるため、そのフックを実装するための作業のほとんどは既に完了しているはずです。

function report_run($hookData)
{
    if($hookData['data']['reportId'] == '100335') //Change the report ID to the report that you need to call  
    {
        unset($hookData['data']['filters']['c_id']); //you'll need to lookup the key of the filter in the report to figure out which one to unset
    }
}
于 2016-09-21T15:21:57.193 に答える