From production to local for built-in theme customization

Hello everyone,

here is my problem.
My customer has a Plone 5.1 website that is running on a webserver.
This website was developed by a private agency that created a built-in theme.

My goal is to copy the Plone website to local for doing some theme customization.

How can I do it?
Can I use a standalone configuration for developing (and change some settings) or should I use ZEO cluster (it sounds odd to me)?

Thank you.

What is a 'built in theme' (do you mean 'filesystem-theme'?

If it is just LESS/ CSS you want to change you could just download theme theme as a zip-file and install it on your local Plone.

Hello Espen, thank you for your reply.

I think that it is a filesystem-theme (it's an .egg directory) and I have to do more customizations, not just LESS/CSS.

Downloading the theme in ZIP file is too many reductive for me.

I've tryed to install the .egg theme in my standalone local development environment:

  • I've put the .egg in the buildout-cache/eggs folder and I did the buildout (buildout phase is ok);
  • I have an error KeyError:[...]themecustomkeywords.custom_keywords when I start (bin/plonectl fg).

Should I put the egg in other place or should I use a ZEO cluster even for development purpose?

I dont think that is the correct way.

I would look in the buildout.cfg (or any other .cfg file) and see if there is any reference in the 'develop =' section.

You might want to add all the eggs in the 'eggs =' section. Maybe not everything you think of as 'theme' is in the same add-on.

When you copy add-ons (themes etc) from somewhere, be sure that you set the correct permissions.

By the way: are you sure the theme is not on Pypi or GitHub (or something similar where you can download it)

There's a private online repo (owned by the agency that developed the theme) that I can reach with the find-links += section of the buildout.cfg
With bin/buildout I've downloaded and installed all the necessary packages.
At this point everything is ok.

I can launch the Plone website with bin/plonectl that has the default Barceloneta theme.
At this point everything is ok.

But when I activate the custom theme in the @@theming-controlpanel, it raises an error.

ERROR plone.transformchain Unexpected error whilst trying to apply transform chain
Traceback (most recent call last):
  File "/home/marco/Plone-ispra/buildout-cache/eggs/plone.transformchain-1.2.2-py2.7.egg/plone/transformchain/transformer.py", line 50, in __call__
    newResult = handler.transformIterable(result, encoding)
  File "/home/marco/Plone-ispra/buildout-cache/eggs/plone.app.theming-2.0.3-py2.7.egg/plone/app/theming/transform.py", line 166, in transformIterable
    cache
  File "/home/marco/Plone-ispra/buildout-cache/eggs/plone.app.theming-2.0.3-py2.7.egg/plone/app/theming/utils.py", line 664, in prepareThemeParameters
    params[name] = quote_param(expression(expressionContext))
  File "/home/marco/Plone-ispra/buildout-cache/eggs/Zope2-2.13.27-py2.7.egg/Products/PageTemplates/ZRPythonExpr.py", line 48, in __call__
    return eval(self._code, vars, {})
  File "PythonExpr", line 1, in <expression>
  File "/home/marco/Plone-ispra/buildout-cache/eggs/AccessControl-3.0.14-py2.7-linux-x86_64.egg/AccessControl/ZopeGuards.py", line 83, in guarded_getitem
    v = object[index]
  File "/home/marco/Plone-ispra/buildout-cache/eggs/plone.registry-1.1.2-py2.7.egg/plone/registry/registry.py", line 42, in __getitem__
    return self.records._values[name]
KeyError: 'tecnotecawaterjpithemecustomkeywords.custom_keywords'

I've checked this issue and it refers to some custom theme parameters that I can't understand where are saved.

So, could it be possible that these custom theme parameters are saved on the ZODB (Data.fs)?

For clarification, here is my version overview:

Plone 5.1.2.1 (5112)
CMF 2.2.12
Zope 2.13.27
Python 2.7.12 (default, Nov 12 2018, 14:36:49) [GCC 5.4.0 20160609]
PIL 5.1.0 (Pillow)

The Plone version 5.1.2 is the same of the production website (I have access to the Plone control panel).

I would think that some add-on sets these registry records.
Without knowing anything about how this would done, I would at least try this

  1. Install all the add-ons that are available but not the theme yet
  2. Check if there is any control panel where you can set some settings
  3. If not, go to the registry control panel and search for 'custom_keywords' and see if you can add them there
  4. Install the theme, repeat the part 2 and 3
  5. Activate the theme if it did not happen automatically.

If still this does not work, you could check if there are several profiles for the theme (or some other custom add-on). Try searching the folders /add-ons for 'custom_keywords'

1 Like