Add page modules
parent
7631915e00
commit
0b1410ec83
|
@ -0,0 +1,18 @@
|
|||
title: AutoSlideshow
|
||||
extends@:
|
||||
type: module
|
||||
context: blueprints://pages
|
||||
form:
|
||||
validation: loose
|
||||
fields:
|
||||
header.duration:
|
||||
type: text
|
||||
label: Anzeigedauer (s)
|
||||
help: Zeit in Sekunden bis zum Bildwechsel
|
||||
default: 10
|
||||
validate:
|
||||
required: true
|
||||
type: int
|
||||
header.media:
|
||||
type: pagemedia
|
||||
label: PLUGIN_ADMIN.PAGE_MEDIA
|
|
@ -0,0 +1,24 @@
|
|||
title: BoxList
|
||||
extends@:
|
||||
type: default
|
||||
context: blueprints://pages
|
||||
form:
|
||||
validation: loose
|
||||
fields:
|
||||
header.boxes:
|
||||
type: list
|
||||
style: vertical
|
||||
label: Einträge
|
||||
fields:
|
||||
.image:
|
||||
type: pagemediaselect
|
||||
label: Bild
|
||||
.url:
|
||||
type: text
|
||||
label: Link
|
||||
.title:
|
||||
type: text
|
||||
label: Titel
|
||||
.description:
|
||||
type: text
|
||||
label: Beschreibung
|
|
@ -0,0 +1,27 @@
|
|||
title: SlideshowExt
|
||||
extends@:
|
||||
type: default
|
||||
context: blueprints://pages
|
||||
form:
|
||||
validation: loose
|
||||
fields:
|
||||
header.slides:
|
||||
type: list
|
||||
style: vertical
|
||||
label: Slides
|
||||
fields:
|
||||
.image:
|
||||
type: pagemediaselect
|
||||
label: Bild
|
||||
.title:
|
||||
type: text
|
||||
label: Titel
|
||||
.description:
|
||||
type: markdown
|
||||
label: Beschreibung
|
||||
.btn:
|
||||
type: text
|
||||
label: Button-Text (optional)
|
||||
.url:
|
||||
type: text
|
||||
label: Button-Link (optional)
|
|
@ -0,0 +1,46 @@
|
|||
title: TextBG
|
||||
extends@:
|
||||
type: default
|
||||
context: blueprints://pages
|
||||
form:
|
||||
validation: loose
|
||||
fields:
|
||||
header.textstyle:
|
||||
type: text
|
||||
label: CSS für Textblock
|
||||
help: 'Zusätzliche Inline-CSS-Regeln, die den ganzen Textblock betreffen'
|
||||
default: ''
|
||||
validate:
|
||||
required: false
|
||||
header.bgcolor:
|
||||
type: text
|
||||
label: Hintergrundfarbe
|
||||
help: 'Als CSS-Parameter, z.B. Hex, rgb() oder rgba()'
|
||||
default: ''
|
||||
validate:
|
||||
required: false
|
||||
header.bgimage:
|
||||
type: pagemediaselect
|
||||
label: Hintergrundbild
|
||||
default: ''
|
||||
validate:
|
||||
required: false
|
||||
header.bgimgstyle:
|
||||
type: text
|
||||
label: CSS für Hintergrundbild
|
||||
help: 'Zusätzliche Inline-CSS-Regeln, die für das Hintergrundbild gelten.'
|
||||
default: ''
|
||||
validate:
|
||||
required: false
|
||||
header.fullwidth:
|
||||
type: toggle
|
||||
label: Volle Breite
|
||||
help: 'Aktiviert die Nutzung der vollen Bildschirmbreite für dieses Modul'
|
||||
highlight: 1
|
||||
default: 0
|
||||
options:
|
||||
1: PLUGIN_ADMIN.ENABLED
|
||||
0: PLUGIN_ADMIN.DISABLED
|
||||
validate:
|
||||
required: true
|
||||
type: bool
|
|
@ -0,0 +1,9 @@
|
|||
{% extends 'partials/base.html.twig' %}
|
||||
|
||||
{% block content %}
|
||||
{% for module in page.collection() %}
|
||||
<!-- MODULE START -->
|
||||
{{ module.content|raw }}
|
||||
<!-- MODULE END -->
|
||||
{% endfor %}
|
||||
{% endblock %}
|
|
@ -0,0 +1,25 @@
|
|||
{% set slides = page.media.images %}
|
||||
|
||||
{% block custom_stylesheets %}
|
||||
{% do assets.addCss('theme://css/autoslideshow.css', 90) %}
|
||||
{% set slideStyle %}
|
||||
.auto-slideshow img {
|
||||
animation-duration: {{ page.header.duration * 3 }}s;
|
||||
}
|
||||
{% for image in slides %}
|
||||
.auto-slideshow img:nth-child({{ loop.index }}) { animation-delay: {{ loop.index0 * page.header.duration }}s }
|
||||
{% endfor %}
|
||||
{% endset %}
|
||||
{% do assets.addInlineCss(slideStyle, 90) %}
|
||||
{% endblock %}
|
||||
<div class="page-cell">
|
||||
<div class="text-tab-content grid-prop current-tab">
|
||||
<div class="text-inner">
|
||||
<div class="auto-slideshow">
|
||||
{% for image in slides %}
|
||||
<img loading="lazy" src="{{ image.url }}" alt="Slide">
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
|
@ -0,0 +1,20 @@
|
|||
{% block custom_stylesheets %}
|
||||
{% do assets.addCss('theme://css/boxlist.css', 90) %}
|
||||
{% endblock %}
|
||||
|
||||
<h1 class="page-cell">{{ page.title }}</h1>
|
||||
|
||||
<div class="img-box-list page-cell">
|
||||
{% for box in page.header.boxes %}
|
||||
<div class="img-box">
|
||||
<div class="animated-image">
|
||||
<img loading="lazy" alt="{{ box.title }}" style="position: relative; left: 0px; top: 0px; user-select: none" draggable="false" unselectable="on" src="{{ page.media[box.image].url|e }}">
|
||||
{% if box.url != '' %}<a href="{{ box.url }}" target="_blank">Zur<br/>Webseite</a>{% endif %}
|
||||
</div>
|
||||
<div class="img-box-caption">
|
||||
<h6>{{ box.title }}</h6>
|
||||
<span>{{ box.description }}</span>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
|
@ -0,0 +1,54 @@
|
|||
{% set slides = page.header.slides %}
|
||||
|
||||
{% block custom_stylesheets %}
|
||||
{% do assets.addCss('theme://css/slideshowext.css', 90) %}
|
||||
{% set slideStyle %}
|
||||
{% for image in slides %}
|
||||
#slide{{ loop.index }}:checked ~ #slide-content{{ loop.index }} {
|
||||
opacity: 1;
|
||||
visibility: visible;
|
||||
transition: visibility 0s 2s, opacity 2s 2s linear;
|
||||
}
|
||||
{% endfor %}
|
||||
{% for image in slides %}
|
||||
.slideshow-ext > input:nth-of-type({{ loop.index }}):checked ~ .slideshow-controls > label:nth-of-type({{ loop.index0 }}){% if loop.index < slides|length %},{% endif %}
|
||||
{% endfor %}{
|
||||
display: block;
|
||||
left: 0;
|
||||
right: auto;
|
||||
-moz-transform: rotate(45deg);
|
||||
-ms-transform: rotate(45deg);
|
||||
-o-transform: rotate(45deg);
|
||||
-webkit-transform: rotate(45deg);
|
||||
transform: rotate(45deg);
|
||||
}
|
||||
{% for image in slides %}
|
||||
.slideshow-ext > input:nth-of-type({{ loop.index }}):checked ~ .slideshow-controls > label:nth-of-type({{ loop.index + 1 }}){% if loop.index < slides|length %},{% endif %}
|
||||
{% endfor %}{
|
||||
display: block;
|
||||
right: 0;
|
||||
left: auto;
|
||||
-moz-transform: rotate(225deg);
|
||||
-ms-transform: rotate(225deg);
|
||||
-o-transform: rotate(225deg);
|
||||
-webkit-transform: rotate(225deg);
|
||||
transform: rotate(225deg);
|
||||
}
|
||||
{% endset %}
|
||||
{% do assets.addInlineCss(slideStyle, 90) %}
|
||||
{% endblock %}
|
||||
<div class="page-cell-fullwidth">
|
||||
<div class="text-tab-content grid-prop current-tab">
|
||||
<div class="text-inner">
|
||||
<div class="slideshow-ext">
|
||||
{% for image in slides %}
|
||||
<input type="radio" name="slide" id="slide{{ loop.index }}"{% if loop.index == 1 %} checked{% endif %} />
|
||||
{% endfor %}
|
||||
{% for image in slides %}<div id="slide-content{{ loop.index }}" class="slide-content"><div><h6>{{ image.title }}</h6><p>{{ image.description|markdown }}</p>{% if image.url != '' %}<a href="{{ image.url }}">{{ image.btn }}</a>{% endif %}</div><img loading="lazy" src="{{ page.media[image.image].url|e }}" alt="Slide"></div>{% endfor %}
|
||||
<div class="slideshow-controls">
|
||||
{% for image in slides %}<label for="slide{{ loop.index }}"></label>{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
|
@ -0,0 +1,13 @@
|
|||
{% block custom_stylesheets %}
|
||||
{% do assets.addCss('theme://css/text.css', 10) %}
|
||||
{% if page.header.bgimage != '' %}{% do assets.addInlineCss("#textbg-#{ page.id } { z-index: 1; position: relative; } #textbg-#{ page.id }::before { content: ''; background-image: url(#{ page.media[page.header.bgimage].url }); position: absolute; top: 0; left: 0; width: 100%; height: 100%; z-index: -1; background-position: center top; background-size: cover; background-repeat: no-repeat; #{ page.header.bgimgstyle } }", 10) %}{% endif %}
|
||||
{% if page.header.bgcolor != '' %}{% do assets.addInlineCss("#textbg-#{ page.id } { background-color: #{ page.header.bgcolor } }") %}{% endif %}
|
||||
{% if page.header.textstyle != '' %}{% do assets.addInlineCss("#textbg-#{ page.id } { #{ page.header.textstyle } }") %}{% endif %}
|
||||
{% endblock %}
|
||||
<div id="textbg-{{ page.id }}" class="page-cell{% if page.header.fullwidth == 1 %}-fullwidth{% endif %}">
|
||||
<div class="page-content-wrapper">
|
||||
<div class="page-text-wrapper">
|
||||
<div class="text-inner">{{ page.content|raw }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
Loading…
Reference in New Issue