diff --git a/CHANGELOG.md b/CHANGELOG.md
index 504c788..71fcb15 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,10 @@
+
+# [1.3.0](https://github.com/flextype-themes/bootstrap-blog) (2020-08-07)
+
+### Features
+
+* **core** updates for new API and performance boost in 3 times!
+
# [1.2.0](https://github.com/flextype-themes/bootstrap-blog) (2020-08-05)
diff --git a/templates/blog-post.html b/templates/blog-post.html
index e593c74..cddcee1 100644
--- a/templates/blog-post.html
+++ b/templates/blog-post.html
@@ -1,6 +1,12 @@
{% extends 'themes/' ~ registry.get('plugins.site.settings.theme') ~ '/templates/partials/base.html' %}
{% block content %}
+ {% set blog = entries.fetchCollection('blog') %}
+ {% set blog_posts_limit = entries.fetchSingle('blog').entries_limit %}
+ {% if blog_posts_limit == 0 %}
+ {% set blog_posts_limit = 5 %}
+ {% endif %}
+
{{ entry.content|shortcode|markdown|raw}}
@@ -26,18 +32,10 @@
{{ entry.title }}
{% for tag in tags %}
- {% set related_posts = related_posts|merge(entries.fetchCollection('blog', {
- 'where': {
- 'key': 'tags',
- 'expr': 'contains',
- 'value': tag
- },
- 'and_where': [{
- 'key': 'visibility',
- 'expr': 'nin',
- 'value': ['draft', 'hidden']
- }]
- })) %}
+ {% set related_posts = related_posts|merge(collect(blog)
+ .where('tags', 'contains', tag)
+ .andWhere('visibility', 'nin', ['draft', 'hidden'])
+ .limit(blog_posts_limit) ) %}
{% endfor %}
diff --git a/templates/blog.html b/templates/blog.html
index 42dd4d7..032c642 100644
--- a/templates/blog.html
+++ b/templates/blog.html
@@ -6,6 +6,7 @@
{% set page = query.page %}
{% set tag = query.tag %}
+ {% set blog = entries.fetchCollection('blog') %}
{% set blog_posts_limit = entries.fetchSingle('blog').entries_limit %}
@@ -14,59 +15,29 @@
{% endif %}
{% if tag %}
-
- {# @todo get count from cache! #}
- {% set blog_posts_length = entries.fetchCollection('blog', {
- 'where': {
- 'key': 'tags',
- 'expr': 'contains',
- 'value': tag
- },
- 'and_where': [{
- 'key': 'visibility',
- 'expr': 'nin',
- 'value': ['draft', 'hidden']
- }]
- })|length %}
-
+ {% set blog_posts_length = collect(blog)
+ .where('tags', 'contains', tag)
+ .andWhere('visibility', 'nin', ['draft', 'hidden'])
+ .count() %}
{% set blog_posts_pages = (blog_posts_length/blog_posts_limit)|round(0, 'ceil') %}
+
{% if page < 1 %}
{% set page = 1 %}
{% elseif page > blog_posts_pages %}
{% set page = blog_posts_pages %}
{% endif %}
+
{% set blog_posts_offset = (page-1)*blog_posts_limit %}
{% if blog_posts_offset < 0 %}{% set blog_posts_offset = 0 %}{% endif %}
- {% set blog_posts = entries.fetchCollection('blog', {
- 'where': {
- 'key': 'tags',
- 'expr': 'contains',
- 'value': tag
- },
- 'and_where': [{
- 'key': 'visibility',
- 'expr': 'nin',
- 'value': ['draft', 'hidden']
- }],
- 'order_by': {
- 'field': 'published_at',
- 'direction': 'DESC'
- },
- 'set_max_result': blog_posts_limit,
- 'set_first_result': blog_posts_offset
- }) %}
- {% else %}
-
- {# @todo get count from cache! #}
- {% set blog_posts_length = entries.fetchCollection('blog', {
- 'where': {
- 'key': 'visibility',
- 'expr': 'nin',
- 'value': ['draft', 'hidden']
- }
- })|length %}
+ {% set blog_posts = collect(blog)
+ .where('tags', 'contains', tag)
+ .andWhere('visibility', 'nin', ['draft', 'hidden'])
+ .orderBy('published_at', 'DESC')
+ .slice(blog_posts_offset, blog_posts_limit) %}
+ {% else %}
+ {% set blog_posts_length = collect(blog).where('visibility', 'nin', ['draft', 'hidden']).count() %}
{% set blog_posts_pages = (blog_posts_length/blog_posts_limit)|round(0, 'ceil') %}
{% if page < 1 %}
@@ -78,23 +49,13 @@
{% set blog_posts_offset = (page-1)*blog_posts_limit %}
{% if blog_posts_offset < 0 %}{% set blog_posts_offset = 0 %}{% endif %}
- {% set blog_posts = entries.fetchCollection('blog', {
- 'where': {
- 'key': 'visibility',
- 'expr': 'nin',
- 'value': ['draft', 'hidden']
- },
- 'order_by': {
- 'field': 'published_at',
- 'direction': 'DESC'
- },
- 'return': 'slice',
- 'slice_offset_value': blog_posts_offset,
- 'slice_limit_value': blog_posts_limit}) %}
+ {% set blog_posts = collect(blog)
+ .where('visibility', 'nin', ['draft', 'hidden'])
+ .orderBy('published_at', 'DESC')
+ .slice(blog_posts_offset, blog_posts_limit) %}
{% endif %}
- {# /pagination #}
@@ -127,23 +88,14 @@
About Me
{{ entry.about_me|raw }}
{# /about-me #}
+
{# recent-posts #}
Recent Posts
- {% for post in entries.fetchCollection('blog', {
- 'where': {
- 'key': 'visibility',
- 'expr': 'nin',
- 'value': ['draft', 'hidden']
- },
- 'order_by': {
- 'field': 'published_at',
- 'direction': 'DESC'
- },
- 'return': 'limit',
- 'limit_value': blog_posts_limit
- }) %}
-
+ {% for post in collect(blog)
+ .where('visibility', 'nin', ['draft', 'hidden'])
+ .orderBy('published_at', 'DESC')
+ .limit(blog_posts_limit) %}
- {{ post.title }}
{% endfor %}
@@ -151,17 +103,10 @@
Recent Posts
{# tags-cloud #}
{% set tags_cloud = [] %}
- {% for post in entries.fetchCollection('blog', {
- 'where': {
- 'key': 'visibility',
- 'expr': 'nin',
- 'value': ['draft', 'hidden']
- },
- 'order_by': {
- 'field': 'published_at',
- 'direction': 'DESC'
- }
- }) %}
+ {% for post in collect(blog)
+ .where('visibility', 'nin', ['draft', 'hidden'])
+ .orderBy('published_at', 'DESC')
+ .limit(blog_posts_limit) %}
{% set tags_cloud = tags_cloud|merge(post.tags|split(',')) %}
{% endfor %}
@@ -175,6 +120,7 @@
Tags
+
{# pagination navigation #}
{% if (page - 1) > 0 %}
diff --git a/theme.yaml b/theme.yaml
index a4a5aa5..a51a1a3 100755
--- a/theme.yaml
+++ b/theme.yaml
@@ -1,5 +1,5 @@
name: Bootstrap Blog Theme
-version: 1.2.0
+version: 1.3.0
description: Twitter Bootstrap Blog theme for Flextype.
author:
name: Sergey Romanenko