issue_comments: 1278198145
This data as json
html_url | issue_url | id | node_id | user | created_at | updated_at | author_association | body | reactions | issue | performed_via_github_app |
---|---|---|---|---|---|---|---|---|---|---|---|
https://github.com/simonw/datasette/issues/1831#issuecomment-1278198145 | https://api.github.com/repos/simonw/datasette/issues/1831 | 1278198145 | IC_kwDOBm6k_c5ML8GB | 9599 | 2022-10-13T21:28:30Z | 2022-10-13T21:28:30Z | OWNER | This has turned into a full refactor of how breadcrumbs work. I'm using my first ever Jinja macro for this - I import that at the top of `base.html` so that it will be available everywhere else: ```html+jinja {% import "_crumbs.html" as crumbs with context %}<!DOCTYPE html> ``` The `with context` bit is needed so the macro can see the new `crumb_items()` function that I'm adding to the global template rendering scope. Here's the full content of `_crumbs.html`: ```html+jinja {% macro nav(request, database=None, table=None) -%} {% set items=crumb_items(request=request, database=database, table=table) %} {% if items %} <p class="crumbs"> {% for item in items %} <a href="{{ item.href }}">{{ item.label }}</a> {% if not loop.last %} / {% endif %} {% endfor %} </p> {% endif %} {%- endmacro %} ``` This means custom template authors can use their own `_crumbs.html` template to do something different with the breadcrumbs. In the actual templates I display breadcrumbs like this: ```html+jinja {% block crumbs %} {{ crumbs.nav(request=request, database=database) }} {% endblock %} ``` Pass `database=` to get `home / database_name` - pass `table=` as well to get `home / database_name / table_name` - if you just send `request=` you just get `home`. I've also made the default base template show the `home` breadcrumbs - other pages such as `table.html` and `row.html` can then over-ride `{% block crumbs %}` to get different breadcrumbs. | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | 1397084281 |