function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
force_dev1force_dev1 

カスタムタブの表示制御について

カスタムタブの表示制御についてお伺いいたします。

 

カスタムタブをプロファイルでなく、

ロジックで表示制御を行いたいのですが可能でしょうか?

 

また、可能であれば具体的なソース等があれば

ご提供いただければと思います。

 

ご教授のほどよろしくお願いいたします。

Best Answer chosen by Admin (Salesforce Developers) 
Mitch OkamotoMitch Okamoto

こちらのサイトに、Salesforceのサービス稼働状況があります。

http://trust.salesforce.com/trust/status/

 

見ていただくと分かるのですが、いくつかのグループに分けてサーバ群を管理しています。

このサーバグループのことをセールスフォース・ドットコムでは"インスタンス"と呼んでいます。

 

例えば通常日本のお客様がSalesforceを使うと、https://ap.salesforce.com というURLが利用されます。

これは"APインスタンス"のサーバ群よりサービスが提供されていることを意味します。

これが北米の方だと https://na1.saesforce.comとかになったりします。

 

なるべく契約した企業の近くにインスタンスが来るように、利用開始時に振り分けます。

(ただしDeveloper EditionはNaインスタンスに固定です)

 

Mydomainというのは、先程の https://ap.salesforce.com/ という共通のURLではなく、

https://<企業名>.my.salesforce.com/ というURLに変更する標準機能です。

詳しくはヘルプでマイドメインと検索すると、説明があります。

https://developerforcejapan.my.salesforce.com/help/doc/ja/domain_name_overview.htm#topic-title

 

All Answers

Mitch OkamotoMitch Okamoto

残念ながら、カスタムタブの表示するしないは、Apexなどのロジックで制御することはできないと思います。

 

SidebarにJavascript仕込んでおいて、onloadのタイミングで該当のタブのDOMごと消す・・・・って方法もありますがあまり良いとは思えません。

 

 

代わりに良くやるのが、何かしらのロジックで各画面(タブ)へのLink表示を制御したい場合、

 

1,VIsualforceページTabを作成して配置

2,そのページをから、画面へのリンクを作成する

3,ページ内で、リンクをLinkを表示するかを制御する

 

て感じでしょうか。

例えばこんな感じのVFになります。

 

 

<apex:page >

 

<apex:pageBlock rendered="true">
<apex:outputLink value="https://na1.salesforce.com/{!$ObjectType.Account}/o">
<apex:outputText value="{!$ObjectType.Account.Label}" style="font-size:30px"/>
</apex:outputLink>
</apex:pageBlock>

 

<apex:pageBlock rendered="false">
<apex:outputLink value="https://na1.salesforce.com/{!$ObjectType.Opportunity}/o">
<apex:outputText value="{!$ObjectType.Opportunity.Label}" style="font-size:30px"/>
</apex:outputLink>
</apex:pageBlock>

 

<apex:pageBlock rendered="true">
<apex:outputLink value="https://na1.salesforce.com/{!$ObjectType.Case}/o">
<apex:outputText value="{!$ObjectType.Case.Label}" style="font-size:30px"/>
</apex:outputLink>
</apex:pageBlock>

 

//....続く

 

</apex:page>

 

要はタブではなく、一枚のメニューページ的なものから遷移させる感じです。

renderd属性をtrue, falseに変えることで表示されるかを変更できますので、実際はApexコントローラ側に表示するかどうかを決めるBooolean型の変数を作成し、それによって制御を行うことになると思います。

 

 

こんな感じでいかがでしょうか?

force_dev1force_dev1

お返事をいただきましてありがとうございます。

 

下記のvalue内容はエンドユーザ様のご契約時の環境により変わると思いますが

動的に設定することはできますでしょうか?


<apex:smileysurprised:utputLink value="https://mokamoto-developer-edition.my.salesforce.com/{!$ObjectType.Account}/o">

 

URL部分(https://mokamoto-developer-edition.my.salesforce.com)を

エンドユーザ環境用のものとしてどこかのオブジェクトから取得などできるのでしょうか?

 

Mitch OkamotoMitch Okamoto

ありゃ、失礼しました、そちらMyDomain機能を設定していた場合ですね。

原文修正しておきました。

 

日本のお客様向けであれば、通常ならば

 

<apex:outputLink value="https://ap.salesforce.com/{!$ObjectType.Account}/o">

 

 

というURLで設定できると思います。

apインスタンス以外のユーザや、My domainを設定しているユーザにも対応したい場合には

Apex側で

 

baseUrl = URL.getSalesforceBaseUrl().toExternalForm();

 

と呼び出すことによって、現在のインスタンスに対応したURLが取得できます。

で、VF側で

 

<apex:outputLink value="{!baseUrl}/{!$ObjectType.Account}/o">

 

とすれば、取引先タブへのLinkが作成できます。

force_dev1force_dev1

早速のご回答ありがとうございます。

 

話がそれてしまうのですが

apインスタンス以外のユーザや、My domainを設定しているユーザとは

どのようなユーザでしょうか?

 

参考になるサイトなどがございましたら

ご提示いただけると助かります。

Mitch OkamotoMitch Okamoto

こちらのサイトに、Salesforceのサービス稼働状況があります。

http://trust.salesforce.com/trust/status/

 

見ていただくと分かるのですが、いくつかのグループに分けてサーバ群を管理しています。

このサーバグループのことをセールスフォース・ドットコムでは"インスタンス"と呼んでいます。

 

例えば通常日本のお客様がSalesforceを使うと、https://ap.salesforce.com というURLが利用されます。

これは"APインスタンス"のサーバ群よりサービスが提供されていることを意味します。

これが北米の方だと https://na1.saesforce.comとかになったりします。

 

なるべく契約した企業の近くにインスタンスが来るように、利用開始時に振り分けます。

(ただしDeveloper EditionはNaインスタンスに固定です)

 

Mydomainというのは、先程の https://ap.salesforce.com/ という共通のURLではなく、

https://<企業名>.my.salesforce.com/ というURLに変更する標準機能です。

詳しくはヘルプでマイドメインと検索すると、説明があります。

https://developerforcejapan.my.salesforce.com/help/doc/ja/domain_name_overview.htm#topic-title

 

This was selected as the best answer
force_dev1force_dev1

ご説明いただきましてありがとうございます。

 

まだまだ知識不足でした。

ご提供いただきましたサイトを参考にさせていただきます。

 

ありがとうございまいした。