【问题标题】:CatalogIconImageUrl - custom icon not working properly with personal SP sitesCatalogIconImageUrl - 自定义图标无法在个人 SP 网站上正常工作
【发布时间】:2011-11-09 19:59:12
【问题描述】:

我有一个要添加自定义图标的 Web 部件。我在 Web 部件架构中使用 CatalogIconImageUrl 属性(假设值为 _catalogs/masterpage/MyFolder/MyWebPartResources/MyWebPart_16x16.png)。

如果我将 Web 部件部署到我的开发站点,它会正确找到路径。

但是,如果我将 Web 部件部署到多层站点,它只是找不到 URL。例如,如果我将 Web 部件部署到像 http://mysitecollection/SitePages/ 这样的网站集或像 http://mysitecollection/my/personal/UserName/ 这样的个人 SP 网站

有解决办法吗?

【问题讨论】:

    标签: sharepoint custom-controls web-parts


    【解决方案1】:

    chris_walker 为我提供了帮助。

    我已向该功能添加了一个事件接收器。之后,我在 Feature Activated 方法中检索了 Web 应用程序根目录。最后,我将 webpart 架构作为 txt 文件打开,并将一个关键字 (~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));
                }
            }
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-13
      • 2014-06-10
      • 2022-08-18
      • 1970-01-01
      • 1970-01-01
      • 2011-06-13
      • 1970-01-01
      • 2018-02-17
      相关资源
      最近更新 更多