How can I add a new language to my site?

Adding a language to a site involves defining a new locale in the configuration of your site. For further details, see Enabling multilanguage content.

How can I export content from one environment to another?

You can use the Backup module to create a backup of content and configuration, which you can then restore on the new instance. See also How to replicate a public instance on the Magnolia Community Wiki.

In the context of Magnolia Cloud, you can copy content from one environment to another for testing purposes. See also Backing up and restoring in Magnolia Cloud.

How can I know if some content is served from the cache or not?

As a first step, you can check the Cache Tools app to see how many elements are in the cache. For a more detailed overview of cached objects, you can use the Cache Browser app.

For more details, see Cache Tools app and Cache Browser app.

How can I remove the site name from the URL (DX Core)?

Let’s say your site name is my-site-one and you want to access it via your own domain name my-domain.com. You probably do not want to have the site name in the URL like my-domain.com/my-site-one.

To avoid this, disable the uri-starts-with-sitename rule on the public instance in the definition of your site. For further details, see Managing cross-site access.

I cannot make a POST request to delivery endpoints. Why?

The delivery endpoints have been designed for tasks that need to obtain JCR data, so these endpoints only allow GET calls. If you need to manipulate JCR nodes or perform duties within the system, use one of the following endpoints: nodes, properties or commands.

I need a group of users to access only some specific apps. How can I do that?

You can control access to apps by listing a user role under the permissions node in the configuration of an app (see App permissions).

The permission to use an app can also be specified under the permissions node in the app descriptor when developing the app. This allows you to provision the app to certain users in your organization. For further details, see Permissions and Groups.

I need a user/role/group to edit only a tree of pages. How can I prevent access to other pages?

Use the Access control lists tab of the Security app. In an access control list, you can specify the type of access for any node or subnode in any workspace.

I would like to change an existing definition. How can I do that?

To change an existing definition, use the Definitions app to find and highlight the definition. In the action bar, you will see Show in Resources app or Show in Configuration app depending on the definition type. Click the action and edit the definition in the target location.

  • In the Resource Files app, you can fix the definition in the app or edit it on the file system.

  • In the Configuration app, you can edit the definition in the JCR.

For more information, see Resource Files app and Configuration app.

You can also change an existing definition by decorating it. For more details, see Definition decoration.

Is it possible to delete one workspace from the cache?

If you need to exclude content of a workspace from being cached, register the name of that workspace under the /modules/cache/config/contentCaching/defaultPageCache/flushPolicy/policies/flushAll/excludedWorkspaces node. By default, a workspace cache is flushed whenever some new or modified content is detected in it.

For further details, see Flush policy.

What are version handlers, and when should I use one?

A version handler is a Java class used to update the JCR during a module upgrade. It should be used to change any configuration that may have been bootstrapped during the initial installation or previous upgrade.

The related interface is info.magnolia.module.ModuleVersionHandler, which contains a series of tasks (deltas) executed during installation or during specific updates.

If your module needs to handle its own installation and updates you should provide an implementation of this interface.

Implementation examples

Module dependencies can be defined in an XML-based module descriptor as well as in a YAML-based descriptor.

For content bootstrapping strategies, see Bootstrapping strategy.

What can I decorate?

It is possible to decorate definitions such as app descriptors, dialogs, field types, media editors, message views, renderers and templates. Any definition bound to the registry can be decorated. You can see registered items in the Definitions app.

Decorated definitions can originate from any source, including the JCR, YAML files or even executable code like Blossom. However, you can only define decorators as well as decorate existing definitions via YAML.

For more details, see Definition decoration.

What can I define in light modules?

You can define a number of items in light modules using YAML. See What items can be defined in a light module?

Why should I use a prototype?

A prototype is an optional templating mechanism that offers a number of benefits. It ensures uniformity across templates, prevents repeating and duplicating configurations and creates similar templates quickly.

If you have a small number of templates that are very different from each other, using a prototype is probably not necessary. Creating a template prototype makes more sense for a very high number of templates that reuse a configuration. With a template prototype, the template configuration is more efficient as you only need to apply a configuration change once in the template prototype.

For more details, see Template prototype.

Why should I use image variations?

Variations are an effective alternative to resizing images with CSS. The main benefits of using image variations are:

  • Image size is reduced, and less data is transferred.

  • Editors can upload images of any size, which will automatically be resized to fit the template.

  • Image size is uniform throughout the site.

For more information, see Image variations.