Add footnotes functionality to your Wagtail project.
- Add the app to
INSTALLED_APPS
:
INSTALLED_APPS = [
# ...
"wagtail_footnotes",
# ...
]
- Add the footnotes
urls.py
to your project'surls.py
:
from wagtail_footnotes import urls as footnotes_urls
urlpatterns = [
# ...
path("footnotes/", include(footnotes_urls)),
# ...
]
Note: The URL has to be defined as above as it is currently hardcoded in the Javascript.
- Update your page models to show the footnotes field:
class InformationPage(BasePage):
# ...
content_panels = [
# ...
InlinePanel("footnotes", label="Footnotes"),
]
- Update your
RichTextBlock
s- Add
"footnotes"
to thefeatures
arg for eachRichTextBlock
that you want to have this functionality - You will also need to change any
RichTextBlock
s towagtail_footnotes.blocks.RichTextBlockWithFootnotes
- Add
- Update your page templates to include
{% include "wagtail_footnotes/includes/footnotes.html" %}
Make and run migrations:
./manage.py makemigrations
./manage.py migrate
WAGTAIL_FOOTNOTES_TEXT_FEATURES
- Default:
["bold", "italic", "link"]
- Use this to update a list of Rich Text features allowed in the footnote text.
- Default:
- I click on the
Fn
button in the editor and it stops working- This is likely because the URL in the JS does not match the URL of the footnotes view. Check the URL in
wagtail_footnotes/static/footnotes/js/footnotes.js
matches the URL you set.
- This is likely because the URL in the JS does not match the URL of the footnotes view. Check the URL in
NoneType
error when rendering page.- Make sure you are rendering the field in the template using
{% include_block page.field_name %}
- Make sure you are rendering the field in the template using
All contributions are welcome!
To make changes to this project, first clone this repository:
git clone git@github.com:torchbox/wagtail-footnotes.git
cd wagtail-footnotes
With your preferred virtualenv activated, install testing dependencies:
pip install -e '.[testing]' -U
Note that this project uses pre-commit. To set up locally:
$ pip install pre-commit
# initialize pre-commit
$ pre-commit install
# Optional, run all checks once for this, then the checks will run only on the changed files
$ pre-commit run --all-files
To run all tests in all environments:
tox
To run tests for a specific environment:
tox -e python3.11-django4.2-wagtail5.2
To run a single test method in a specific environment:
tox -e python3.11-django4.2-wagtail5.2 -- tests.test.test_blocks.TestBlocks.test_block_with_features