Я определил тип содержимого «связанные ссылки» и установил Inherits = «False» и добавил строку для удаления поля «title» из коробки, так как я не хочу, чтобы оно отображалось в представлении или новом/ edit / display формы, см. (ОПЦИЯ 1) в CAML ниже.
<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<!-- ===== Fields ===== -->
<!-- Link Category -->
<Field DisplayName="Link Category"
Name="LinkCategory"
ID="{654EAC00-342B-4176-9D91-613AD724F684}"
Group="Custom"
Overwrite="True"
Type="Lookup"
ShowField="Title"
List="Lists/LinkCategoryList"
WebId="~sitecollection" />
<!-- ===== Content Type ===== -->
<!--
Related Links
- Parent ContentType: Item (0x01)
-->
<ContentType Name="Related Links"
ID="0x0100c11a1db14e564574bc49a2aa9bf325d3"
Group="Custom"
Description=""
Inherits="False"
Version="0">
<FieldRefs>
<!-- Title (OPTION 1) -->
<RemoveFieldRef ID="{fa564e0f-0c70-4ab9-b863-0177e6ddd247}" />
<!-- (OPTION 2)
<FieldRef ID="{fa564e0f-0c70-4ab9-b863-0177e6ddd247}"
Hidden="TRUE" Required="FALSE" DisplayName="_hidden" />
-->
<!-- Link Category -->
<FieldRef DisplayName="Link Category"
Name="LinkCategory"
ID="{654EAC00-342B-4176-9D91-613AD724F684}"
Required="True" />
</FieldRefs>
</ContentType>
</Elements>
Это удаляет поле 'title' из типа контента, но когда я пытаюсь связать тип контента со списком, это делаетне отображать поле 'LinkCategory' в представлении или новых / редактировать / отображать формы.Почему это так?
<?xml version="1.0" encoding="utf-8"?>
<List xmlns:ows="Microsoft SharePoint"
Title="Related Links"
FolderCreation="FALSE"
Direction="$Resources:Direction;"
Url="Lists/RelatedLinksListDefinition"
BaseType="0"
EnableContentTypes="True"
xmlns="http://schemas.microsoft.com/sharepoint/">
<MetaData>
<ContentTypes>
<!-- Related Links -->
<ContentTypeRef ID="0x0100c11a1db14e564574bc49a2aa9bf325d3" />
</ContentTypes>
<Fields>
</Fields>
<Views>
<View ...etc...>
<ViewFields>
<FieldRef Name="LinkCategory"></FieldRef>
</ViewFields>
<Query>
<OrderBy>
<FieldRef Name="ID"></FieldRef>
</OrderBy>
</Query>
</View>
</Views>
<Forms>
<Form Type="DisplayForm" Url="DispForm.aspx"
SetupPath="pages\form.aspx" WebPartZoneID="Main" />
<Form Type="EditForm" Url="EditForm.aspx"
SetupPath="pages\form.aspx" WebPartZoneID="Main" />
<Form Type="NewForm" Url="NewForm.aspx"
SetupPath="pages\form.aspx" WebPartZoneID="Main" />
</Forms>
</MetaData>
</List>
В качестве обходного пути я установил Inherits = "True" для типа контента и использовал (ВАРИАНТ 2) в типе контента CAML, который скрывает поле 'title',но очень хотел бы понять, что здесь происходит и какой лучший подход выбрать.Заранее спасибо!
PS: у этого поста есть похожий вопрос: SharePoint 2010: RemoveFieldRef and Inherits = "TRUE"
PSS: при просмотре через SP Manager 2010 послепри развертывании с использованием ВАРИАНТА 1 я получаю следующее:
- Поле «Категория ссылки» создано правильно
- Тип содержимого «Связанные ссылки» создан правильно с полем «Категория ссылки»
- Список «Связанные ссылки» создан с типом контента «Связанные ссылки»
- Однако в списке «Связанные ссылки» нет ссылки на поле «Категория ссылок».