.. _changing_rich_text_representation: ================================= Changing rich text representation ================================= The HTML representation of an image in rich text can be customised - for example, to display captions or custom fields. To do this requires subclassing ``Format`` (see :ref:`rich_text_image_formats`), and overriding its ``image_to_html`` method. You may then register formats of your subclass using ``register_image_format`` as usual. .. code-block:: python # image_formats.py from wagtail.images.formats import Format, register_image_format class SubclassedImageFormat(Format): def image_to_html(self, image, alt_text, extra_attributes=None): custom_html = # the custom HTML representation of your image here # in Format, the image's rendition.img_tag(extra_attributes) is used to generate the HTML # representation return custom_html register_image_format( SubclassedImageFormat('subclassed_format', 'Subclassed Format', classnames, filter_spec) ) As an example, let's say you want the alt text to be displayed as a caption for the image as well: .. code-block:: python # image_formats.py from django.utils.html import format_html from wagtail.images.formats import Format, register_image_format class CaptionedImageFormat(Format): def image_to_html(self, image, alt_text, extra_attributes=None): default_html = super().image_to_html(image, alt_text, extra_attributes) return format_html("{}
{}
", default_html, alt_text) register_image_format( CaptionedImageFormat('captioned_fullwidth', 'Full width captioned', 'bodytext-image', 'width-750') ) .. note:: Any custom HTML image features will not be displayed in the Draftail editor, only on the published page.