Newer Version Available
Overriding an Existing Page with a Visualforce Page
Suppose you want to change the format of an existing page, such as the standard account detail page. All the information for an account displays on a single page. If there's a lot of information, you might end up doing a lot of scrolling. Using a Visualforce page you can make each section for an account display in a tab, such as contacts, opportunities, and so on.
First, create a new Visualforce page using the quick fix.
- In your browser, add the text /apex/tabbedAccount to the URL for
your Salesforce instance. For
example, if your Salesforce
instance is https://na1.salesforce.com, the new URL would be
https://na1.salesforce.com/apex/tabbedAccount. You will get the
following error message:
- Click Create Page tabbedAccount to create the new page.
- Click the Page Editor link in the bottom left corner of the page. This displays the
code for the new page, which should look like
this:
1<apex:page> 2<!-- Begin Default Content REMOVE THIS --> 3<h1>Congratulations</h1> 4This is your new Page: tabbedAccount 5<!-- End Default Content REMOVE THIS --> 6</apex:page> - Replace the existing code with the following and click
Save:
1<apex:page standardController="Account" showHeader="true" 2 tabStyle="account" > 3 <style> 4 .activeTab {background-color: #236FBD; color:white; 5 background-image:none} 6 .inactiveTab { background-color: lightgrey; color:black; 7 background-image:none} 8 </style> 9 <apex:tabPanel switchType="client" selectedTab="tabdetails" 10 id="AccountTabPanel" tabClass='activeTab' 11 inactiveTabClass='inactiveTab'> 12 <apex:tab label="Details" name="AccDetails" id="tabdetails"> 13 <apex:detail relatedList="false" title="true"/> 14 </apex:tab> 15 <apex:tab label="Contacts" name="Contacts" id="tabContact"> 16 <apex:relatedList subject="{!account}" list="contacts" /> 17 </apex:tab> 18 <apex:tab label="Opportunities" name="Opportunities" 19 id="tabOpp"> 20 <apex:relatedList subject="{!account}" 21 list="opportunities" /> 22 </apex:tab> 23 <apex:tab label="Open Activities" name="OpenActivities" 24 id="tabOpenAct"> 25 <apex:relatedList subject="{!account}" 26 list="OpenActivities" /> 27 </apex:tab> 28 <apex:tab label="Notes and Attachments" 29 name="NotesAndAttachments" id="tabNoteAtt"> 30 <apex:relatedList subject="{!account}" 31 list="CombinedAttachments" /> 32 </apex:tab> 33 </apex:tabPanel> 34</apex:page> - Notice that there is no data in the Account page. You need to specify the ID of a
particular account in the URL, as you've done with previous pages, for example,
https://Salesforce_instance/apex/tabbedAccount?id=001D000000IRt53. After you
add in an account ID, your page should display as follows:
Things to note about the page markup:
- <style> is actually part of CSS markup, not Visualforce markup. It defines the styles for two types of tabs: activeTab and inactiveTab.
-
<apex:tabPanel> is used to generate the
tabs. Notice how it uses the following attributes:
- tabClass attribute: specifies the style class used to display a tab when it is active.
- inactiveTabClass attribute: specifies the style class used to display a tab when it is inactive.
- Within the definition of the tab panel, is the definition of each child tab component,
<apex:tab>. The first tab uses the
<apex:detail> tag to return that portion
of the detail view for the
page:
1<apex:tab label="Details" name="AccDetails" id="tabdetails"> 2 <apex:detail relatedList="false" title="true"/> 3 </apex:tab>While the rest of the tabs use the <apex:relatedList> to specify the different parts of the account page. The following is the tab for contacts. It uses an existing list of contacts.1<apex:tab label="Contacts" name="Contacts" id="tabContact"> 2 <apex:relatedList subject="{!account}" list="contacts" /> 3 </apex:tab>
Now that you've created a page to display an account with tabs, you can use this page to
override the detail view for all accounts.
- From the object management settings for accounts, go to Buttons, Links, and Actions.
- Click Edit next to View.
- In the Salesforce Classic section, select Visualforce page.
- From the Visualforce page drop-down list, select tabbedAccount.
- Click Save.
Click the Account tab, and select any account. The detail for the account is now displayed with tabs.