You can set properties within the site category as required or read only. Using view mapping to set a property as required, add a required attribute and set the attribute to true. To set a property as read only set the isReadOnly property to true. The following is an example of both property specifications:

<!--You can define this once, and reuse it for any property that you want to mark
    as required-->

<add-item item-descriptor="propertyViewAttributeDefinition"
    id="SaPvRequiredTrue">
  <set-property name="defaultValue"><![CDATA[true]]></set-property>
</add-item>

<!-- Using Description as an example – note the required attribute, and
    the isReadOnly property-->
<add-item item-descriptor="propertyView" id="SaPvSiteDescription">
  <set-property name="name"><![CDATA[Site Description
    propertyView]]></set-property>
  <set-property name="description"><![CDATA[Site Description
    propertyView]]></set-property>
  <set-property name="mode"><![CDATA[AmMmDef]]></set-property>
  <set-property name="type"><![CDATA[string]]></set-property>
  <set-property name="viewComponent"><![CDATA[atg.editor.view
    property.DefaultEditor]]></set-property>
  <set-property name="isComponentPropertyView"><![CDATA[false]]>
    </set-property>
  <set-property name="isDefault"><![CDATA[false]]></set-property>
  <set-property name="isReadOnly"><![CDATA[true]]></set-property>
  <set-property name="attributes"><![CDATA
    [inputFieldMaxlength=AmPvadIntInputFieldMaxLength,
    inputFieldMaxWidth=AmPvadIntInputFieldMaxWidth,
    required=SaPvRequiredTrue]]></set-property>
</add-item>

Important: To configure a property, ATG best practices suggest that you add the properties in the view mapping, and not the repository. Any modifications to properties that you make in the repository will apply to all sites.