At the moment, we can put a Rapido block in a tile, but it is done via a generic Rapido tile, and in the settings we enter manually the Rapido block path. It is nice but we would prefer to be able to provide directly our own specific tiles from Rapido (for instance, I create a block named "Hello World", and I get a new tile named "Hello World" in the Mosaic menu).
It implies to be able to declare a new tile programmatically. And that's something Juan Pablo started at the Boston sprint.
Here is what we do:
we provide an adapter named according the block id: provideAdapter(RapidoDynamicTile, (Interface, Interface), IBasicTile, name=id)
Check tile directive in plone.tiles. I think a named tile utility is missing.
It's very Ploneish design:
Each first class tile must be registered as a named ZCA utility. The utility mostly registers some tile metadata like name, schema and permissions. Why not just registry entry? Because plone.tiles was designed to work independently from plone.registry (very Plonish design).
Each tile must have a view to render the tile. The tile directive registers the default view, but browser:page (or similar adapter) could be used to register e.g. content type specific views.
Finally, Mosaic requires its own registry registration for making tile visible in Mosaic menu. And that registration is crazy verbose, probably because of ambitious Deco legacy.
In addition, there used to be one more registry setting in plone.app.tile for defining available tiles, but that should be deprecated in the latest plone.app.tiles major release (but still requires with the previous ones, or plone.app.tiles' forms won't work.