この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

ユーザに表示する Salesforce スタイルの識別

Visualforce ページを作成する場合、期待される Salesforce のデザインを知っておくと、そのスタイルにマッチしたページを表示するのに役立ちます。たとえば、ユーザがデザインをカスタマイズするかどうか選択できるとします。Visualforce ページは、その違いを考慮して設計する必要があります。

ユーザに表示するスタイルを識別するには、$User.UITheme$User.UIThemeDisplayed という 2 つのグローバル変数が役立ちます。これら 2 つの変数は、$User.UITheme がユーザに表示すべきデザインを返し、$User.UIThemeDisplayed実際のデザインを返すという点で異なります。たとえば、ユーザは [新しいユーザインターフェースのテーマ] のデザインを表示するよう設定された権限を持っている場合がありますが、そのデザインをサポートしていないブラウザを使用していると、Internet Explorer 6 などで $User.UIThemeDisplayed が異なる値を返す場合があります。

どちらの変数も、次の値のいずれかを返します。
  • Theme1 — 古い Salesforce テーマ
  • Theme2 — Spring '10 より前に使用されていた Salesforce テーマ
  • PortalDefaultSalesforce カスタマーポータルのテーマ
  • WebstoreSalesforce AppExchange のテーマ
  • Theme3 — Spring '10 で導入された、現在の Salesforce テーマ
開発者が Salesforce に似た CSS スタイルをハードコードしたとします。Visualforce ページで新しいスタイルについても同じデザインを維持するために、開発者はユーザの設定に合わせるために複数のスタイルシートの中から選択する必要があります。次の例に、それを実現する方法の 1 つを示します。
1swfobject.registerObject("clippy.codeblock-0", "9");
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17<apex:page standardController="Account">
18    <apex:variable var="newUI" value="newSkinOn" 
19        rendered="{!$User.UIThemeDisplayed = 'Theme3'}">
20        <apex:stylesheet value="{!URLFOR($Resource.myStyles, 'newStyles.css')}" />
21    </apex:variable>
22    <apex:variable var="oldUI" value="oldSkinOn" 
23        rendered="{!$User.UIThemeDisplayed != 'Theme3'}">
24        <apex:stylesheet value="{!URLFOR($Resource.myStyles, 'oldStyles.css')}" />
25    </apex:variable>
26    <!-- Continue page design -->
27</apex:page>
この例では、次の点に留意してください。
  • 表示するセクションを「切り替え」るには rendered 属性を使用する。
  • <apex:stylesheet> タグには rendered 属性がないため、この属性があるコンポーネントでラップする必要がある。
ユーザ向けに新しいデザインを有効にしても、ユーザがそれを表示するための適切なブラウザやアクセシビリティの設定を行っていない可能性があります。次のコード例では、$User.UITheme 変数を使用して代替情報をユーザに表示します。
1swfobject.registerObject("clippy.codeblock-1", "9");
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17<apex:page showHeader="true" tabstyle="Case">
18    <apex:pageMessage severity="error" rendered="{!$User.UITheme = 'Theme3' && 
19                                                    $User.UIThemeDisplayed != 'Theme3'}">
20    We've noticed that the new look and feel is enabled for your organization. 
21    However, you can't take advantage of its brilliance. Please check with 
22    your administrator for possible reasons for this impediment.
23    </apex:pageMessage>
24    <apex:ListViews type="Case" rendered="{!$User.UITheme = 'Theme3' && 
25                                           $User.UIThemeDisplayed = 'Theme3'}"/>
26</apex:page>
$User.UIThemeTheme3 と同じですが、$User.UIThemeDisplayed は異なります。そのため、ページは最大限まで表示されません。