SharePoint 2010 - Как мы можем получить имя шаблона списка из списка, если список создается из ListTemplate

Мы создали несколько шаблонов списков в sharepoint и создали списки с использованием шаблонов списков. Вот пример,

ListTemplates

  1. ListTemplate1
  2. ListTemplate2
  3. ListTemplate3

Списки созданы следующим образом,

List1 создан с использованием ListTemplate1
List2 создан с использованием ListTemplate2
List3 создан с использованием ListTemplate3

И позже пользователь создал List4, используя ListTemplate1,

Сейчас мы пытаемся определить, какой список создан по какому шаблону. Но мы не смогли правильно определить шаблон списка. Он всегда присутствует как ListTemplate1 в нескольких коллекциях сайтов, ListTemplate2 - это несколько семейств сайтов.

Может ли кто-нибудь помочь мне получить правильное имя списка шаблонов?

Ниже приведен код Powershell, который я использовал, чтобы получить шаблон списка для определенного списка.

$sourceWebURL = "WebUrl"
$sourceListName = "listname"

$spSourceWeb = Get-SPWeb $sourceWebURL
$spSourceList = $spSourceWeb.Lists[$sourceListName]
$spSourceList.TemplateFeatureId

2 ответа

Пример сценария, чтобы получить имя шаблона для вашей справки.

$sourceWebURL = "http://sp10/"
$sourceListName = "ListBasedonTemplate1"

$spSourceWeb = Get-SPWeb $sourceWebURL
$spSourceList = $spSourceWeb.Lists[$sourceListName]
$spSourceList.TemplateFeatureId
$listTemplate=$spSourceWeb.Site.GetCustomListTemplates($spSourceWeb) | ? {$_.FeatureId -eq $spSourceList.TemplateFeatureId}
$listTemplate[0].Name

Пожалуйста, попробуйте этот подход, в моем случае он вернул правильные шаблоны списка



    if ((Get-PSSnapin "Microsoft.SharePoint.PowerShell" -ErrorAction SilentlyContinue) -eq $null) {
        Add-PSSnapin "Microsoft.SharePoint.PowerShell";
    }

    $_URL = "URL";
    $SPWeb = Get-SPWeb $_URL;

    $SPList = $SPWeb.Lists["LIST_NAME"];
    $listTemplate = $SPWeb.ListTemplates | ? {$_.FeatureId -eq $SPList.TemplateFeatureId};
    $listTemplate.Name;
    $listTemplate.FeatureId;

дайте мне знать, если это поможет

* ОБНОВЛЕНИЕ * вот небольшой скрипт для получения всех шаблонов из сети



     if ((Get-PSSnapin "Microsoft.SharePoint.PowerShell" -ErrorAction SilentlyContinue) -eq $null) {
        Add-PSSnapin "Microsoft.SharePoint.PowerShell";
    }

    $_URL = "[URL]";
    $SPWeb = Get-SPWeb $_URL;

    foreach($templates in $SPWeb.ListTemplates){
        $templates.Name;
        $templates.FeatureId;
        $templates.InternalName;
        $templates.SchemaXml;
    }

Что вы можете сделать, это проверить, если, возможно, нет свойства (проверьте также другие реквизиты, не только те, которые я упоминаю в скрипте, вы всегда можете просто проверить объект $ tempplate, чтобы получить все) для этих 3 шаблонов, которые у вас есть. Возможно, FeatureId такой же, но проверьте также FeatureId в SchemaXml, может быть, он другой. Если все свойства одинаковы, то вы можете обновить свойство 'description' для первого шаблона с помощью этого featureId, например 'temp1', а второго - со значением 'temp2' и так далее. После этого Вы можете проверить, имеет ли шаблон, который Вы получаете из списка, всегда то же самое описание. Вероятно, это будет то же самое, если да, то мой следующий подход будет состоять в том, чтобы попытаться обновить featureId, но имейте в виду, что это скорее не рекомендуемый подход и может привести к некоторым ошибкам. Возможно, лучшей идеей будет попытаться воспроизвести ошибку в какой-либо среде разработчика и попытаться исправить ее, изменив featureId.

Также вы можете проверить SPExport и SPImport в списке, чтобы попытаться экспортировать эти списки и импортировать их в какую-то среду разработки и попытаться решить эту проблему там.

Другие вопросы по тегам