diff --git a/Resources/Private/Language/locallang_db.xlf b/Resources/Private/Language/locallang_db.xlf
index 554d0778..6965df43 100644
--- a/Resources/Private/Language/locallang_db.xlf
+++ b/Resources/Private/Language/locallang_db.xlf
@@ -43,8 +43,20 @@
+
+
+
+
-
+
diff --git a/Resources/Private/Partials/General/BlogIcons.html b/Resources/Private/Partials/General/BlogIcons.html
index 21ca9c86..d5e38c5b 100644
--- a/Resources/Private/Partials/General/BlogIcons.html
+++ b/Resources/Private/Partials/General/BlogIcons.html
@@ -1,6 +1,9 @@
+
+
+
diff --git a/Resources/Private/Partials/List/Post.html b/Resources/Private/Partials/List/Post.html
index 306f9156..c9edfdd6 100644
--- a/Resources/Private/Partials/List/Post.html
+++ b/Resources/Private/Partials/List/Post.html
@@ -1,6 +1,6 @@
-
+
{post.abstract}
@@ -9,4 +9,5 @@
{post.description}
+
diff --git a/Resources/Private/Partials/Meta/Default.html b/Resources/Private/Partials/Meta/Default.html
new file mode 100644
index 00000000..fed0f23e
--- /dev/null
+++ b/Resources/Private/Partials/Meta/Default.html
@@ -0,0 +1,2 @@
+
+
diff --git a/Resources/Private/Partials/Meta/Elements/Authors.html b/Resources/Private/Partials/Meta/Elements/Authors.html
new file mode 100644
index 00000000..64a5bc5f
--- /dev/null
+++ b/Resources/Private/Partials/Meta/Elements/Authors.html
@@ -0,0 +1,24 @@
+authors
+
+
+
+
+
+
+
+
+
+
+ -
+ {author.name}
+
+
+
+
+
+
+
+ {content}
+ {content}
+
+
diff --git a/Resources/Private/Partials/Meta/Elements/Categories.html b/Resources/Private/Partials/Meta/Elements/Categories.html
new file mode 100644
index 00000000..fb7f5bc7
--- /dev/null
+++ b/Resources/Private/Partials/Meta/Elements/Categories.html
@@ -0,0 +1,16 @@
+categories
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Resources/Private/Partials/Meta/Elements/Comments.html b/Resources/Private/Partials/Meta/Elements/Comments.html
new file mode 100644
index 00000000..4c73bc78
--- /dev/null
+++ b/Resources/Private/Partials/Meta/Elements/Comments.html
@@ -0,0 +1,23 @@
+comments
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {text}
+
+
diff --git a/Resources/Private/Partials/Meta/Elements/Published.html b/Resources/Private/Partials/Meta/Elements/Published.html
new file mode 100644
index 00000000..1a8891ad
--- /dev/null
+++ b/Resources/Private/Partials/Meta/Elements/Published.html
@@ -0,0 +1,10 @@
+published
+
+
+
+
+
+
+
+
+
diff --git a/Resources/Private/Partials/Meta/Elements/Tags.html b/Resources/Private/Partials/Meta/Elements/Tags.html
new file mode 100644
index 00000000..8ba18ffe
--- /dev/null
+++ b/Resources/Private/Partials/Meta/Elements/Tags.html
@@ -0,0 +1,16 @@
+tags
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Resources/Private/Partials/Meta/ListFooter.html b/Resources/Private/Partials/Meta/ListFooter.html
new file mode 100644
index 00000000..70d15b87
--- /dev/null
+++ b/Resources/Private/Partials/Meta/ListFooter.html
@@ -0,0 +1,2 @@
+
+
diff --git a/Resources/Private/Partials/Meta/ListHeader.html b/Resources/Private/Partials/Meta/ListHeader.html
new file mode 100644
index 00000000..ca0e20cf
--- /dev/null
+++ b/Resources/Private/Partials/Meta/ListHeader.html
@@ -0,0 +1,2 @@
+
+
diff --git a/Resources/Private/Partials/Meta/PostFooter.html b/Resources/Private/Partials/Meta/PostFooter.html
new file mode 100644
index 00000000..1d1133e1
--- /dev/null
+++ b/Resources/Private/Partials/Meta/PostFooter.html
@@ -0,0 +1,2 @@
+
+
diff --git a/Resources/Private/Partials/Meta/PostHeader.html b/Resources/Private/Partials/Meta/PostHeader.html
new file mode 100644
index 00000000..9c481f98
--- /dev/null
+++ b/Resources/Private/Partials/Meta/PostHeader.html
@@ -0,0 +1,2 @@
+
+
diff --git a/Resources/Private/Partials/Meta/Rendering/Group.html b/Resources/Private/Partials/Meta/Rendering/Group.html
new file mode 100644
index 00000000..a04bb275
--- /dev/null
+++ b/Resources/Private/Partials/Meta/Rendering/Group.html
@@ -0,0 +1,3 @@
+
+ {content -> f:format.raw()}
+
diff --git a/Resources/Private/Partials/Meta/Rendering/Item.html b/Resources/Private/Partials/Meta/Rendering/Item.html
new file mode 100644
index 00000000..13304fd8
--- /dev/null
+++ b/Resources/Private/Partials/Meta/Rendering/Item.html
@@ -0,0 +1,12 @@
+default
+
+
+
+ {icon -> f:format.raw()}
+
+
+
+
{prefix -> f:format.raw()}
+
{content -> f:format.raw()}
+
+
diff --git a/Resources/Private/Partials/Meta/Rendering/Section.html b/Resources/Private/Partials/Meta/Rendering/Section.html
new file mode 100644
index 00000000..e54678b0
--- /dev/null
+++ b/Resources/Private/Partials/Meta/Rendering/Section.html
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Resources/Private/Scss/components/_metagroup.scss b/Resources/Private/Scss/components/_metagroup.scss
new file mode 100644
index 00000000..a80082a1
--- /dev/null
+++ b/Resources/Private/Scss/components/_metagroup.scss
@@ -0,0 +1,73 @@
+/**
+ * Metagroup
+ */
+.postmetagroup {
+ display: flex;
+ align-items: center;
+ margin: -.135rem -.5rem;
+ flex-wrap: wrap;
+}
+.postmetagroup__item {
+ padding: .135rem .5rem;
+ white-space: nowrap;
+ width: 100%;
+ @media (min-width: 576px) {
+ width: auto;
+ }
+}
+.postmetagroup__icon,
+.postmetagroup__prefix {
+ opacity: .75;
+}
+.postmetagroup__item {
+ display: inline-flex;
+}
+.postmetagroup__body {
+ margin-left: .25rem
+}
+.postmetagroup__content {
+ white-space: initial;
+}
+.postmetagroup__list {
+ padding: 0;
+ margin: 0;
+ list-style: none;
+ li {
+ display: inline;
+ &:not(:last-child):after {
+ display: inline;
+ content: ', ';
+ }
+ }
+}
+
+/**
+ * Simple
+ */
+.postmetagroup--simple {
+ .postmetagroup__prefix {
+ position: absolute !important;
+ clip: rect(1px, 1px, 1px, 1px) !important;
+ padding: 0 !important;
+ border: 0 !important;
+ height: 1px !important;
+ width: 1px !important;
+ overflow: hidden !important;
+ }
+}
+
+/**
+ * Condensed
+ */
+.postmetagroup--condensed {
+ .postmetagroup__body {
+ display: flex;
+ }
+ .postmetagroup__prefix:after {
+ display: inline;
+ content: ':';
+ }
+ .postmetagroup__content {
+ margin-left: .25rem;
+ }
+}
diff --git a/Resources/Private/Scss/frontend.scss b/Resources/Private/Scss/frontend.scss
index 67c9e638..306cbb69 100644
--- a/Resources/Private/Scss/frontend.scss
+++ b/Resources/Private/Scss/frontend.scss
@@ -1,6 +1,7 @@
/**
* Components
*/
+@import "components/metagroup";
@import "components/author";
@import "components/badge";
@import "components/icons";
diff --git a/Resources/Private/Templates/Post/Footer.html b/Resources/Private/Templates/Post/Footer.html
new file mode 100644
index 00000000..2c313c94
--- /dev/null
+++ b/Resources/Private/Templates/Post/Footer.html
@@ -0,0 +1,9 @@
+
+
+
diff --git a/Resources/Private/Templates/Post/Header.html b/Resources/Private/Templates/Post/Header.html
new file mode 100644
index 00000000..4accd9e6
--- /dev/null
+++ b/Resources/Private/Templates/Post/Header.html
@@ -0,0 +1,10 @@
+
+
+
diff --git a/Resources/Private/Templates/Post/Metadata.html b/Resources/Private/Templates/Post/Metadata.html
index f7dc075c..b0c4a9e1 100644
--- a/Resources/Private/Templates/Post/Metadata.html
+++ b/Resources/Private/Templates/Post/Metadata.html
@@ -1 +1,3 @@
-
+
+
+
diff --git a/Resources/Public/Css/frontend.min.css b/Resources/Public/Css/frontend.min.css
index e5cd1c9c..9bc2b5b5 100644
--- a/Resources/Public/Css/frontend.min.css
+++ b/Resources/Public/Css/frontend.min.css
@@ -1 +1 @@
-.postauthor{display:-webkit-box;display:-ms-flexbox;display:flex}.postauthor+.postauthor{border-top:1px solid rgba(0,0,0,.15);padding-top:1.5rem;margin-top:1.5rem}.postauthor__avatar{margin-right:1rem}.postauthor__avatarimage{display:block;border-radius:50%;overflow:hidden}.postauthor__body{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.postauthor__body>:last-child{margin-bottom:0}.postauthor__intro{opacity:.75}.postauthor__name{font-weight:700;font-size:1.25rem;line-height:1.5rem}.postauthor__sublinedivider{margin-right:.25rem}.postauthor__social{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-top:.25rem}.postauthor__social+.postauthor__actions{margin-top:.5rem}.postauthor__sociallink{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-right:.5rem}.postauthor__sociallinklabel{position:absolute!important;clip:rect(1px,1px,1px,1px)!important;padding:0!important;border:0!important;height:1px!important;width:1px!important;overflow:hidden!important}.postauthor__bio{margin-top:1rem;margin-bottom:1rem}.postauthor__bio p{margin-bottom:.5rem}.postauthor__bio>:last-child{margin-bottom:0}.postauthor__actions{margin-bottom:1rem}.blogbadge{display:inline-block;padding:.5em;border-radius:2px;border:1px solid;line-height:1em}.blogbadge:hover{text-decoration:none}.blogicon{top:.125em;position:relative;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-item-align:center;align-self:center}.blogicon svg{height:1em;width:1em}.postcomment{display:-webkit-box;display:-ms-flexbox;display:flex}.postcomment+.postcomment{border-top:1px solid rgba(0,0,0,.15);padding-top:1.5rem;margin-top:1.5rem}.postcomment__avatar{margin-right:1rem}.postcomment__avatarimage{display:block;border-radius:50%;overflow:hidden}.postcomment__body{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.postcomment__body>:last-child{margin-bottom:0}.postcomment__author{font-weight:700;font-size:1.25rem;line-height:1.5rem;margin-top:.5rem}.postcomment__comment{margin-top:1rem}.postcomment__comment p{margin-bottom:.5rem}.postcomment__comment>:last-child{margin-bottom:0}.blogpagination__list{display:-webkit-box;display:-ms-flexbox;display:flex;padding-left:0;list-style:none}.blogpagination__item:first-child .blogpagination__link{margin-left:0}.blogpagination__item--active{font-weight:700}.blogpagination__link{display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1;border:1px solid}.blogpagination__item--disabled .blogpagination__link{pointer-events:none;cursor:auto}.blogwidget{margin-bottom:1.5rem}.blogwidget:last-child{margin-bottom:0}.blogwidget__content{overflow:hidden}.blogwidget__content>:last-child{margin-bottom:0}.blogwidgetlist{padding:0;margin:0;list-style:none}.blogwidgetlist .blogwidgetlist{padding-left:1rem}.blogwidgetlist__itemcount{margin-left:.25rem}.blogwidgetlist__itemcount:before{content:"("}.blogwidgetlist__itemcount:after{content:")"}.blogwidgetlist__itemauthor{font-weight:700}.blogwidgetlist--tags{margin:-.25rem!important}.blogwidgetlist--tags .blogwidgetlist__item{display:inline-block;vertical-align:middle;margin:.25rem}.blogwidgetlist--recentcomments .blogwidgetlist__item+.blogwidgetlist__item{margin-top:1rem}.blogwidgetlist--recentcomments .blogwidgetlist__itemtext{margin-bottom:.25rem}.blogwidgetlist--recentcomments .blogwidgetlist__itemauthoron{margin-left:.25rem;margin-right:.25rem}.alert__title{font-weight:700}.alert__list{margin:0;padding:0;list-style:none}
\ No newline at end of file
+.postmetagroup{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:-.135rem -.5rem;-ms-flex-wrap:wrap;flex-wrap:wrap}.postmetagroup__item{padding:.135rem .5rem;white-space:nowrap;width:100%}@media (min-width:576px){.postmetagroup__item{width:auto}}.postmetagroup__icon,.postmetagroup__prefix{opacity:.75}.postmetagroup__item{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.postmetagroup__body{margin-left:.25rem}.postmetagroup__content{white-space:normal}.postmetagroup__list{padding:0;margin:0;list-style:none}.postmetagroup__list li{display:inline}.postmetagroup__list li:not(:last-child):after{display:inline;content:", "}.postmetagroup--simple .postmetagroup__prefix{position:absolute!important;clip:rect(1px,1px,1px,1px)!important;padding:0!important;border:0!important;height:1px!important;width:1px!important;overflow:hidden!important}.postmetagroup--condensed .postmetagroup__body{display:-webkit-box;display:-ms-flexbox;display:flex}.postmetagroup--condensed .postmetagroup__prefix:after{display:inline;content:":"}.postmetagroup--condensed .postmetagroup__content{margin-left:.25rem}.postauthor{display:-webkit-box;display:-ms-flexbox;display:flex}.postauthor+.postauthor{border-top:1px solid rgba(0,0,0,.15);padding-top:1.5rem;margin-top:1.5rem}.postauthor__avatar{margin-right:1rem}.postauthor__avatarimage{display:block;border-radius:50%;overflow:hidden}.postauthor__body{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.postauthor__body>:last-child{margin-bottom:0}.postauthor__intro{opacity:.75}.postauthor__name{font-weight:700;font-size:1.25rem;line-height:1.5rem}.postauthor__sublinedivider{margin-right:.25rem}.postauthor__social{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-top:.25rem}.postauthor__social+.postauthor__actions{margin-top:.5rem}.postauthor__sociallink{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-right:.5rem}.postauthor__sociallinklabel{position:absolute!important;clip:rect(1px,1px,1px,1px)!important;padding:0!important;border:0!important;height:1px!important;width:1px!important;overflow:hidden!important}.postauthor__bio{margin-top:1rem;margin-bottom:1rem}.postauthor__bio p{margin-bottom:.5rem}.postauthor__bio>:last-child{margin-bottom:0}.postauthor__actions{margin-bottom:1rem}.blogbadge{display:inline-block;padding:.5em;border-radius:2px;border:1px solid;line-height:1em}.blogbadge:hover{text-decoration:none}.blogicon{top:.125em;position:relative;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-item-align:center;align-self:center}.blogicon svg{height:1em;width:1em}.postcomment{display:-webkit-box;display:-ms-flexbox;display:flex}.postcomment+.postcomment{border-top:1px solid rgba(0,0,0,.15);padding-top:1.5rem;margin-top:1.5rem}.postcomment__avatar{margin-right:1rem}.postcomment__avatarimage{display:block;border-radius:50%;overflow:hidden}.postcomment__body{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.postcomment__body>:last-child{margin-bottom:0}.postcomment__author{font-weight:700;font-size:1.25rem;line-height:1.5rem;margin-top:.5rem}.postcomment__comment{margin-top:1rem}.postcomment__comment p{margin-bottom:.5rem}.postcomment__comment>:last-child{margin-bottom:0}.blogpagination__list{display:-webkit-box;display:-ms-flexbox;display:flex;padding-left:0;list-style:none}.blogpagination__item:first-child .blogpagination__link{margin-left:0}.blogpagination__item--active{font-weight:700}.blogpagination__link{display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1;border:1px solid}.blogpagination__item--disabled .blogpagination__link{pointer-events:none;cursor:auto}.blogwidget{margin-bottom:1.5rem}.blogwidget:last-child{margin-bottom:0}.blogwidget__content{overflow:hidden}.blogwidget__content>:last-child{margin-bottom:0}.blogwidgetlist{padding:0;margin:0;list-style:none}.blogwidgetlist .blogwidgetlist{padding-left:1rem}.blogwidgetlist__itemcount{margin-left:.25rem}.blogwidgetlist__itemcount:before{content:"("}.blogwidgetlist__itemcount:after{content:")"}.blogwidgetlist__itemauthor{font-weight:700}.blogwidgetlist--tags{margin:-.25rem!important}.blogwidgetlist--tags .blogwidgetlist__item{display:inline-block;vertical-align:middle;margin:.25rem}.blogwidgetlist--recentcomments .blogwidgetlist__item+.blogwidgetlist__item{margin-top:1rem}.blogwidgetlist--recentcomments .blogwidgetlist__itemtext{margin-bottom:.25rem}.blogwidgetlist--recentcomments .blogwidgetlist__itemauthoron{margin-left:.25rem;margin-right:.25rem}.alert__title{font-weight:700}.alert__list{margin:0;padding:0;list-style:none}
\ No newline at end of file
diff --git a/Resources/Public/Icons/plugin-blog-footer.svg b/Resources/Public/Icons/plugin-blog-footer.svg
new file mode 100644
index 00000000..a134949e
--- /dev/null
+++ b/Resources/Public/Icons/plugin-blog-footer.svg
@@ -0,0 +1 @@
+
diff --git a/Resources/Public/Icons/plugin-blog-header.svg b/Resources/Public/Icons/plugin-blog-header.svg
new file mode 100644
index 00000000..a134949e
--- /dev/null
+++ b/Resources/Public/Icons/plugin-blog-header.svg
@@ -0,0 +1 @@
+
diff --git a/ext_localconf.php b/ext_localconf.php
index e863c8a1..542458f8 100644
--- a/ext_localconf.php
+++ b/ext_localconf.php
@@ -81,6 +81,22 @@
]
);
+ \TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
+ 'T3G.AgencyPack.Blog',
+ 'Header',
+ [
+ 'Post' => 'header',
+ ]
+ );
+
+ \TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
+ 'T3G.AgencyPack.Blog',
+ 'Footer',
+ [
+ 'Post' => 'footer',
+ ]
+ );
+
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
'T3G.AgencyPack.Blog',
'Metadata',
diff --git a/ext_tables.php b/ext_tables.php
index b8377b2d..a46f50bc 100644
--- a/ext_tables.php
+++ b/ext_tables.php
@@ -41,6 +41,8 @@
'plugin-blog-category' => 'EXT:blog/Resources/Public/Icons/plugin-blog-category.svg',
'plugin-blog-commentform' => 'EXT:blog/Resources/Public/Icons/plugin-blog-commentform.svg',
'plugin-blog-comments' => 'EXT:blog/Resources/Public/Icons/plugin-blog-comments.svg',
+ 'plugin-blog-header' => 'EXT:blog/Resources/Public/Icons/plugin-blog-header.svg',
+ 'plugin-blog-footer' => 'EXT:blog/Resources/Public/Icons/plugin-blog-footer.svg',
'plugin-blog-metadata' => 'EXT:blog/Resources/Public/Icons/plugin-blog-metadata.svg',
'plugin-blog-posts' => 'EXT:blog/Resources/Public/Icons/plugin-blog-posts.svg',
'plugin-blog-relatedposts' => 'EXT:blog/Resources/Public/Icons/plugin-blog-relatedposts.svg',
@@ -130,6 +132,18 @@
'LLL:EXT:blog/Resources/Private/Language/locallang_db.xlf:plugin.blog_relatedposts.title',
'plugin-blog-relatedposts'
);
+ \TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerPlugin(
+ 'T3G.AgencyPack.Blog',
+ 'Header',
+ 'LLL:EXT:blog/Resources/Private/Language/locallang_db.xlf:plugin.blog_header.title',
+ 'plugin-blog-header'
+ );
+ \TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerPlugin(
+ 'T3G.AgencyPack.Blog',
+ 'Footer',
+ 'LLL:EXT:blog/Resources/Private/Language/locallang_db.xlf:plugin.blog_footer.title',
+ 'plugin-blog-footer'
+ );
if (TYPO3_MODE === 'BE') {
// Module Web > Blog