Как сделать листинг отфильтрованным по двум типам контента?

Как сделать страницу со списком, где результаты основаны на фильтре двух типов контента?

Пример:

books:
name: Books
singular_name: Book
relations:
authors:
multiple: false
categories:
multiple: false

authors:
name: Authors
singular_name: Author

categories:
name: Categories
singular_name: Category

Как я могу составить список книг, отфильтрованных по автору и категории?

/books/(category_slug)/(author_slug)/

Хорошо, я нашел «решение» для маршрута:

books:
path: /books/{slug}/{author}
_controller: Bolt\Controllers\Frontend::record
contenttypeslug: categories
author: all

Тогда я могу получить доступ к обоим /books/foo а также /books/foo/bar,
И в шаблоне я могу добраться author от app.request.attributes.get('author'),

Теперь проблема в том, как получить / отфильтровать books двумя типами контента …

Ну, я достигаю этого в конце, чтобы отфильтровать, не уверен, что это лучший способ, не похоже на:

{% set author_slug = app.request.attributes.get('author') %}
{% set books = category.related('books') %}
{% for book in books %}
{% set author = book.related('authors')[0] %}
{% if author_slug == author.slug or author_slug == 'all' %}
My filtered book {{ book.title }}
{% endif %}
{% endfor %}

Это лучший подход?

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …