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

场景描述:很多时候,标准的功能并不能完全满足业务需求,完全开发一个新的页面显得有点多余,所以就有了在标准页面上嵌套自定义内容(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;
        }
    }

}

 

 

 

 

 

相关推荐
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页