Yoo Спасибо большое, что-то получилось.
вот этот код
$categories = [$city, $artist]; // Пордазумеваеться что здесь [1, 2]
foreach($categories as $catId) {
$posts = BlogPost::whereHas('categories', function($q){
$q->where('category_id', $catId);
})->get();
}
выдает Undefined variable: catId
После череды экспериментов получилось достичь какого-то результата. Короткая инструкция, того что делал.
Создаем страницу с записями блога:
[blogPosts]
pageNumber = "{{ :page }}"
postsPerPage = 10
noPostsMessage = "Записей не найдено"
sortOrder = "published_at desc"
categoryPage = "blog"
postPage = "blog"
==
<ul class="post-list">
{% for post in filteredPosts %}
<li>
<h3><a href="{{ post.url }}">{{ post.title }}</a></h3>
<p class="info">
Posted
{% if post.categories.count %} in {% endif %}
{% for category in post.categories %}
<a href="{{ category.url }}">{{ category.name }}</a>{% if not loop.last %}, {% endif %}
{% endfor %}
on {{ post.published_at|date('M d, Y') }}
</p>
<p class="excerpt">{{ post.summary|raw }}</p>
</li>
{% else %}
<li class="no-data">{{ noPostsMessage }}</li>
{% endfor %}
</ul>
{% if posts.lastPage > 1 %}
<ul class="pagination">
{% if posts.currentPage > 1 %}
<li><a href="{{ this.page.baseFileName|page({ (pageParam): (posts.currentPage-1) }) }}">← Prev</a></li>
{% endif %}
{% for page in 1..posts.lastPage %}
<li class="{{ posts.currentPage == page ? 'active' : null }}">
<a href="{{ this.page.baseFileName|page({ (pageParam): page }) }}">{{ page }}</a>
</li>
{% endfor %}
{% if posts.lastPage > posts.currentPage %}
<li><a href="{{ this.page.baseFileName|page({ (pageParam):(posts.currentPage+1) }) }}">Next →</a></li>
{% endif %}
</ul>
{% endif %}
Во вкладке Код добавляем следующий код:
use RainLab\Blog\Models\Post as BlogPost;
function onStart(){
$city = get('city', $default = null);
$artist = get('artist', $default = null);
//This is where you list the categories you want to display
$categories = [$city, $artist];
foreach($categories as $catId) {
$posts = BlogPost::whereHas('categories', function($q) use ($catId) {
$q->where('category_id', $catId);
})->get();
}
$this['filteredPosts'] = $posts;
}
В get-запросе передаем переменные id категорий. Типа:
http://site.ru/post?city=4&artist=2
Выводятся записи, которые относятся к этим обоим категориям.