Know Your 12 Hive – fields and ctypes

The 12 hive contains a wealth of information for the intrepid SharePoint developer. It is located on the disk at Program FilesCommon FilesMicrosoft Sharedweb server extensions12. All of the features installed on a given SharePoint server are located within the 12 Hive in the TEMPLATEFEATURES folder.

This example comes from a WSS install a MOSS server has many more features.

The two highlighted folders in the picture above are the features that implement the global site columns and field types available on every SharePoint site. The reason they are always available is that they are activated by the GLOBAL site definition and the GLOBAL site definition is always applied to every new site before the specific site definition’s instructions.

Here is a snippet of the piece of GLOBAL ONET.xml file that activates these two features. You can find it in the 12 hive too! It’s at TEMPLATEGLOBALXML.


 

<SiteFeatures>

<!– Fields –>            

<Feature ID="CA7BD552-10B1-4563-85B9-5ED1D39C962A" />

<!—ctypes –>

<Feature ID="695B6570-A48B-4A8E-8EA5-26EA7FC1D162" />

</SiteFeatures>

This means that you can safely assume that the columns and content types defined by these features are always available for your own use.

These files make great references when you begin creating your own field (site column) features and content types. This is especially true of content types because you can get the ID’s of any of the common fields directly from the field feature’s element manifest, fieldswss.xml.

For example, say you need to know the ID of the Comments site column. It’s right there in fieldswss.xml!

Want to create your own content type? Navigate in the 12 hive to TEMPLATEFEATURESctypes and open ctypeswss.xml.

Here is a bit of this file that shows the definition of the XMLDocument content type:

<ContentType ID="0×010101"

Name="$Resources:XMLDocument"

Group="$Resources:Document_Content_Types"

Description="$Resources:XMLDocumentCTDesc"

V2ListTemplateName="xmlform"

Version="0">

<FieldRefs>

<RemoveFieldRef ID="{fa564e0f-0c70-4ab9-b863-0177e6ddd247}" Name="Title" />

<FieldRef ID="{5d36727b-bcb2-47d2-a231-1f0bc63b7439}" Name="RepairDocument" />

<FieldRef ID="{11851948-b05e-41be-9d9f-bc3bf55d1de3}" Name="ShowRepairView" />

<FieldRef ID="{4b1bf6c6-4f39-45ac-acd5-16fe7a214e5e}" Name="TemplateUrl" />

<FieldRef ID="{cd1ecb9f-dd4e-4f29-ab9e-e9ff40048d64}" Name="xd_ProgID" />

</FieldRefs>

</ContentType>

You can tell from the ContentType ID that this inherits from System (0x), Item (0×01), and Document (0×0101). You can also see that this type removes the Title field it inherited from Item using the RemoveFieldRef element.

  

Author: Doug Ware

Atlanta based entrepreneur, author of many SharePoint books and videos, leader of Atlanta .NET user group, founder of InstantQuick, and SharePoint MVP.

Comments are closed