您的位置:首页 > 其它

在Salesforce页面布局中添加Visualforce Pages项 - 自定义标准页面 + 获取富文本字段的图片Url

2017-12-18 15:29 1021 查看
场景描述:很多时候,标准的功能并不能完全满足业务需求,完全开发一个新的页面显得有点多余,所以就有了在标准页面上嵌套自定义内容(page/component)的需要。

下面我们将围绕上述场景作详细解释:

Q1、有什么开关可以让Visualforce Pages显示在Page Layout侧边栏吗,就像下图所示?



A:开关就是需要一个含有standardController的page即可,如下:



Q2、实际开发时有哪些注意事项?

A:1、相关User的简档必须有该page/apex的访问权限;2、自定义页面中展示的字段如果包含关系对象的字段,该User需要有该记录的访问权限,需要考虑RLS;3、如果想展示一张关系字段的图片(富文本),这时如果采取此策略,frame的大小控制会比较困难,背景色的设置会比较困难。

2和3分别如下图:





上述问题解决方案补充:最佳实践是单独开一个section,然后设置为一行显示,同时在该section点击小扳手设置宽度比例和高度,效果就会更棒!



下面是在富文本字段中取img的url的controller:

public class ACC_PromotionEventExtension {
public String imgUrl{get;set;}
private final Event event;
public ACC_PromotionEventExtension(ApexPages.StandardController stdController) {
this.event = (Event)stdController.getRecord();
System.debug('event: ' + event);
String promotionId = [SELECT WhatId FROM Event WHERE Id = :event.Id LIMIT 1].WhatId;
ACC_Promotion__c promotion = [SELECT Id, ACC_Promotion_Image__c FROM ACC_Promotion__c WHERE Id = :promotionId LIMIT 1];
System.debug('RichField: ' + promotion.ACC_Promotion_Image__c);
if(promotion.ACC_Promotion_Image__c != null) {
String firstSubString = promotion.ACC_Promotion_Image__c.substringBetween('<img', 'img>');
System.debug('First substring: ' + firstSubString);
String secondSubString = firstSubString.substringBetween('src="', '"');
System.debug('Second substring: ' + secondSubString);
String link = secondSubString.replace('amp;', '');
System.debug('Link: ' + link);
imgUrl = link;
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: