Hello,
I have an idea for a content management system plugin and thought I would share it on the forum, to see what you think about it.
With the plugin, you can take a batch of data (e.g. a spreadsheet export) and apply it to and reuse it in your design. For example, from a single template “component”, generate and showcase a button with different content options (label length, language), reuse blog post content on different components (index, post, excerpt, short list etc.), or create different versions of a promo graphic.
It’s not an attempt to turn Penpot into a website builder, but to make content reusable and quick and easy to manage, solo or within a team.
Below is a video of a small PoC, presenting:
batch item creation based on a data set and a template element,
↔️ two-way editing,
layer name based content pairing - the project file works without the plugin. I’m yet to test variants, but suspect it will be a great use case.
This sounds like a really useful idea! Making content reusable and easier to manage could save a lot of time, especially for teams working on multiple variations. Excited to see how it develops.
I worked on the prototype a bit more and am happy to share new findings and a demo you can run yourselves.
Features and findings
The item template works with components.
Added item deletion. Same as addition, it is reflected in the project.
Added dynamic property names. In the prototype, they have to be unique, but I don’t expect this limitation to be present in the plugin proper. The name change is not automatically reflected in the Penpot element, but it could be.
Demo
If you would like to try the plugin out, you can install a development preview from:
It is a development preview and has everything that comes with such a build, like bugs, unhandled edge cases, inconsistent mechanics, and so on.
Feedback is very much welcome. Especially, I would appreciate your thoughts on how far automated the synchronisation should be - that’s changes in the sheet reflected in the project.
Thank you for checking it out and sorry the mechanics are unclear. I will make sure to fix that in the plugin.
If you click the “Select template shape" button and then a template’s layer (in the Penpot’s canvas or layer tree), it should produce new elements with content from the table - matching a column and a layer based on their names.
Here is a demo file, with a project structure that matches the default table: penpot-cms-demo.penpot (33.2 KB)
In this case, clicking “Select template shape” and then “TitleTemplate” or “TitleTemplateComponent” should generate new items.