Почему эта функция сайта не активирована, когда я создаю новый сайт по моим пользовательским веб-шаблонам?

sharepoint.stackexchange https://sharepoint.stackexchange.com//questions/64431

  •  10-12-2019
  •  | 
  •  

Вопрос

Я использую SharePoint 2010 и VS2010.

Я создал пользовательские Webtemplates и начните с копии командного сайта.В моем onet.xml я вижу следующие элементы функции сайта:

<SiteFeatures>
    <!-- BasicWebParts Feature -->
    <Feature ID="00BFEA71-1C5E-4A24-B310-BA51C3EB7A57" />
    <!-- Three-state Workflow Feature -->
    <Feature ID="FDE5D850-671E-4143-950A-87B473922DC7" />
  </SiteFeatures>
.

Я создал новую коллекцию сайта с шаблона сайта "Опубликовать сайт" Я развернул свой пользовательский веб-шаблон к этой коллекции сайта. Я создаю новый сайт и выберите мой пользовательский веб-шаблон. Я получил некоторую ошибку: «Шаблон сайта требует, чтобы функция FDE5D850-671E-4143-950A-87B473922DC7 будет активирована в коллекции сайта»

Когда я перехожу на объект коллекции сайта и включить эту функцию «Трехгородный рабочий процесс: FDE5D850-671E-4143-950A-87B473922DC7» работает.

Но я не понимаю, почему мне нужно сделать это руководство ??В моем ONET.xml моего пользовательского веб-шаблона я объявил эту функцию, которая будет активирована в элементе сайта.

Это было полезно?

Решение

файл onet.xml разделен на две части, сначала - это «сайты», а второй называется «WebFeatures». Раздел «SiteFeatures», который содержит функции сайта, начинает активировать все функции только при создании коллекции сайта. Раздел «WebFeatures», которые удерживают веб-функции, начинает активировать все функции Scoped только при создании сайта (например, вы пытались).

Решение для запуска функции сбора сайта, используя функцию SEAP SCOPED.

Шаги:

A) Создать пустую функцию Scoped Web, и в событии «FEUREACTIVED» добавьте следующий код.

  public override void FeatureActivated(SPFeatureReceiverProperties properties)
        {
            try
            {
                //Ensure that scope is correctly set
                if (properties.Feature.Parent is SPWeb)
                {
                    SPWeb web = (SPWeb)properties.Feature.Parent;


                    foreach (SPFeatureProperty property in properties.Feature.Properties)
                    {
                        Guid featureGuid = new Guid(property.Value);
                        //Verify feature status
                        SPFeature feature = web.Site.Features[featureGuid];
                        if (feature == null)
                        {
                            //Activate site collection scoped feature, if requested and not currently activated
                            web.Site.Features.Add(featureGuid);
                        }
                    }
                }
            }
            catch (Exception ex)
            {}
        }
.

b) в файле onet.xml в узле "webfeature" Добавьте следующий XML

 <WebFeatures>
       <!-- Custom Site collection scoped feature activation -->
        <Feature ID="YourEmptyFeatureGuid">
          <Properties xmlns="http://schemas.microsoft.com/sharepoint/">
            <Property Key="SiteScopedGUID" Value="FDE5D850-671E-4143-950A-87B473922DC7"/>
          </Properties>
        </Feature>
 </WebFeatures>
.

    .
  • в элементе ID функции Добавить идентификатор пустой функции
  • в клавише свойства="Sitescopedguid" элемент в значении Добавьте идентификатор функции сайта, который вы хотите активировать.

    Вот это. Разверните ваше решение, и он должен работать.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с sharepoint.stackexchange
scroll top