I can understand how the title of this post might actually sound confusing, so let me explain. I have a public Plone website I recently deployed, and I'd like to add some basic functionality that I don't feel requires a full-on local Plone 6 development environment to run to develop say a new Product or other backend Plone 6 component. Zope itself includes some really nice and quick to use for simpler tasks pieces in it's backend, such as Page Templates, Python Scripts, SQLite, and PostgreSQL. For a very basic database view, combining these pre-existing tools already baked into Zope is quick and easy when compared to a full development environment.
So, I am wanting to leverage that Zope backend with my Plone website. I currently have a test internal Zope folder, which I can access. Inside I am able to create the usual pieces from vanilla Zope. However, the reason I am here is for several things, a getting it to work outside of Plone works.
Firstly, on the Zope Page Templates, or any HTML page that Zope generates, it does not produce a proper , well it doesn't generate one at all. I am using the VHM, and nginx is configured correctly to route the traffic into the right place in Zope, as the Plone website works with zero issues. My current workaround has been to place this in my ZPT page:
Which of course works as a good workaround, but it would be nice if Zope just did it automatically of course. This does break the ZMI a bit, if I save an object, then try to click into another section like Properties for example, it won't work, and I need to first reload the object edit page for it to go back to the proper URL so that all the relative paths in the management screen work again.
My second question is, is it possible to wrap custom Zope Page Templates around the Plone website. I'm assuming that the Plone website is just a Zope Page Template somewhere, and so I might be-able to reference it from a Page Template I create through the ZMI. It would also be interesting to see if I can say embed any custom logic into a Portlet, but I do see a warning sign of sorts saying not to use that specific portlet which uses ZPT, as it is there for legacy reasons. However, I can see a lot of good and interesting uses to always have this sort of portlet around regardless. As it can easily extend the Plone website without any super strong knowledge into how to develop a proper Plone package, much like one of the original intentions of Zope when it released. Zope upon release back in the 2000s really advertised the ability to do From The Web programming. While some of those now called legacy components still exist there, it is now strictly advised against creating anything much in instance-space. To me, this is both a bit sad and shortsighted. It was nice to see a framework like Zope, at least back in the day support both styles of development. While I completely understand the drawbacks on instance-space development, but there are also several drawbacks to having a to set-up a full development environment, and create Python packages, then perform full deployments. What drew me into Zope back in the 2000s was the ability to easily get started with gluing things together right in the web browser. I feel that is a nice way to just get your feet wet with learning Zope, as you still need to understand a lot of what you might eventually need to build after diving into Python package development. I'm not sure when ZClasses were removed, or the Products folder in Control_Panel, but although a tad clunky, it was a pretty nifty feature. You didn't need to know Zope inside and out to create a new Item type to use in Zope, and it was an overall fairly capable tool inside Zope.
I think that Zope might have the chance to reach to a larger audience of potential user's if it were to re-integrate some of these lost features. I don't think any current web framework offers this sort of hybrid development model. Whereas more simpler things can all be created on the Web, while for more complex and developer centric things, there is a full development environment. I could see this sort of hybrid framework really take off if advertised well. It could draw in a crowd of non-developers to begin creating some interesting components for Zope, as the overall learning curve would be much lower than learning curve, and easier entry point for a lot of new people. Then, when they do become more experienced, and feel ready to really develop, they can then move onto the more advanced Python package development.