diff --git a/src/server.py b/src/server.py
index d43e1c7..f9f8e29 100644
--- a/src/server.py
+++ b/src/server.py
@@ -160,6 +160,8 @@ def create_image_client(url, timeout):
app.ext.environment.globals["format_npf"] = ext_npf_renderer.format_npf
app.ext.environment.globals["create_poll_callback"] = helpers.create_poll_callback
+ app.ext.environment.tests["a_post"] = lambda element : isinstance(element, priviblur_extractor.models.timeline.TimelinePost)
+
@app.listener("main_process_start")
async def main_startup_listener(app):
diff --git a/src/templates/components/blog_contents.jinja b/src/templates/components/blog_contents.jinja
index 7cbb65f..6f106d6 100644
--- a/src/templates/components/blog_contents.jinja
+++ b/src/templates/components/blog_contents.jinja
@@ -1,7 +1,2 @@
-
-{%- for element in blog.posts -%}
- {%- if not element.is_advertisement -%}
- {%- include 'components/post.jinja' -%}
- {%- endif -%}
-{%- endfor -%}
-
+{% from 'macros/insert_content_list.jinja' import insert_content_list with context %}
+{{-insert_content_list("blog-posts", blog.posts)}}
diff --git a/src/templates/macros/insert_content_list.jinja b/src/templates/macros/insert_content_list.jinja
new file mode 100644
index 0000000..2bb2cb7
--- /dev/null
+++ b/src/templates/macros/insert_content_list.jinja
@@ -0,0 +1,11 @@
+{%- macro insert_content_list(content_list_cls, raw_content_list) -%}
+
+{%- for element in raw_content_list -%}
+ {% if element is a_post %}
+ {%- if not element.is_advertisement -%}
+ {%- include 'components/post.jinja' -%}
+ {%- endif -%}
+ {% endif %}
+{%- endfor -%}
+
+{%-endmacro-%}
\ No newline at end of file
diff --git a/src/templates/timeline.jinja b/src/templates/timeline.jinja
index 2f8ee31..7cb57b3 100644
--- a/src/templates/timeline.jinja
+++ b/src/templates/timeline.jinja
@@ -1,4 +1,5 @@
{% extends "base.jinja" %}
+{% from 'macros/insert_content_list.jinja' import insert_content_list with context %}
{% block title %}{{title}}{% endblock%}
{% block center %}
@@ -7,13 +8,7 @@
{% endblock %}
-
- {%- for element in timeline.elements -%}
- {%- if not element.is_advertisement -%}
- {%- include 'components/post.jinja' -%}
- {%- endif -%}
- {%- endfor -%}
-
+ {{insert_content_list("timeline", timeline.elements)}}
{%- if timeline.next %}