2011-11-02 2 views
0

맞춤 아이콘을 추가하고 싶은 웹 파트가 있습니다. 웹 파트 스키마에서 CatalogIconImageUrl 속성을 사용하고 있습니다 (값이 _catalogs/masterpage/MyFolder/MyWebPartResources/MyWebPart_16x16.png라고 가정 해 봅시다).CatalogIconImageUrl - 개인 SP 사이트에서 맞춤 아이콘이 제대로 작동하지 않습니다.

개발 사이트에 웹 파트를 배포하면 경로가 올바르게 검색됩니다.

그러나 웹 파트를 다중 계층 사이트에 배포하는 경우에는 URL을 찾지 못합니다. 예를 들어 http://mysitecollection/SitePages/ 또는 개인 SP 사이트와 같은 사이트 모음에 웹 파트를 배포하려는 경우 http://mysitecollection/my/personal/UserName/

이 문제가 있습니까?

답변

3

chris_walker가이 도움을 제공해주었습니다.

필자는이 기능에 이벤트 수신기를 추가했습니다. 그런 다음 필자는 기능 활성화 메서드에서 웹 응용 프로그램 루트를 검색했습니다. 마지막으로 txt 파일로 webpart 스키마를 열고 하나의 키워드 (~ sitecollection)를 실제 사이트 모음 URL로 바꿨습니다.

public class WebPartEventReceiver : SPFeatureReceiver 
{ 
    public override void FeatureActivated(SPFeatureReceiverProperties properties) { 
     SPSite site = properties.Feature.Parent as SPSite; 
     if (site != null) { 
      SPList webPartsGallery = site.GetCatalog(SPListTemplateType.WebPartCatalog); 
      SPListItemCollection allWebParts = webPartsGallery.Items; 
      SPListItem webPart = (from SPListItem wp in allWebParts where wp.File.Name == "your.webpart" select wp).SingleOrDefault(); 
      if (webPart != null) { 
       string siteCollectionUrl = site.ServerRelativeUrl; 
       if (!siteCollectionUrl.EndsWith("/")) { siteCollectionUrl += "/"; } 
       string fileContents = Encoding.UTF8.GetString(webPart.File.OpenBinary()); 
       fileContents = fileContents.Replace("~sitecollection/", siteCollectionUrl); 
       webPart.File.SaveBinary(Encoding.UTF8.GetBytes(fileContents)); 
      } 
     } 
    } 
관련 문제