============================= Defining 'all-purpose' macros ============================= To define an 'all-purpose' macro, i.e. a macro, that can render objects of (nearly) any type and thus be accessed from any other page template, just set a very general context for your macro view: .. code-block:: python :linenos: from zope.interface import Interface import grok class Master(grok.View): grok.context(Interface) and reference the macros of the associated pagetemplate like this:: context/@@master/macros/ Because the macros in ``Master`` now are 'bound' (in fact their view is bound) to ``Interface`` and every Grok application, model or container implements some interface, the ``Master`` macros will be accessible from nearly every other context. ``Master`` promises to be a view for every object, which implements ``Interface``.