この記事の目次
Salesforceにおけるサイトとは?
![](https://b-engineer-media-cms.s3.amazonaws.com/item/image/user/8c7f204d9ede4027afb1e4450514b993d07cd4a1/660227e9-6a91-4eeb-9c7a-32517e6a6ec4.jpg)
Salesforceのサイトの概要
![](https://b-engineer-media-cms.s3.amazonaws.com/item/image/user/5e9e289364bb3ddfa01b2e7a2998e19f5b1eaf36/065316f3-57ed-4e3d-9ee4-7d5f7ba7eedf.jpg)
サイトの設定方法
Salesforceのサイトの設定方法にはいくつかの方法があります。ひとつは、Apexを利用してサイトを設定する方法と、Site.comなどを利用して画面から作成する方法です。 ApexからSalesforceのサイトを設定する方法は、サンプルコードを用いて設定方法を説明します。画面より設定する方法は、例を用いながら説明します。Apexでコードを作成する方法や画面から作成する方法を参考にしてみてください。 画面から作成する方法はサイトのデザインを確認しながらSalesforceのサイトを作ることができます。Salesforceのサイト設定は、方法がさまざまなので、自分に合った方法、ツールを見つけるといいでしょう。画面から設定
Salesforceのサイトを画面から設定します。Site.comを使用した場合の方法をご紹介します。 最初は個人情報の画面から「Site.com Contributor ユーザ」や「Site.com Publisher ユーザ」と書いてあるチェックボックスにチェックしましょう。Salesforceのサイトを作成するのに簡単な例を用いて説明します。ヘッダ、フッタ、サイドバーのあるサイトです。ヘッダとフッタの作成方法
サイトのテンプレートを作成でのヘッダとフッタについて説明します。まず、サイトのテンプレートを用意します。ページテンプレートを選択して、「新規ページテンプレート」ボタンをクリックしましょう。ページ名を入力してレイアウトを決めます。 エディタ画面が開き、左にあるサイドバーから「カスタムコード」を選択し、編集画面のヘッダ部分にドラッグしましょう。ドロップ後にコード編集をするコードが表示されます。HTMLで直接編集することも可能です。 フッタの編集は、左にあるサイドバーから「コンテンツブロック」を選択し、編集画面のフッタ部分にドラッグします。コンテンツブロックはリッチテキストエディタを使っているので、HTMLを使用せずに編集が可能です。フッタとメニューの作成方法
Salesforceのサイトのメニュー作成について説明します。 メニューに関しては、左のサイドバーから「メニュー」を選択し、編集画面のメニューを作成したいに移動させます。メニューは登録されている画面から自動的に作り出されるため、編集中はページがないので、表示されません。 最後に編集画面の右側を右クリックし、「編集可能にする」にチェックをつけます。編集可能にすることによって、指定した部分に各ページのコンテンツ内容を見ることができるようになります。 Salesforceのサイト作成のテンプレートが1ページ完成しました。他のページも同様に作成します。ページ作成とプレビュー
ページの作成方法とプレビューについて説明します。概要タブに戻り、サイトページを選択し、新規ボタンで「サイトページ」を選択しましょう。ページ名を入力し、最初に作成したテンプレートを選びます。 作成したテンプレートは右にあるパネルだけで編集が可能です。概要ページや製品ページ、提携企業の情報など作りたいページに合わせて編集します。ページが完成したら、プレビューでページを確認します。 概要に戻り、上の方にあるプレビューボタンをクリックしましょう。プレビューが無効になっている場合は、「匿名プレビューを有効化」を選択します。その後に「匿名プレビューを表示」を選択し、プレビューでSalesforceのサイトを確認しましょう。 問題がなければ、Salesforceのドメインを追懐します。ドメインを作成したサイトに当てはめ、サイトを公開して完成です。ApexでサイトURLを書き換える
Apexを用いたURLの書き換えを含む管理方法について説明します。作成されたApexクラスは、インターフェースを利用しましょう。サンプルコードは以下になります。 global class yourClass implements Site.UrlRewriter { global PageReference mapRequestUrl(PageReference yourFriendlyUrl) global PageReference[] generateUrlFor(PageReference[] yourSalesforceUrls); } SalesforceのサイトURLを書き換える場合は、$Pageマージ変数を含む!URLFOR関数を使用します。以下の例では、myPageというページにリンクさせます。SalesforceサイトのURLを追加する場合
ApexでサイトのURLを書き換えを追加する方法を説明します。Salesforceでサイトの書き換えを追加する場合は、「設定」から検索ボックスに「サイト」と入力し、「サイト」という項目を選択しましょう。 新しくサイトを作成するならば「新規」、サイトを編集するのであれば「編集」を選択して「サイトの編集」ページで、「URL書き換えクラス」の「Apexクラス」をクリックし保存するのです。 確認の際は実際にサイトを開き、URLを確認します。サンプルコードは以下になります。<apex:page standardController=""Account"">
<apex:detail relatedList=""false""/>
</apex:page>
<apex:page standardController=""contact"">
<apex:pageBlock title=""Parent Account"">
<apex:outputLink value=""{!URLFOR($Page.mycontact,null,
[id=contact.account.id])}"">{!contact.account.name}
</apex:outputLink>
</apex:pageBlock>
<apex:detail relatedList=""false""/>
</apex:page>
global with sharing class myRewriter implements Site.UrlRewriter {
//Variables to represent the user-friendly URLs for
//account and contact pages
String ACCOUNT_PAGE = '/myaccount/';
String CONTACT_PAGE = '/mycontact/';
//Variables to represent my custom Visualforce pages
//that display account and contact information
String ACCOUNT_VISUALFORCE_PAGE = '/myaccount?id=';
String CONTACT_VISUALFORCE_PAGE = '/mycontact?id=';
global PageReference mapRequestUrl(PageReference
myFriendlyUrl){
String url = myFriendlyUrl.getUrl();
if(url.startsWith(CONTACT_PAGE)){
//Extract the name of the contact from the URL
//For example: /mycontact/Ryan returns Ryan
String name = url.substring(CONTACT_PAGE.length(),
url.length());
//Select the ID of the contact that matches
//the name from the URL
Contact con = [SELECT Id FROM Contact WHERE Name =:
name LIMIT 1];
//Construct a new page reference in the form
//of my Visualforce page
return new PageReference(CONTACT_VISUALFORCE_PAGE + con.id);
}
if(url.startsWith(ACCOUNT_PAGE)){
//Extract the name of the account
String name = url.substring(ACCOUNT_PAGE.length(),
url.length());
//Query for the ID of an account with this name
Account acc = [SELECT Id FROM Account WHERE Name =:name LIMIT 1];
//Return a page in Visualforce format
return new PageReference(ACCOUNT_VISUALFORCE_PAGE + acc.id);
}
//If the URL isn't in the form of a contact or
//account page, continue with the request
return null;
}
global List generateUrlFor(List
mySalesforceUrls){
//A list of pages to return after all the links
//have been evaluated
List myFriendlyUrls = new List();
//a list of all the ids in the urls
List accIds = new List();
// loop through all the urls once, finding all the valid ids
for(PageReference mySalesforceUrl : mySalesforceUrls){
//Get the URL of the page
String url = mySalesforceUrl.getUrl();
//If this looks like an account page, transform it
if(url.startsWith(ACCOUNT_VISUALFORCE_PAGE)){
//Extract the ID from the query parameter
//and store in a list
//for querying later in bulk.
String id= url.substring(ACCOUNT_VISUALFORCE_PAGE.length(),
url.length());
accIds.add(id);
}
}
// Get all the account names in bulk
List accounts = [SELECT Name FROM Account WHERE Id IN :accIds];
// make the new urls
Integer counter = 0;
// it is important to go through all the urls again, so that the order
// of the urls in the list is maintained.
for(PageReference mySalesforceUrl : mySalesforceUrls) {
//Get the URL of the page
String url = mySalesforceUrl.getUrl();
if(url.startsWith(ACCOUNT_VISUALFORCE_PAGE)){
myFriendlyUrls.add(new PageReference(ACCOUNT_PAGE + accounts.get(counter).name));
counter++;
} else {
//If this doesn't start like an account page,
//don't do any transformations
myFriendlyUrls.add(mySalesforceUrl);
}
}
//Return the full list of pages
return myFriendlyUrls;
}
}
Salesforceのサイトの注意点
![](https://b-engineer-media-cms.s3.amazonaws.com/item/image/user/9e08934fd24485c7d9e691a312f16a4ef7ff96eb/35243f00-6773-4465-8ac2-7ac2bb3bf90c.jpg)
Salesforceでサイトを活用しよう
![](https://b-engineer-media-cms.s3.amazonaws.com/item/image/user/9e08934fd24485c7d9e691a312f16a4ef7ff96eb/112dc251-2bba-4f58-83a0-712b3bbf922e.jpg)
この記事の監修者・著者
![株式会社オープンアップITエンジニア](https://tenshoku-careerchange.jp/wp-content/uploads/2023/07/fzxADbr-_400x400-1-150x150.jpg)
-
未経験からITエンジニアへのキャリアチェンジを支援するサイト「キャリアチェンジアカデミー」を運営。これまで4500人以上のITエンジニアを未経験から育成・排出してきました。
・AWS、salesforce、LPICの合計認定資格取得件数:2100以上(2023年6月時点)
・AWS Japan Certification Award 2020 ライジングスター of the Year 受賞
最新の投稿
- 2024年3月26日キャリア・転職保安職(自衛官・警察・消防官など)に向いている人の性格・特徴ランキング【現役保安職(自衛官・警察・消防官など)36人が回答】
- 2024年3月26日キャリア・転職保安職(自衛官・警察・消防官など)に必要なスキルランキング&スキルアップの方法とは?【現役保安職(自衛官・警察・消防官など)36人が回答】
- 2024年3月26日キャリア・転職クリエイター職(ライター・デザイナー・編集)に向いている人の性格・特徴ランキング【現役クリエイター職(ライター・デザイナー・編集)64人が回答】
- 2024年3月26日キャリア・転職クリエイター職(ライター・デザイナー・編集)に必要なスキルランキング&スキルアップの方法とは?【現役クリエイター職(ライター・デザイナー・編集)64人が回答】