Страницы с тегами : managed metadata
Развертывание полей таксономии в SharePoint
Поля таксономии, также известные как поля управляемых метаданных (managed metadata), появились в SharePoint 2010. Метаданные позволяют создавать иерархии терминов, которые можно использовать как справочные значения (c typeahead в UI) и, начиная с SharePoint 2013, для навигации.
Метаданные поддерживают множество языков, синонимы и дополнительные свойства. Можно организовать навигацию по метаданным в библиотеке или фильтрацию по поддереву в поиске SharePoint.
И все было бы прекрасно, но развернуть в составе WSP пакета поле метаданных в списке – очень нетривиальная задача. Можно конечно сделать с помощью кода, некоторые даже очень любят этот подход, но в большом масштабе будет много копипасты и статический анализ делать гораздо сложнее.
Если деплоить с помощью CAML, то возникает две проблемы, но об этом по порядку
Проблема первая – схема поля
Если вы погуглите, то найдете минимум четыре статьи как деплоить таксономические поля:
- http://www.sharepointconfig.com/2011/03/the-complete-guide-to-provisioning-sharepoint-2010-managed-metadata-fields/
- http://www.instantquick.com/index.php/correctly-provisioning-managed-metadata-columns?c=elumenotion-blog-archive/random-whatnot
- http://magenic.com/Blog/CorrectlyProvisioningManagedMetadataTaxonomyF
- http://www.wictorwilen.se/Post/How-to-provision-SharePoint-2010-Managed-Metadata-columns.aspx
Все рецепты приведут к неверному результату. Ближе всех к правде оказался последний пост, но и в нем есть проблемы.
Ни в одном посте не указано как поле попадает в список. А именно от этого зависит как поле будет работать. В прошлом посте я писал, что методы полей срабатывают, только если используется ContenTypeRef в схеме List Definition. Эти методы выполняют много работы – добавляют поля в список, привязывают event receiver_ы для синхронизации значений полей таксономии и catchall поля.
Итак правильная схема таксономического поля:
<Field ID="{defbf0ed-377a-4e62-a980-0493ac0ef42e}" Name="TaxonomyColumn" DisplayName="Taxonomy Column" Type="TaxonomyFieldType" Required="FALSE" Group="Custom Site Columns" DisplaceOnUpgrade="TRUE" Overwrite="TRUE" > </Field>