Blog Articles List¶
blog_articles_list
module is used to display a tile grid containing blog articles.
Configuration parameters¶
shouldShowPaginationAboveBlogArticleList¶
int
if set to 1 an additional small pagination will be rendered above the list.
shouldShowImage¶
int
if set to 1 the image linking to the article will be displayed. By default it is set to 1
shouldShowCategory¶
int
if set to 1 the category that the article belongs to will be displayed. By default it is set to 1
shouldShowDate¶
int
if set to 1 the date of the article creation will be displayed. By default it is set to 1
shouldShowShortContent¶
int
if set to 1 the short content of the article will be displayed. By default it is set to 1
shouldShowAuthor¶
int
if set to 1 the author of the article will be displayed. By default it is set to 0
shouldShowCommentsQuantity¶
int
if set to 1 the quantity of comments under the article will be displayed. By default it is set to 0
shouldShowTags¶
int
if set to 1 the tags that the article is associated to will be displayed. By default it is set to 1
Module source code¶
{% from "@macros/masonry_grid.twig" import masonry_grid %}
{% from "@macros/pagination.twig" import pagination %}
{% from "@macros/blog_article_tile.twig" import blog_article_tile %}
{% set blogArticlesList = ObjectApi.getBlogArticles() %}
{% set blogArticlesListSettings = ObjectApi.getBlogSettings() %}
{{ blogArticlesList.setItemCountPerPage(blogArticlesListSettings.articlesPerPage) }}
{%
set gridSettings = {
itemsCount: 3,
phoneItemsCountPerRow: 1,
smallTabletItemsCountPerRow: 1,
tabletItemsCountPerRow: 2,
laptopItemsCountPerRow: 2,
desktopItemsCountPerRow: 3,
}
%}
{% set hasMultiplePages = blogArticlesList.pages > 1 %}
{% set hasFirstPageButton = hasMultiplePages and blogArticlesList.page != 1 %}
{% set hasPrevPageButton = hasMultiplePages and blogArticlesList.page != 1 %}
{% set hasNextPageButton = hasMultiplePages and blogArticlesList.page != blogArticlesList.pages %}
{% set hasLastPageButton = hasMultiplePages and blogArticlesList.page != blogArticlesList.pages %}
{%
set basePaginationOptions = {
hasFirstPageButton: hasFirstPageButton,
prevPageButtonOptions: {
hasPrevPageButton: hasPrevPageButton
},
nextPageButtonOptions: {
hasNextPageButton: hasNextPageButton
},
hasLastPageButton: hasLastPageButton
}
%}
{%
set topPaginationOptions = basePaginationOptions|merge({
hasFirstPageButton: false,
hasLastPageButton: false,
classNames: ['pagination_top'],
id: "blog-articles-list-pagination-top-#{moduleInstance}",
name: "blog-articles-list-pagination-top-#{moduleInstance}"
})
%}
{%
set bottomPaginationOptions = basePaginationOptions|merge({
prevPageButtonOptions: basePaginationOptions.prevPageButtonOptions|merge({
prevButtonText: translate('Previous')
}),
nextPageButtonOptions: basePaginationOptions.nextPageButtonOptions|merge({
nextButtonText: translate('Next')
}),
classNames: ['pagination_bottom'],
id: "blog-articles-list-pagination-bottom-#{moduleInstance}",
name: "blog-articles-list-pagination-bottom-#{moduleInstance}"
})
%}
{%
set articleSettings = {
"shouldShowImage": moduleConfig.shouldShowImage,
"shouldShowCategory": moduleConfig.shouldShowCategory,
"shouldShowDate": moduleConfig.shouldShowDate,
"shouldShowShortContent": moduleConfig.shouldShowShortContent,
"shouldShowAuthor": moduleConfig.shouldShowAuthor,
"shouldShowCommentsQuantity": blogArticlesListSettings.isCommentsEnabled and moduleConfig.shouldShowCommentsQuantity,
"shouldShowTags": moduleConfig.shouldShowTags,
}
%}
{% set listItemsTemplate %}
{% for article in blogArticlesList %}
{{ blog_article_tile(article,articleSettings) }}
{% endfor %}
{% endset %}
{% if blogArticlesList|length %}
<article class="blog-articles-list">
<header class="blog-articles-list__header">
{% if moduleConfig.shouldShowPaginationAboveBlogArticleList %}
{{ pagination(blogArticlesList, topPaginationOptions) }}
{% endif %}
</header>
{{
masonry_grid(listItemsTemplate, {
grid: gridSettings,
classNames: 'articles-list-grid'
})
}}
<footer class="blog-articles-list__footer">
{{ pagination(blogArticlesList, bottomPaginationOptions) }}
</footer>
</article>
{% else %}
<span class="flash-message flash-message__notice">{{ translate("There are currently no blog entries in this category") }}</span>
{% endif %}
Macros reference¶
Used Object Api methods¶
Used styles¶
Module configuration schema¶
```json [ { "state": "unfolded", "label": "General settings", "elements": [ { "type": "infobox", "name": "infobox", "options": { "type": "blank", "message": "#### Related settings in the admin panel%s- changing the number of entries per page in the blog settings", "placeholderValues": [ "\n", "\/admin\/configBlog" ] } }, { "type": "checkbox", "name": "shouldShowPaginationAboveBlogArticleList", "label": "Display additional pagination above the entries list", "defaultValue": 1 } ] }, { "state": "unfolded", "label": "Blog entry tile", "elements": [ { "type": "header", "name": "blogArticleOptions", "label": "For each blog entry, show:", "children": [ { "type": "checkbox", "name": "shouldShowImage", "label": "Main image", "defaultValue": 1 }, { "type": "checkbox", "name": "shouldShowCategory", "label": "Entry category", "defaultValue": 1, "hint": "If more than one category is assigned to the blog entry, only one of them will be displayed." }, { "type": "checkbox", "name": "shouldShowDate", "label": "Entry date", "defaultValue": 1 }, { "type": "checkbox", "name": "shouldShowShortContent", "label": "Abbreviated blog entry content", "defaultValue": 1 }, { "type": "checkbox", "name": "shouldShowAuthor", "label": "Author of the entry", "defaultValue": 0 }, { "type": "checkbox", "name": "shouldShowCommentsQuantity", "label": "Number of comments", "defaultValue": 0 }, { "type": "checkbox", "name": "shouldShowTags", "label": "Tags", "defaultValue": 1 } ] } ] } ]
```