$Resource を使用した静的リソースへの動的参照
静的リソースへの動的参照は、テーマその他の表示設定をサポートする場合に非常に便利です。
$Resource グローバル変数を使用して静的リソースを参照するには、式 {! $Resource[StaticResourceName] } で静的リソースの名前を指定します。たとえば、静的リソースとしてアップロードされる画像の名前を返す getCustomLogo メソッドの場合は、静的リソースを <apex:image value="{!$Resource[customLogo]}"/> のように参照します。
次の例では、2 つの異なる表示テーマの切り替え方法を示します。最初に、次のコードで ThemeHandler という名前のコントローラ拡張を作成します。
このクラスに関する注意:
- コントローラ拡張にはデフォルトのコンストラクタがないため、コンストラクタは空です。
- アップロードした静的リソースファイルテーマの名前を getAvailableThemes メソッドに追加します。静的リソース、特に複数のファイルを含む zip アーカイブの作成とアップロードの詳細は、「静的リソースの使用」を参照してください。
- 最後の 2 つのメソッドでは、テーマの一覧と Visualforce フォームコンポーネントで使用するように選択されたテーマが提供されます。
ここで、このコントローラ拡張を使用する Visualforce ページを作成します。
このマークアップについては、次の点に留意してください。
- ページでは標準取引先コントローラを使用しますが、取引先は関係ありません。コントローラ拡張を使用するには、コントローラを指定する必要があります。
- 最初の <apex:pageBlockSection> には、テーマ選択ウィジェットが含まれます。<apex:actionSupport> を使用して選択メニューを変更すると、<apex:pageBlock> 全体が再表示されます。これは、<apex:stylesheet> タグが、更新された selectedTheme を動的参照のために取得できるようにするものです。
- ここで選択したテーマ設定は、コントローラのビューステートにのみ保持されますが、これに代えてカスタム設定に保存し、永続的にすることが簡単に行えます。
- テーマごとのグラフィックとスタイルアセットが含まれる各 zip ファイルの構造と内容は一貫している必要があります。つまり、各テーマの zip ファイルには images/logo.png が存在する必要があります。
このページの $Resource グローバル変数への動的参照は 2 つのみですが、スタイルシートとグラフィックアセットの両方にアクセスする方法を示しています。動的参照は、ページのどの <apex:image> タグでも使用でき、デザインを完全に変えることができます。
$Label および $Setup は、組織の管理者またはユーザ自身が Salesforce に設定したテキスト値や保存した設定にアクセスできるという点で、$Resource に似ています。
- カスタム表示ラベルを使用すると、アプリケーション全体で一貫して使用可能なテキストメッセージを作成できます。表示ラベルテキストを翻訳し、自動的にユーザのデフォルト言語で表示することもできます。カスタム表示ラベルの使用方法についての詳細は、「カスタム表示ラベル」を参照してください。
- カスタム設定を使用すると、アプリケーションについて管理者またはユーザ自身が更新できる設定を作成できます。設定を階層化し、ユーザレベル設定でロールレベルまたは組織レベルの設定を上書きすることもできます。カスタム設定の使用方法についての詳細は、「カスタムデータセットの作成」を参照してください。