sys:base
is defined in systemModel.xml
as follows (last HEAD revision showed here):
<type name="sys:base">
<title>Base</title>
<mandatory-aspects>
<aspect>sys:referenceable</aspect>
<aspect>sys:localized</aspect>
</mandatory-aspects>
</type>
Go through the systemModel
to learn about the two aspects that are mandatory for such type. cm:content
inherits indirectly from sys:base
, as you can see in the contentModel.xml
, passing through cm:object
that puts some constraints and indexing fairy powder onto it.
In the contentModel
, you can also see that cm:folder
exposes a new association named cm:contains
that target sys:base
objects. This means that within a cm:folder
(and subtypes) you can store every type in the hierarchy branch started by sys:base
, including cm:object
and cm:content
.
This should be already enough to show you how:
- to create containers that allow for specific child types
- there's no big difference between
cm:content
and sys:base
when it comes to storing such types in a cm:folder
- types are in a inheritance hierarchy, and as such you choose which type to inherit from depending on its properties and relationships with other entities in the repository
- if you want, you could inherit from
sys:base
instead of cm:content
or cm:object
, but then you'll miss all of the features introduced by those more high level types
I can't see why content types should change or affect the way users access content, especially if you have your own pages to show content to users.
As a side note, also usr:user
inherits from sys:base
, as you can see in the userModel.xml