Creating content¶
Note
Creating most objects will be impossible for an anonymous user. Make sure to authenticate as a user with sufficient permissions.
Content REST API
To learn how to create content items using the REST API, see REST API reference.
Creating content item draft¶
Value objects such as content items are read-only, so to create or modify them you need to use structs.
ContentService::newContentCreateStruct
returns a new ContentCreateStruct
object.
1 2 3 4 5 6 7 8 9 |
|
This command creates a draft using ContentService::createContent
(line 7).
This method must receive a ContentCreateStruct
and an array of Location structs.
ContentCreateStruct
(which extends ContentStruct
) is created through ContentService::newContentCreateStruct
(line 2),
which receives the content type and the primary language for the content item.
For information about translating a content item into other languages, see Translating content.
ContentStruct::setField
(line 3) enables you to define the Field values.
When the Field accepts a simple value, you can provide it directly, as in the example above.
For some Field Types, for example images, you need to provide an instance of a Value type.
Creating an image¶
Image Field Type requires an instance of its Value type, which you must provide to the ContentStruct::setField
method.
Therefore, when creating a content item of the Image type (or any other content type with an image
Field Type),
the ContentCreateStruct
is slightly more complex than in the previous example:
1 2 3 4 5 6 7 8 9 10 11 12 |
|
Value of the Image Field Type contains the path to the image file, as well as other basic information based on the input file.
Creating content with RichText¶
The RichText Field accepts values in a custom flavor of Docbook format. For example, to add a simple RichText paragraph, provide the following as input:
1 |
|
To learn more about the format and how it represents different elements of rich text, see RichText Field Type reference.
Publishing a draft¶
ContentService::createContent
creates a content item with only one draft version.
To publish it, use ContentService::publishVersion
.
This method must get the VersionInfo
object of a draft version.
1 |
|
Updating content¶
To update an existing content item, you need to prepare a ContentUpdateStruct
and pass it to ContentService::updateContent
.
This method works on a draft, so to publish your changes you need to use ContentService::publishVersion
as well:
1 2 3 4 5 6 7 8 |
|
Translating content¶
Content translations are created per version. By default every version contains all existing translations.
To translate a content item to a new language, you need to update it and provide a new initialLanguageCode
:
1 2 3 4 5 6 7 8 |
|
You can also update content in multiple languages at once using the setField
method's third argument.
Only one language can still be set as a version's initial language:
1 |
|
Deleting a translation¶
You can delete a single translation from a content item's version using ContentService::deleteTranslationFromDraft
.
The method must be provided with a VersionInfo
object and the code of the language to delete:
1 |
|