Static resources#
We often want to ship a website with a static resource, such as an image, icon, CSS, or JavaScript file. For this, we need to register static resources.
See also
For some additional implementation information, see Theme.
Registering JavaScript and CSS#
To register a static resource in Plone 6, we need to use the plone.base.interfaces.resources.IBundleRegistry
interface.
The following example registers a JavaScript resource in browser/profiles/default/registry
of your Plone 6 project.
The JavaScript files have to be in the browser/static
folder of your Plone 6 project.
<registry>
<records interface="plone.base.interfaces.resources.IBundleRegistry" prefix="plone.bundles/jscript">
<value key="enabled">True</value>
<value key="jscompilation">++plone++myproject.site/javascript.min.js</value>
<value key="load_async">False</value>
<value key="load_defer">False</value>
<value key="depends">plone</value>
</records>
</registry>
You can register a CSS resource in the same way.
<registry>
<records interface="plone.base.interfaces.resources.IBundleRegistry" prefix="plone.bundles/css">
<value key="enabled">True</value>
<value key="csscompilation">++plone++myproject.site/style.min.css</value>
<value key="depends">plone</value>
</records>
</registry>
Registering a JavaScript file and a CSS file in the same bundle is also possible.
<registry>
<records interface="plone.base.interfaces.resources.IBundleRegistry" prefix="plone.bundles/css">
<value key="enabled">True</value>
<value key="csscompilation">++plone++myproject.site/style.min.css</value>
<value key="jscompilation">++plone++myproject.site/javascript.min.js</value>
<value key="load_async">False</value>
<value key="load_defer">False</value>
<value key="depends">plone</value>
</records>
</registry>
Available attributes#
The following attributes are available for registering a static resource:
enabled
Whether the bundle is enabled or not. If it is disabled, the bundle will not be loaded.
jscompilation
The path to the compiled JavaScript file.
csscompilation
The path to the compiled CSS file.
depends
A list of bundles that this bundle depends on.
load_async
Whether the bundle should be loaded asynchronously or not. Only JavaScript
load_defer
Whether the bundle should be loaded deferred or not. Only JavaScript
Loading order of resources#
depends
is used to define the loading order of resources by specifying the name of the depending bundle.