Skip to content

Document how to disable diazo for ajax requests and completly. #1961

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 4 commits into
base: 6.0
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 41 additions & 0 deletions docs/classic-ui/theming/diazo.md
Original file line number Diff line number Diff line change
Expand Up @@ -176,3 +176,44 @@ For instance, you may need to put together the main menu, the language change, a
Sometimes it is easier to override the corresponding template in Plone, build the new HTML structure there, and replace one thing in the {file}`rules.xml` file than trying to write complex Diazo rules or writing XSLT.

The size of the {file}`rules.xml` file and the number of rules it contains can negatively impact the performance of your site.


### Disable Diazo for AJAX requests

When sending an AJAX request to normal browser views in Plone, Plone will respond with an HTML page which normally is also transformed via the Diazo theming engine.
In some cases this is an unnecessary overhead, if you only want to inject a small snippet of HTML into the page.
Comment on lines +183 to +184
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
When sending an AJAX request to normal browser views in Plone, Plone will respond with an HTML page which normally is also transformed via the Diazo theming engine.
In some cases this is an unnecessary overhead, if you only want to inject a small snippet of HTML into the page.
When sending an AJAX request to normal browser views in Plone, Plone prepares a response as an HTML page, then normally transforms it via the Diazo theming engine.
In some cases this is unnecessary overhead, such as when you want to inject a small snippet of HTML only into the page.


To prevent this transformation, disable AJAX requests for Diazo themes by using the `ajax_load` HTTP request parameter.
`ajax_load` is used in Plone to indicate AJAX requests.
When added to the query string, `ajax_load=1` disables a full page rendering, whereas `ajax_load=0` enables it.

````{versionadded} plonetheme.barceloneta 3.3.0
In Plone's standard theme plonetheme.barceloneta 3.3.0 the `ajax_load` theme parameter to disable Diazo was added.
If you use this theme, the next steps are obsolete.
````
Comment on lines +190 to +193
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
````{versionadded} plonetheme.barceloneta 3.3.0
In Plone's standard theme plonetheme.barceloneta 3.3.0 the `ajax_load` theme parameter to disable Diazo was added.
If you use this theme, the next steps are obsolete.
````
```{versionadded} plonetheme.barceloneta 3.3.0
In Plone Classic UI's standard theme, `plonetheme.barceloneta` version 3.3.0, the `ajax_load` theme parameter to disable Diazo was added.
If you use this theme version 3.3.0 or later, then the next steps are obsolete.
```

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@thet I'd say everyone uses this theme in Classic UI, so let's qualify it with the version number. I think this revision is correct, but please verify. Thank you!


Manually add the HTTP request parameter and its value as follows.

Add a theme parameter to your {file}`manifest.cfg` file.

```cfg
[theme:parameters]
ajax_load = python:request.get('ajax_load')
```

Then disable Diazo for AJAX requests in your {file}`rules.xml` file.

```xml
<notheme if="$ajax_load" /><!-- don't theme ajax requests -->
```

Choose any method to load this change in your theme.

- Restart your instance.
- In the {guilabel}`Theming` control panel, select another theme, then switch back to your own theme.
- For a programmatical way, see [(Re)Introduce the ajax_load theme parameter and skip diazo theming, if set. `plone/plonetheme.barceloneta` #404](https://github.com/plone/plonetheme.barceloneta/pull/404).
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- For a programmatical way, see [(Re)Introduce the ajax_load theme parameter and skip diazo theming, if set. `plone/plonetheme.barceloneta` #404](https://github.com/plone/plonetheme.barceloneta/pull/404).
- For a programmatic way, see [(Re)Introduce the ajax_load theme parameter and skip diazo theming, if set. `plone/plonetheme.barceloneta` #404](https://github.com/plone/plonetheme.barceloneta/pull/404).



### Completely disable Diazo

You can fully disable Diazo and plone.app.theming based themes by setting the `plone.app.theming.interfaces.IThemeSettings.enabled` registry entry to `False`.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
You can fully disable Diazo and plone.app.theming based themes by setting the `plone.app.theming.interfaces.IThemeSettings.enabled` registry entry to `False`.
You can fully disable Diazo and `plone.app.theming` based themes by setting the `plone.app.theming.interfaces.IThemeSettings.enabled` registry entry to `False`.