181e9639ed
The image macro was resizing every call to its width arg, including upscaling 270x180 service thumbnails to 600x400 and rendering 400x400 doctor portraits at full size. Live serves service thumbs at native 270x180 (CSS-floated) and doctor portraits at 200x200. - image macro: width=0 (default) skips resize, emits raw <img> with no width/height — lets theme CSS do the sizing, matching live pattern - img shortcode: defaults width to 0 so callers can omit it - service grid (home + 7 service pages): drop width=600 - doctor portraits on /team: width=200 (matches live render)
113 lines
3.9 KiB
HTML
113 lines
3.9 KiB
HTML
{% extends "base.html" %}
|
|
{% import "macros/image.html" as image %}
|
|
{% import "macros/section_title.html" as st %}
|
|
|
|
{% block content %}
|
|
|
|
{# ───────── Carousel ───────── #}
|
|
<div id="x-corp-carousel" class="carousel slide hero-slide" data-ride="carousel">
|
|
<ol class="carousel-indicators">
|
|
{% for slide in section.extra.slides %}
|
|
<li data-target="#x-corp-carousel"
|
|
data-slide-to="{{ loop.index0 }}"
|
|
class="{% if loop.first %}active{% endif %}"></li>
|
|
{% endfor %}
|
|
</ol>
|
|
<div class="carousel-inner" role="listbox">
|
|
{% for slide in section.extra.slides %}
|
|
<div class="item{% if loop.first %} active{% endif %}">
|
|
{{ image::render(src=slide.image, width=1920, alt=slide.alt) }}
|
|
<div class="carousel-caption">
|
|
<p>{{ slide.heading }}</p>
|
|
</div>
|
|
</div>
|
|
{% endfor %}
|
|
</div>
|
|
<a class="left carousel-control" href="#x-corp-carousel" role="button" data-slide="prev">
|
|
<i class="fa fa-angle-left" aria-hidden="true"></i>
|
|
<span class="sr-only">Previous</span>
|
|
</a>
|
|
<a class="right carousel-control" href="#x-corp-carousel" role="button" data-slide="next">
|
|
<i class="fa fa-angle-right" aria-hidden="true"></i>
|
|
<span class="sr-only">Next</span>
|
|
</a>
|
|
</div>
|
|
|
|
{# ───────── News (loaded from content/news.md) ───────── #}
|
|
{% set news_page = get_page(path="news.md") %}
|
|
<section class="news-text ptb-text" id="aktuelles">
|
|
{{ st::section_title(title="Aktuelles") }}
|
|
<div class="container">
|
|
<div class="row">
|
|
{{ news_page.content | safe }}
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
{# ───────── About columns ───────── #}
|
|
<section class="about-text ptb-100">
|
|
{{ st::section_title(title="Willkommen in unserer Praxis am Lienhardplatz") }}
|
|
<div class="container">
|
|
<div class="row">
|
|
{% for col in section.extra.about_columns %}
|
|
<div class="col-md-6">{{ col.text | markdown(inline=false) | safe }}</div>
|
|
{% endfor %}
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
{# ───────── Service grid ───────── #}
|
|
<section class="x-services ptb-100 gray-bg">
|
|
{{ st::section_title(title="Unsere Leistungen") }}
|
|
<div class="container">
|
|
{% for card in section.extra.service_cards %}
|
|
{% if loop.index0 % 2 == 0 %}<div class="row">{% endif %}
|
|
<div class="col-md-6">
|
|
<div class="thumbnail clearfix">
|
|
<a href="{{ card.url | safe }}">
|
|
{{ image::render(src=card.image, alt=card.title) }}
|
|
</a>
|
|
<div class="caption">
|
|
<h3><a href="{{ card.url | safe }}">{{ card.title }}</a></h3>
|
|
<p>{{ card.description }}</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{% if loop.index0 % 2 == 1 or loop.last %}</div>{% endif %}
|
|
{% endfor %}
|
|
</div>
|
|
</section>
|
|
|
|
{# ───────── Team preview ───────── #}
|
|
{% if section.extra.team_preview %}
|
|
<section class="team ptb-100">
|
|
{{ st::section_title(title="Ihr Ärzteteam") }}
|
|
<div class="container">
|
|
<div class="row">
|
|
{% for member in section.extra.team_preview %}
|
|
<div class="col-md-4">
|
|
<figure class="thumbnail">
|
|
<a href="{{ member.url | safe }}">
|
|
{{ image::render(src=member.image, width=400, alt=member.name) }}
|
|
</a>
|
|
<figcaption class="caption text-center">
|
|
<h3>{{ member.name }} -
|
|
<small>{{ member.position }}</small>
|
|
</h3>
|
|
</figcaption>
|
|
</figure>
|
|
</div>
|
|
{% endfor %}
|
|
</div>
|
|
</div>
|
|
</section>
|
|
{% endif %}
|
|
|
|
{# Notfall block intentionally skipped — was `published: false` in Grav. #}
|
|
|
|
{# Map embed removed — third-party iframes trigger GDPR cookie consent.
|
|
The live site had it removed for this reason; do not add back without
|
|
a consent gate. #}
|
|
|
|
{% endblock %}
|