Managing content¶
Locations¶
You can manage Locations that hold content
using LocationService
.
Adding a new Location to a Content item¶
Every published Content item must have at least one Location. One Content item can have more that one Location, which means it is presented in more than one place in the content tree.
Creating a new Location, like creating content, requires using a struct, because a Location value object is read-only.
To add a new Location to existing content you need to create
a LocationCreateStruct
and pass it to the LocationService::createLocation
method:
1 2 3 |
|
LocationCreateStruct
must receive the parent Location ID.
It sets the parentLocationId
property of the new Location.
You can also provide other properties for the Location, otherwise they will be set to their defaults:
1 2 |
|
Changing the main Location¶
When a Content item has more that one Location, one Location is always considered the main one.
You can change the main Location using ContentService
,
by updating the ContentInfo
with a ContentUpdateStruct
that sets the new main Location:
1 2 3 4 |
|
Hiding and revealing Locations¶
To hide or reveal (unhide) a Location you need to make use of
LocationService::hideLocation
or LocationService::unhideLocation
:
1 2 |
|
See Location visibility for detailed information on the behavior of visible and hidden Locations.
Deleting a Location¶
You can remove a Location either by deleting it, or sending it to Trash.
Deleting makes use of LocationService::deleteLocation()
.
It permanently deletes the Location, together with its whole subtree.
Content which has only this one Location will be permanently deleted as well. Content which has more Locations will be still available in its other Locations. If you delete the main Location of a Content item that has more Locations, another Location will become the main one.
1 |
|
To send the Location and its subtree to Trash,
use TrashService::trash
.
Items in Trash can be later restored, or deleted permanently.
1 |
|
Moving and copying a subtree¶
You can move a Location with its whole subtree using LocationService::moveSubtree
:
1 2 3 |
|
LocationService::copySubtree
is used in the same way,
but it copies the Location and its subtree instead of moving it.
Tip
To copy a subtree you can also make use of the built-in copy-subtree
command:
bin/console ezplatform:copy-subtree <sourceLocationId> <targetLocationId>
.
Note
Copy subtree limit only applies to operations in the Back Office. It is ignored when copying subtrees using the PHP API.
Trash¶
To empty the Trash (remove all Locations in Trash), use TrashService::emptyTrash
,
which takes no arguments.
You can recover an item from Trash using TrashService::recover
.
You must provide the method with the ID of the object in Trash.
Trash Location is identical to the origin Location of the object.
1 |
|
The Content item will be restored under its previous Location. You can also provide a different Location to restore in as a second argument:
1 2 |
|
Content Types¶
Creating Content Types¶
To operate on Content Types, you need to make use of ContentTypeService
.
Creating a new Content Type, like creating content, must happen with the use of a struct, because a Content Type value object is read-only.
In this case you use ContentTypeCreateStruct
.
A Content Type must have at least one name, in the main language, and at least one Field definition.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
|
You can specify more details of the Field definition in the create struct, for example:
1 2 3 4 5 6 7 8 9 |
|
Copying Content Types¶
To copy a Content Type, use ContentTypeService::copyContentType
:
1 |
|
The copy will automatically be given an identifier based on the original Content Type identifier
and the copy's ID, for example: copy_of_folder_21
.
To change the identifier of the copy, use a ContentTypeUpdateStruct
:
1 2 3 4 5 |
|