Initial theme commit
3
.gitignore
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
.DS_Store
|
||||
Thumbs.db
|
||||
*.zip
|
||||
7
404.php
Executable file
@@ -0,0 +1,7 @@
|
||||
<?php get_header(); ?>
|
||||
<main class="site-main">
|
||||
<div class="narrow">
|
||||
<article class="post-card"><div class="single-post"><h1>Seite nicht gefunden</h1><p>Die URL stimmt nicht oder der Inhalt existiert nicht mehr.</p><?php get_search_form(); ?></div></article>
|
||||
</div>
|
||||
</main>
|
||||
<?php get_footer(); ?>
|
||||
13
archive.php
Executable file
@@ -0,0 +1,13 @@
|
||||
<?php get_header(); ?>
|
||||
<main class="site-main">
|
||||
<div class="container content-grid">
|
||||
<section class="content-area">
|
||||
<header class="archive-header"><h1><?php the_archive_title(); ?></h1><div><?php the_archive_description(); ?></div></header>
|
||||
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); get_template_part( 'template-parts/content', get_post_type() ); endwhile; ?>
|
||||
<div class="pagination"><?php the_posts_pagination(); ?></div>
|
||||
<?php else : get_template_part( 'template-parts/content', 'none' ); endif; ?>
|
||||
</section>
|
||||
<?php get_sidebar(); ?>
|
||||
</div>
|
||||
</main>
|
||||
<?php get_footer(); ?>
|
||||
BIN
assets/images/50ct_wike_210722.ico
Executable file
|
After Width: | Height: | Size: 422 KiB |
BIN
assets/images/footer-skyline.png
Executable file
|
After Width: | Height: | Size: 92 KiB |
BIN
assets/images/skyline.webp
Executable file
|
After Width: | Height: | Size: 31 KiB |
BIN
assets/images/slide-1.png
Executable file
|
After Width: | Height: | Size: 9.9 MiB |
BIN
assets/images/slide-2.png
Executable file
|
After Width: | Height: | Size: 1.9 MiB |
BIN
assets/images/slide-3.png
Executable file
|
After Width: | Height: | Size: 2.0 MiB |
19
assets/js/slider.js
Executable file
@@ -0,0 +1,19 @@
|
||||
document.addEventListener('DOMContentLoaded', function () {
|
||||
const slider = document.querySelector('.hero-slider');
|
||||
if (!slider) return;
|
||||
const slides = Array.from(slider.querySelectorAll('.slide'));
|
||||
const dots = Array.from(slider.querySelectorAll('.slider-dot'));
|
||||
if (slides.length < 2) return;
|
||||
let current = 0;
|
||||
function showSlide(index) {
|
||||
slides.forEach((slide, i) => slide.classList.toggle('is-active', i === index));
|
||||
dots.forEach((dot, i) => dot.classList.toggle('is-active', i === index));
|
||||
current = index;
|
||||
}
|
||||
dots.forEach((dot) => dot.addEventListener('click', function () {
|
||||
showSlide(Number(this.getAttribute('data-slide')));
|
||||
}));
|
||||
setInterval(function () {
|
||||
showSlide((current + 1) % slides.length);
|
||||
}, 5000);
|
||||
});
|
||||
8
comments.php
Executable file
@@ -0,0 +1,8 @@
|
||||
<?php if ( post_password_required() ) { return; } ?>
|
||||
<section class="comments-area">
|
||||
<?php if ( have_comments() ) : ?>
|
||||
<h2 class="comments-title">Kommentare</h2>
|
||||
<ol class="comment-list"><?php wp_list_comments(); ?></ol>
|
||||
<?php endif; ?>
|
||||
<?php comment_form(); ?>
|
||||
</section>
|
||||
29
footer.php
Executable file
@@ -0,0 +1,29 @@
|
||||
<footer class="site-footer">
|
||||
|
||||
<div class="footer-image">
|
||||
<img src="<?php echo get_template_directory_uri(); ?>/assets/images/footer-skyline.png" alt="Skyline">
|
||||
</div>
|
||||
|
||||
<div class="container footer-content">
|
||||
|
||||
<div class="footer-links">
|
||||
<?php
|
||||
wp_nav_menu([
|
||||
'theme_location' => 'footer',
|
||||
'container' => false,
|
||||
'menu_class' => 'footer-menu',
|
||||
'fallback_cb' => false
|
||||
]);
|
||||
?>
|
||||
</div>
|
||||
|
||||
<p class="footer-copy">
|
||||
© <?php echo esc_html(gmdate('Y')); ?> <?php bloginfo('name'); ?>
|
||||
</p>
|
||||
|
||||
</div>
|
||||
|
||||
</footer>
|
||||
<?php wp_footer(); ?>
|
||||
</body>
|
||||
</html>
|
||||
31
front-page.php
Executable file
@@ -0,0 +1,31 @@
|
||||
<?php get_header(); ?>
|
||||
<?php get_template_part( 'template-parts/slider' ); ?>
|
||||
<main class="site-main">
|
||||
<div class="container content-grid">
|
||||
<section class="content-area">
|
||||
<?php while ( have_posts() ) : the_post(); ?>
|
||||
<article id="post-<?php the_ID(); ?>" <?php post_class( 'page-content-card' ); ?>>
|
||||
<div class="page-content-card">
|
||||
<h1 class="entry-title"><?php the_title(); ?></h1>
|
||||
<div class="entry-content"><?php the_content(); ?></div>
|
||||
</div>
|
||||
</article>
|
||||
<?php endwhile; ?>
|
||||
|
||||
<section class="post-list">
|
||||
<h2>Neueste Beiträge</h2>
|
||||
<?php
|
||||
$kgv_posts = new WP_Query( array( 'post_type' => 'post', 'posts_per_page' => 5 ) );
|
||||
if ( $kgv_posts->have_posts() ) :
|
||||
while ( $kgv_posts->have_posts() ) : $kgv_posts->the_post();
|
||||
get_template_part( 'template-parts/content', get_post_type() );
|
||||
endwhile;
|
||||
wp_reset_postdata();
|
||||
endif;
|
||||
?>
|
||||
</section>
|
||||
</section>
|
||||
<?php get_sidebar(); ?>
|
||||
</div>
|
||||
</main>
|
||||
<?php get_footer(); ?>
|
||||
1305
functions.php
Executable file
25
header.php
Executable file
@@ -0,0 +1,25 @@
|
||||
<?php if ( ! defined( 'ABSPATH' ) ) { exit; } ?><!doctype html>
|
||||
<html <?php language_attributes(); ?>>
|
||||
<head>
|
||||
<meta charset="<?php bloginfo( 'charset' ); ?>">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<?php wp_head(); ?>
|
||||
</head>
|
||||
<body <?php body_class(); ?>>
|
||||
<?php wp_body_open(); ?>
|
||||
<header class="site-header">
|
||||
<div class="container header-inner">
|
||||
<div class="branding">
|
||||
<?php if ( function_exists( 'the_custom_logo' ) && has_custom_logo() ) : ?>
|
||||
<div class="site-logo"><?php the_custom_logo(); ?></div>
|
||||
<?php endif; ?>
|
||||
<div class="branding-text">
|
||||
<a class="site-title" href="<?php echo esc_url( home_url( '/' ) ); ?>"><?php bloginfo( 'name' ); ?></a>
|
||||
<?php if ( get_bloginfo( 'description' ) ) : ?><p class="site-description"><?php bloginfo( 'description' ); ?></p><?php endif; ?>
|
||||
</div>
|
||||
</div>
|
||||
<nav class="main-navigation" aria-label="<?php esc_attr_e( 'Hauptmenü', 'kgv-classic' ); ?>">
|
||||
<?php wp_nav_menu( array( 'theme_location' => 'primary', 'container' => false, 'fallback_cb' => 'wp_page_menu' ) ); ?>
|
||||
</nav>
|
||||
</div>
|
||||
</header>
|
||||
53
index.php
Executable file
@@ -0,0 +1,53 @@
|
||||
<?php get_header(); ?>
|
||||
|
||||
<?php if ( is_home() || is_front_page() ) : ?>
|
||||
<?php get_template_part( 'template-parts/slider' ); ?>
|
||||
<?php endif; ?>
|
||||
|
||||
<main class="site-main">
|
||||
<div class="container content-grid">
|
||||
<section class="content-area">
|
||||
|
||||
<?php
|
||||
$kgv_featured_post_id = absint( get_theme_mod( 'kgv_featured_post_id' ) );
|
||||
?>
|
||||
|
||||
<?php
|
||||
// Featured Beitrag oben anzeigen
|
||||
if ( ( is_home() || is_front_page() ) && $kgv_featured_post_id ) :
|
||||
$featured_post = get_post( $kgv_featured_post_id );
|
||||
|
||||
if ( $featured_post && 'publish' === $featured_post->post_status ) :
|
||||
setup_postdata( $GLOBALS['post'] = $featured_post );
|
||||
get_template_part( 'template-parts/content', get_post_type() );
|
||||
wp_reset_postdata();
|
||||
endif;
|
||||
endif;
|
||||
?>
|
||||
|
||||
<?php if ( have_posts() ) : ?>
|
||||
<?php while ( have_posts() ) : the_post(); ?>
|
||||
|
||||
<?php if ( $kgv_featured_post_id && get_the_ID() === $kgv_featured_post_id ) : ?>
|
||||
<?php continue; ?>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php get_template_part( 'template-parts/content', get_post_type() ); ?>
|
||||
|
||||
<?php endwhile; ?>
|
||||
|
||||
<div class="pagination">
|
||||
<?php the_posts_pagination(); ?>
|
||||
</div>
|
||||
|
||||
<?php else : ?>
|
||||
<?php get_template_part( 'template-parts/content', 'none' ); ?>
|
||||
<?php endif; ?>
|
||||
|
||||
</section>
|
||||
|
||||
<?php get_sidebar(); ?>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<?php get_footer(); ?>
|
||||
22
maintenance.php
Executable file
@@ -0,0 +1,22 @@
|
||||
|
||||
<!DOCTYPE html><html lang="fr-FR">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Kleingartenverein Usedom e.V</title>
|
||||
<style>
|
||||
body { font-family: Helvetica, Arial, sans-serif; font-size:16px; color: #000; font-weight:normal; }
|
||||
#container { width: 600px; padding: 70px 0; text-align:center; position:absolute; left:50%; top:50%; -webkit-transform: translate(-50%, -50%); -ms-transform: translate(-50%, -50%); transform: translate(-50%, -50%); }
|
||||
h1 { font-size: 36px; font-weight:normal; }
|
||||
</style>
|
||||
</head>
|
||||
<body class="home">
|
||||
<div id="container">
|
||||
<h1>Kleingartenverein Usedom e.V</h1>
|
||||
<p>
|
||||
In a permanent effort to improve our services, we currently are performing upgrades on our website.<br />
|
||||
We apologize for the inconvenience, but we will be pleased to see you back in a very few minutes.
|
||||
</p>
|
||||
<p>The maintenance team.</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
26
page.php
Executable file
@@ -0,0 +1,26 @@
|
||||
<?php
|
||||
$show_page_date = (bool) get_theme_mod( 'kgv_show_page_date', 1 );
|
||||
$hidden_page_ids = function_exists( 'kgv_get_hidden_page_date_ids' ) ? kgv_get_hidden_page_date_ids() : array();
|
||||
$hide_date_on_this_page = in_array( get_the_ID(), $hidden_page_ids, true );
|
||||
?>
|
||||
<?php get_header(); ?>
|
||||
<?php if ( is_front_page() ) : get_template_part( 'template-parts/slider' ); endif; ?>
|
||||
<main class="site-main">
|
||||
<div class="container content-grid">
|
||||
<section class="content-area">
|
||||
<?php while ( have_posts() ) : the_post(); ?>
|
||||
<article id="post-<?php the_ID(); ?>" <?php post_class( 'page-content-card' ); ?>>
|
||||
<div class="page-content-card">
|
||||
<h1 class="entry-title"><?php the_title(); ?></h1>
|
||||
<?php if ( $show_page_date && ! $hide_date_on_this_page ) : ?>
|
||||
<div class="entry-meta"><?php echo esc_html( get_the_date() ); ?></div>
|
||||
<?php endif; ?>
|
||||
<div class="entry-content"><?php the_content(); ?></div>
|
||||
</div>
|
||||
</article>
|
||||
<?php endwhile; ?>
|
||||
</section>
|
||||
<?php get_sidebar(); ?>
|
||||
</div>
|
||||
</main>
|
||||
<?php get_footer(); ?>
|
||||
12
readme.txt
Executable file
@@ -0,0 +1,12 @@
|
||||
KGV Classic
|
||||
|
||||
Installieren:
|
||||
1. Design > Themes > Theme hochladen
|
||||
2. ZIP auswählen und aktivieren
|
||||
3. Design > Menüs: Hauptmenü zuweisen
|
||||
4. Design > Widgets: Sidebar befüllen
|
||||
|
||||
Hinweis:
|
||||
- front-page.php zeigt oben Header, darunter Slider, darunter Content + Sidebar.
|
||||
- Sidebar ist klassisch registriert und für Plugin-Widgets gedacht.
|
||||
- Die Slideshow ist direkt im Theme eingebaut.
|
||||
BIN
screenshot.png
Normal file
|
After Width: | Height: | Size: 7.5 KiB |
13
search.php
Executable file
@@ -0,0 +1,13 @@
|
||||
<?php get_header(); ?>
|
||||
<main class="site-main">
|
||||
<div class="container content-grid">
|
||||
<section class="content-area">
|
||||
<header class="archive-header"><h1>Suche: <?php echo esc_html( get_search_query() ); ?></h1></header>
|
||||
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); get_template_part( 'template-parts/content', get_post_type() ); endwhile; ?>
|
||||
<div class="pagination"><?php the_posts_pagination(); ?></div>
|
||||
<?php else : get_template_part( 'template-parts/content', 'none' ); endif; ?>
|
||||
</section>
|
||||
<?php get_sidebar(); ?>
|
||||
</div>
|
||||
</main>
|
||||
<?php get_footer(); ?>
|
||||
11
sidebar.php
Executable file
@@ -0,0 +1,11 @@
|
||||
<?php if ( ! defined( 'ABSPATH' ) ) { exit; } ?>
|
||||
<aside class="sidebar-area">
|
||||
<?php if ( is_active_sidebar( 'sidebar-1' ) ) : ?>
|
||||
<?php dynamic_sidebar( 'sidebar-1' ); ?>
|
||||
<?php else : ?>
|
||||
<section class="widget">
|
||||
<h3 class="widget-title">Sidebar</h3>
|
||||
<p>Hier kannst du Widgets aus Plugins oder WordPress selbst einfügen.</p>
|
||||
</section>
|
||||
<?php endif; ?>
|
||||
</aside>
|
||||
72
single.php
Executable file
@@ -0,0 +1,72 @@
|
||||
<?php get_header(); ?>
|
||||
|
||||
<main class="site-main">
|
||||
<div class="container content-grid">
|
||||
<section class="content-area">
|
||||
<?php while ( have_posts() ) : the_post(); ?>
|
||||
<?php
|
||||
$is_rest_termin = (int) get_post_meta( get_the_ID(), '_kgv_is_rest_termin', true );
|
||||
$termin_datum = get_post_meta( get_the_ID(), '_kgv_termin_datum_formatted', true );
|
||||
$termin_owner = get_post_meta( get_the_ID(), '_kgv_termin_owner', true );
|
||||
?>
|
||||
|
||||
<article id="post-<?php the_ID(); ?>" <?php post_class( 'post-card single-post' ); ?>>
|
||||
<div class="single-post">
|
||||
|
||||
<?php if ( $is_rest_termin ) : ?>
|
||||
<div class="kgv-termin-single-header">
|
||||
<span class="kgv-termin-badge">Termin</span>
|
||||
<h1 class="entry-title"><?php the_title(); ?></h1>
|
||||
|
||||
<div class="kgv-termin-meta-grid">
|
||||
<?php if ( ! empty( $termin_datum ) ) : ?>
|
||||
<div class="kgv-termin-meta-item">
|
||||
<span class="kgv-termin-meta-label">Datum</span>
|
||||
<span class="kgv-termin-meta-value"><?php echo esc_html( $termin_datum ); ?></span>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php if ( ! empty( $termin_owner ) ) : ?>
|
||||
<div class="kgv-termin-meta-item">
|
||||
<span class="kgv-termin-meta-label">Verantwortlich</span>
|
||||
<span class="kgv-termin-meta-value"><?php echo esc_html( $termin_owner ); ?></span>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="entry-content kgv-termin-content">
|
||||
<?php the_content(); ?>
|
||||
</div>
|
||||
<?php else : ?>
|
||||
<h1 class="entry-title"><?php the_title(); ?></h1>
|
||||
|
||||
<div class="entry-meta">
|
||||
<span><?php echo esc_html( get_the_date() ); ?></span>
|
||||
<span>·</span>
|
||||
<span><?php the_author(); ?></span>
|
||||
</div>
|
||||
|
||||
<?php if ( has_post_thumbnail() ) : ?>
|
||||
<div class="featured-image">
|
||||
<?php the_post_thumbnail( 'large' ); ?>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
|
||||
<div class="entry-content">
|
||||
<?php the_content(); ?>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<?php comments_template(); ?>
|
||||
<?php endwhile; ?>
|
||||
</section>
|
||||
|
||||
<?php get_sidebar(); ?>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<?php get_footer(); ?>
|
||||
817
style.css
Executable file
@@ -0,0 +1,817 @@
|
||||
/*
|
||||
Theme Name: KGV Classic
|
||||
Theme URI: https://apex-project.de
|
||||
Author: Ronny Grobel
|
||||
Author URI: https://apex-project.de
|
||||
Description: Klassisches WordPress Theme mit Header, Menü, Slideshow, Content und widgetfähiger Sidebar.
|
||||
Version: 1.0.0
|
||||
Requires at least: 6.0
|
||||
Tested up to: 6.6
|
||||
Text Domain: kgv-classic
|
||||
*/
|
||||
|
||||
:root{
|
||||
--kgv-bg:#f6f1e8;
|
||||
--kgv-card:#ffffff;
|
||||
--kgv-text:#1d1d1d;
|
||||
--kgv-muted:#6c6c6c;
|
||||
--kgv-accent:#245c4f;
|
||||
--kgv-border:#e4dacb;
|
||||
--kgv-header-bg:#ffffff;
|
||||
--kgv-footer-bg:#ffffff;
|
||||
--kgv-body-font:Arial,Helvetica,sans-serif;
|
||||
--kgv-heading-font:Arial,Helvetica,sans-serif;
|
||||
--kgv-border-width:1px;
|
||||
--kgv-inner-border-width:1px;
|
||||
--kgv-card-padding:18px;
|
||||
--kgv-widget-padding:16px;
|
||||
--kgv-inner-box-padding:14px;
|
||||
--kgv-section-gap:22px;
|
||||
--kgv-card-margin-bottom:20px;
|
||||
--kgv-widget-margin-bottom:24px;
|
||||
--kgv-main-padding-top:28px;
|
||||
--kgv-main-padding-bottom:36px;
|
||||
--kgv-radius:10px;
|
||||
--kgv-inner-radius:8px;
|
||||
--kgv-shadow:0 10px 24px rgba(0,0,0,.06);
|
||||
}
|
||||
|
||||
*{
|
||||
box-sizing:border-box;
|
||||
}
|
||||
|
||||
html{
|
||||
-webkit-text-size-adjust:100%;
|
||||
}
|
||||
|
||||
body{
|
||||
margin:0;
|
||||
background:var(--kgv-bg);
|
||||
color:var(--kgv-text);
|
||||
font-family:var(--kgv-body-font);
|
||||
line-height:1.65;
|
||||
}
|
||||
|
||||
h1, h2, h3, h4, h5, h6,
|
||||
.entry-title,
|
||||
.site-title,
|
||||
.widget-title{
|
||||
font-family:var(--kgv-heading-font);
|
||||
}
|
||||
|
||||
img{
|
||||
max-width:100%;
|
||||
height:auto;
|
||||
display:block;
|
||||
}
|
||||
|
||||
a{
|
||||
color:var(--kgv-accent);
|
||||
text-decoration:none;
|
||||
}
|
||||
|
||||
a:hover{
|
||||
text-decoration:underline;
|
||||
}
|
||||
|
||||
.container{
|
||||
width:min(1180px,calc(100% - 32px));
|
||||
margin:0 auto;
|
||||
}
|
||||
|
||||
.narrow{
|
||||
width:min(760px,calc(100% - 32px));
|
||||
margin:0 auto;
|
||||
}
|
||||
|
||||
.site-header{
|
||||
position:sticky;
|
||||
top:0;
|
||||
z-index:50;
|
||||
background:var(--kgv-header-bg);
|
||||
backdrop-filter:blur(10px);
|
||||
border-bottom:var(--kgv-border-width) solid var(--kgv-border);
|
||||
}
|
||||
|
||||
.header-inner{
|
||||
display:flex;
|
||||
align-items:center;
|
||||
justify-content:space-between;
|
||||
gap:20px;
|
||||
padding:14px 0;
|
||||
}
|
||||
|
||||
.branding{
|
||||
min-width:0;
|
||||
display:flex;
|
||||
align-items:center;
|
||||
gap:12px;
|
||||
}
|
||||
|
||||
.branding-text{
|
||||
min-width:0;
|
||||
}
|
||||
|
||||
.site-logo{
|
||||
flex:0 0 auto;
|
||||
}
|
||||
|
||||
.site-logo .custom-logo-link{
|
||||
display:block;
|
||||
}
|
||||
|
||||
.site-logo .custom-logo{
|
||||
display:block;
|
||||
width:auto;
|
||||
height:auto;
|
||||
max-width:56px;
|
||||
max-height:56px;
|
||||
}
|
||||
|
||||
.site-title{
|
||||
display:inline-block;
|
||||
font-size:1.8rem;
|
||||
font-weight:800;
|
||||
color:var(--kgv-text);
|
||||
}
|
||||
|
||||
.site-description{
|
||||
margin:4px 0 0;
|
||||
color:var(--kgv-muted);
|
||||
font-size:.95rem;
|
||||
}
|
||||
|
||||
.main-navigation ul{
|
||||
list-style:none;
|
||||
margin:0;
|
||||
padding:0;
|
||||
display:flex;
|
||||
gap:18px;
|
||||
flex-wrap:wrap;
|
||||
}
|
||||
|
||||
.main-navigation li{
|
||||
margin:0;
|
||||
}
|
||||
|
||||
.main-navigation a{
|
||||
display:block;
|
||||
padding:6px 0;
|
||||
color:var(--kgv-text);
|
||||
font-weight:600;
|
||||
}
|
||||
|
||||
.main-navigation a:hover,
|
||||
.main-navigation a:focus,
|
||||
.main-navigation .current-menu-item > a,
|
||||
.main-navigation .current_page_item > a,
|
||||
.main-navigation .current-menu-ancestor > a{
|
||||
color:var(--kgv-accent);
|
||||
text-decoration:underline;
|
||||
}
|
||||
|
||||
.main-navigation .menu-item-auth-link a{
|
||||
display:block;
|
||||
padding:6px 0;
|
||||
color:var(--kgv-text);
|
||||
font-weight:600;
|
||||
background:transparent;
|
||||
border:0;
|
||||
border-radius:0;
|
||||
}
|
||||
|
||||
.main-navigation .menu-item-auth-link a:hover,
|
||||
.main-navigation .menu-item-auth-link a:focus{
|
||||
color:var(--kgv-accent);
|
||||
text-decoration:underline;
|
||||
}
|
||||
|
||||
.main-navigation .menu-item-auth-link.is-logout a{
|
||||
color:var(--kgv-text);
|
||||
}
|
||||
|
||||
.hero-slider{
|
||||
position:relative;
|
||||
overflow:hidden;
|
||||
background:#111;
|
||||
}
|
||||
|
||||
.slider-track{
|
||||
position:relative;
|
||||
min-height:clamp(320px,42vw,560px);
|
||||
}
|
||||
|
||||
.slide{
|
||||
position:absolute;
|
||||
inset:0;
|
||||
opacity:0;
|
||||
transition:opacity .6s ease;
|
||||
}
|
||||
|
||||
.slide.is-active{
|
||||
opacity:1;
|
||||
z-index:2;
|
||||
}
|
||||
|
||||
.slide img{
|
||||
width:100%;
|
||||
height:clamp(320px,42vw,560px);
|
||||
object-fit:cover;
|
||||
}
|
||||
|
||||
.slide-overlay{
|
||||
position:absolute;
|
||||
inset:0;
|
||||
background:linear-gradient(90deg,rgba(0,0,0,.56),rgba(0,0,0,.18));
|
||||
display:flex;
|
||||
align-items:center;
|
||||
}
|
||||
|
||||
.slide-content{
|
||||
color:#fff;
|
||||
}
|
||||
|
||||
.slide-content h2{
|
||||
font-size:clamp(2rem,5vw,4rem);
|
||||
line-height:1.05;
|
||||
margin:0 0 10px;
|
||||
}
|
||||
|
||||
.slide-content p{
|
||||
max-width:650px;
|
||||
margin:0 0 18px;
|
||||
font-size:clamp(1rem,1.8vw,1.2rem);
|
||||
}
|
||||
|
||||
.button{
|
||||
display:inline-block;
|
||||
background:#fff;
|
||||
color:#111;
|
||||
padding:10px 16px;
|
||||
border-radius:999px;
|
||||
font-weight:700;
|
||||
}
|
||||
|
||||
.slider-dots{
|
||||
position:absolute;
|
||||
left:50%;
|
||||
bottom:16px;
|
||||
transform:translateX(-50%);
|
||||
display:flex;
|
||||
gap:10px;
|
||||
z-index:4;
|
||||
}
|
||||
|
||||
.slider-dot{
|
||||
width:12px;
|
||||
height:12px;
|
||||
border-radius:999px;
|
||||
border:0;
|
||||
padding:0;
|
||||
cursor:pointer;
|
||||
background:rgba(255,255,255,.45);
|
||||
}
|
||||
|
||||
.slider-dot.is-active{
|
||||
background:#fff;
|
||||
}
|
||||
|
||||
.site-main{
|
||||
padding:var(--kgv-main-padding-top) 0 var(--kgv-main-padding-bottom);
|
||||
}
|
||||
|
||||
.content-grid{
|
||||
display:grid;
|
||||
grid-template-columns:minmax(0,2.2fr) minmax(280px,.9fr);
|
||||
gap:var(--kgv-section-gap);
|
||||
align-items:start;
|
||||
}
|
||||
|
||||
.post-card,
|
||||
.page-content-card,
|
||||
.widget,
|
||||
.comments-area,
|
||||
.archive-header{
|
||||
background:var(--kgv-card);
|
||||
border:var(--kgv-border-width) solid var(--kgv-border);
|
||||
border-radius:var(--kgv-radius);
|
||||
box-shadow:var(--kgv-shadow);
|
||||
}
|
||||
|
||||
.post-card,
|
||||
.page-content-card{
|
||||
padding:0;
|
||||
overflow:hidden;
|
||||
margin:0 0 var(--kgv-card-margin-bottom);
|
||||
}
|
||||
|
||||
.card-body,
|
||||
.page-content-card,
|
||||
.single-post{
|
||||
padding:var(--kgv-card-padding);
|
||||
}
|
||||
|
||||
.entry-title{
|
||||
margin:0 0 8px;
|
||||
font-size:clamp(1.7rem,3vw,2.2rem);
|
||||
line-height:1.15;
|
||||
}
|
||||
|
||||
.post-card .entry-title{
|
||||
font-size:clamp(1.45rem,2.2vw,2rem);
|
||||
}
|
||||
|
||||
.entry-title a{
|
||||
color:var(--kgv-text);
|
||||
}
|
||||
|
||||
.entry-meta{
|
||||
display:flex;
|
||||
gap:8px;
|
||||
flex-wrap:wrap;
|
||||
color:var(--kgv-muted);
|
||||
font-size:.95rem;
|
||||
margin-bottom:12px;
|
||||
}
|
||||
|
||||
.entry-excerpt,
|
||||
.entry-content{
|
||||
color:var(--kgv-text);
|
||||
}
|
||||
|
||||
.archive-header,
|
||||
.comments-area{
|
||||
padding:var(--kgv-card-padding);
|
||||
}
|
||||
|
||||
.sidebar-area .widget{
|
||||
padding:var(--kgv-widget-padding);
|
||||
margin:0 0 var(--kgv-widget-margin-bottom);
|
||||
border-radius:var(--kgv-radius);
|
||||
}
|
||||
|
||||
.pagination .nav-links{
|
||||
display:flex;
|
||||
gap:10px;
|
||||
flex-wrap:wrap;
|
||||
}
|
||||
|
||||
.pagination .page-numbers{
|
||||
display:inline-block;
|
||||
padding:8px 12px;
|
||||
border-radius:8px;
|
||||
background:#fff;
|
||||
border:var(--kgv-border-width) solid var(--kgv-border);
|
||||
}
|
||||
|
||||
.comment-list{
|
||||
padding-left:18px;
|
||||
}
|
||||
|
||||
.comment-body{
|
||||
background:#fff;
|
||||
border:var(--kgv-inner-border-width) solid var(--kgv-border);
|
||||
padding:var(--kgv-inner-box-padding);
|
||||
border-radius:var(--kgv-inner-radius);
|
||||
margin-bottom:12px;
|
||||
}
|
||||
|
||||
.widget input,
|
||||
.widget select,
|
||||
.search-form input[type="search"],
|
||||
.comment-form input,
|
||||
.comment-form textarea{
|
||||
width:100%;
|
||||
padding:8px 10px;
|
||||
border:var(--kgv-inner-border-width) solid #d7d7d7;
|
||||
border-radius:5px;
|
||||
background:#fff;
|
||||
font-size:0.95rem;
|
||||
line-height:1.4;
|
||||
}
|
||||
|
||||
.search-form input[type="submit"],
|
||||
.comment-form input[type="submit"]{
|
||||
width:auto;
|
||||
background:var(--kgv-accent);
|
||||
color:#fff;
|
||||
border:0;
|
||||
border-radius:999px;
|
||||
padding:10px 16px;
|
||||
font-weight:700;
|
||||
cursor:pointer;
|
||||
}
|
||||
|
||||
.search-form{
|
||||
display:flex;
|
||||
gap:8px;
|
||||
align-items:center;
|
||||
}
|
||||
|
||||
.search-form label{
|
||||
flex:1;
|
||||
margin:0;
|
||||
}
|
||||
|
||||
.search-form input[type="search"]{
|
||||
min-height:38px;
|
||||
}
|
||||
|
||||
.search-form input[type="submit"]{
|
||||
padding:8px 12px;
|
||||
border-radius:5px;
|
||||
font-size:0.9rem;
|
||||
line-height:1.2;
|
||||
min-height:38px;
|
||||
}
|
||||
|
||||
.kgv-termin-single-header{
|
||||
margin-bottom:18px;
|
||||
}
|
||||
|
||||
.kgv-termin-badge{
|
||||
display:inline-block;
|
||||
padding:4px 10px;
|
||||
border-radius:999px;
|
||||
background:var(--kgv-accent);
|
||||
color:#fff;
|
||||
font-size:0.8rem;
|
||||
font-weight:700;
|
||||
margin-bottom:12px;
|
||||
}
|
||||
|
||||
.kgv-termin-meta-grid{
|
||||
display:grid;
|
||||
grid-template-columns:repeat(auto-fit,minmax(180px,1fr));
|
||||
gap:12px;
|
||||
margin:18px 0 6px;
|
||||
}
|
||||
|
||||
.kgv-termin-meta-item{
|
||||
background:#faf7f2;
|
||||
border:var(--kgv-inner-border-width) solid var(--kgv-border);
|
||||
border-radius:var(--kgv-inner-radius);
|
||||
padding:var(--kgv-inner-box-padding);
|
||||
}
|
||||
|
||||
.kgv-termin-meta-label{
|
||||
display:block;
|
||||
font-size:0.8rem;
|
||||
color:var(--kgv-muted);
|
||||
margin-bottom:4px;
|
||||
text-transform:uppercase;
|
||||
letter-spacing:.03em;
|
||||
}
|
||||
|
||||
.kgv-termin-meta-value{
|
||||
display:block;
|
||||
font-weight:700;
|
||||
color:var(--kgv-text);
|
||||
}
|
||||
|
||||
.kgv-termin-content{
|
||||
margin-top:14px;
|
||||
}
|
||||
|
||||
.kgv-termin-import{
|
||||
margin-top:8px;
|
||||
}
|
||||
|
||||
.kgv-termin-box{
|
||||
background:#faf7f2;
|
||||
border:var(--kgv-inner-border-width) solid var(--kgv-border);
|
||||
border-radius:var(--kgv-inner-radius);
|
||||
padding:var(--kgv-inner-box-padding);
|
||||
margin-bottom:16px;
|
||||
}
|
||||
|
||||
.kgv-termin-row{
|
||||
margin-bottom:8px;
|
||||
color:var(--kgv-text);
|
||||
}
|
||||
|
||||
.kgv-termin-row:last-child{
|
||||
margin-bottom:0;
|
||||
}
|
||||
|
||||
.kgv-termin-description h3{
|
||||
margin:0 0 10px;
|
||||
font-size:1.1rem;
|
||||
color:var(--kgv-text);
|
||||
}
|
||||
|
||||
.kgv-termin-description p{
|
||||
margin:0;
|
||||
}
|
||||
|
||||
.widget_recent_entries ul{
|
||||
list-style:none;
|
||||
margin:0;
|
||||
padding:0;
|
||||
}
|
||||
|
||||
.widget_recent_entries ul li{
|
||||
margin-bottom:14px;
|
||||
padding-bottom:10px;
|
||||
border-bottom:var(--kgv-inner-border-width) solid var(--kgv-border);
|
||||
}
|
||||
|
||||
.widget_recent_entries ul li:last-child{
|
||||
margin-bottom:0;
|
||||
padding-bottom:0;
|
||||
border-bottom:0;
|
||||
}
|
||||
|
||||
.widget_recent_entries ul li a{
|
||||
display:block;
|
||||
font-weight:600;
|
||||
margin-bottom:2px;
|
||||
}
|
||||
|
||||
.widget_recent_entries .post-date{
|
||||
display:block;
|
||||
font-size:0.8rem;
|
||||
color:var(--kgv-muted);
|
||||
}
|
||||
|
||||
.archive-header{
|
||||
padding:var(--kgv-card-padding);
|
||||
border-radius:8px;
|
||||
display:flex;
|
||||
align-items:center;
|
||||
min-height:50px;
|
||||
margin-bottom:24px;
|
||||
}
|
||||
|
||||
.archive-header .entry-title,
|
||||
.archive-header h1{
|
||||
margin:0;
|
||||
font-size:1.2rem;
|
||||
line-height:1.2;
|
||||
}
|
||||
|
||||
.site-footer{
|
||||
background:var(--kgv-footer-bg);
|
||||
backdrop-filter:blur(10px);
|
||||
border-top:var(--kgv-border-width) solid var(--kgv-border);
|
||||
padding:8px 0 10px;
|
||||
color:var(--kgv-muted);
|
||||
overflow:visible;
|
||||
}
|
||||
|
||||
.footer-image{
|
||||
width:100%;
|
||||
margin:0 auto 6px;
|
||||
padding:0 16px;
|
||||
display:flex;
|
||||
justify-content:center;
|
||||
align-items:center;
|
||||
}
|
||||
|
||||
.footer-image img{
|
||||
display:block;
|
||||
width:min(100%,900px);
|
||||
height:auto;
|
||||
margin:0 auto;
|
||||
}
|
||||
|
||||
.footer-content{
|
||||
text-align:center;
|
||||
padding:20px 0 10px;
|
||||
}
|
||||
|
||||
.footer-menu{
|
||||
list-style:none;
|
||||
margin:0 0 12px;
|
||||
padding:0;
|
||||
display:flex;
|
||||
justify-content:center;
|
||||
gap:20px;
|
||||
flex-wrap:wrap;
|
||||
}
|
||||
|
||||
.footer-menu li{
|
||||
display:inline-block;
|
||||
}
|
||||
|
||||
.footer-menu a{
|
||||
text-decoration:none;
|
||||
color:var(--kgv-text);
|
||||
font-weight:600;
|
||||
}
|
||||
|
||||
.footer-menu a:hover,
|
||||
.footer-menu a:focus,
|
||||
.footer-menu .current-menu-item > a,
|
||||
.footer-menu .current_page_item > a,
|
||||
.footer-menu .current-menu-ancestor > a{
|
||||
text-decoration:underline;
|
||||
color:var(--kgv-accent);
|
||||
}
|
||||
|
||||
.footer-bottom{
|
||||
display:flex;
|
||||
justify-content:center;
|
||||
padding:4px 0 0;
|
||||
}
|
||||
|
||||
.footer-copy{
|
||||
margin:0;
|
||||
font-size:14px;
|
||||
opacity:0.8;
|
||||
}
|
||||
|
||||
/* Termine in Listen/Archiven an normales Kartendesign angleichen */
|
||||
.category-termine .post-card,
|
||||
.archive .post-card.kgv-termin-card,
|
||||
.blog .post-card.kgv-termin-card{
|
||||
background:var(--kgv-card);
|
||||
border:var(--kgv-border-width) solid var(--kgv-border);
|
||||
border-radius:var(--kgv-radius);
|
||||
box-shadow:var(--kgv-shadow);
|
||||
overflow:hidden;
|
||||
}
|
||||
|
||||
/* Falls Termine eigene Wrapper-Klasse haben */
|
||||
.kgv-termin-card{
|
||||
background:var(--kgv-card);
|
||||
border:var(--kgv-border-width) solid var(--kgv-border);
|
||||
border-radius:var(--kgv-radius);
|
||||
box-shadow:var(--kgv-shadow);
|
||||
overflow:hidden;
|
||||
margin:0 0 var(--kgv-card-margin-bottom);
|
||||
}
|
||||
|
||||
.kgv-termin-card .card-body{
|
||||
padding:var(--kgv-card-padding);
|
||||
}
|
||||
|
||||
.kgv-termin-card .entry-title{
|
||||
margin:0 0 8px;
|
||||
font-size:clamp(1.45rem,2.2vw,2rem);
|
||||
line-height:1.15;
|
||||
}
|
||||
|
||||
.kgv-termin-card .entry-title a{
|
||||
color:var(--kgv-text);
|
||||
text-decoration:none;
|
||||
}
|
||||
|
||||
.kgv-termin-card .entry-title a:hover{
|
||||
text-decoration:underline;
|
||||
}
|
||||
|
||||
.kgv-termin-card .entry-meta{
|
||||
display:flex;
|
||||
gap:8px;
|
||||
flex-wrap:wrap;
|
||||
color:var(--kgv-muted);
|
||||
font-size:.95rem;
|
||||
margin-bottom:12px;
|
||||
}
|
||||
|
||||
.kgv-termin-card .entry-summary,
|
||||
.kgv-termin-card .entry-content{
|
||||
color:var(--kgv-text);
|
||||
}
|
||||
|
||||
.kgv-termin-card .kgv-termin-badge{
|
||||
margin-bottom:10px;
|
||||
}
|
||||
|
||||
.kgv-termin-card .kgv-termin-date{
|
||||
display:inline-block;
|
||||
margin-bottom:12px;
|
||||
padding:4px 10px;
|
||||
border-radius:999px;
|
||||
background:#faf7f2;
|
||||
border:var(--kgv-inner-border-width) solid var(--kgv-border);
|
||||
color:var(--kgv-text);
|
||||
font-size:0.85rem;
|
||||
font-weight:700;
|
||||
}
|
||||
|
||||
/* Importierte Termine in Listen optisch an normale Beiträge angleichen */
|
||||
.post-card.kgv-termin-card{
|
||||
background:var(--kgv-card);
|
||||
border:var(--kgv-border-width) solid var(--kgv-border);
|
||||
border-radius:var(--kgv-radius);
|
||||
box-shadow:var(--kgv-shadow);
|
||||
overflow:hidden;
|
||||
margin:0 0 var(--kgv-card-margin-bottom);
|
||||
}
|
||||
|
||||
.post-card.kgv-termin-card .card-body{
|
||||
padding:var(--kgv-card-padding);
|
||||
}
|
||||
|
||||
.post-card.kgv-termin-card .entry-title{
|
||||
font-size:clamp(1.45rem,2.2vw,2rem);
|
||||
line-height:1.15;
|
||||
margin:0 0 8px;
|
||||
}
|
||||
|
||||
.post-card.kgv-termin-card .entry-title a{
|
||||
color:var(--kgv-text);
|
||||
}
|
||||
|
||||
.post-card.kgv-termin-card .entry-meta{
|
||||
display:flex;
|
||||
gap:8px;
|
||||
flex-wrap:wrap;
|
||||
color:var(--kgv-muted);
|
||||
font-size:.95rem;
|
||||
margin-bottom:12px;
|
||||
}
|
||||
|
||||
.post-card.kgv-termin-card .entry-summary,
|
||||
.post-card.kgv-termin-card .entry-content{
|
||||
color:var(--kgv-text);
|
||||
}
|
||||
|
||||
.post-card.kgv-termin-card .kgv-termin-import{
|
||||
margin-top:8px;
|
||||
}
|
||||
|
||||
.post-card.kgv-termin-card .kgv-termin-box{
|
||||
background:#faf7f2;
|
||||
border:var(--kgv-inner-border-width) solid var(--kgv-border);
|
||||
border-radius:var(--kgv-inner-radius);
|
||||
padding:var(--kgv-inner-box-padding);
|
||||
margin-bottom:16px;
|
||||
}
|
||||
|
||||
.post-card.kgv-termin-card .kgv-termin-row{
|
||||
margin-bottom:8px;
|
||||
}
|
||||
|
||||
.post-card.kgv-termin-card .kgv-termin-row:last-child{
|
||||
margin-bottom:0;
|
||||
}
|
||||
|
||||
.post-card.kgv-termin-card .kgv-termin-description h3{
|
||||
margin:0 0 10px;
|
||||
font-size:1.1rem;
|
||||
}
|
||||
|
||||
.post-card.kgv-termin-card .kgv-termin-description p{
|
||||
margin:0;
|
||||
}
|
||||
|
||||
.featured-image{
|
||||
margin:0 0 16px;
|
||||
}
|
||||
|
||||
.card-thumb img,
|
||||
.featured-image img{
|
||||
width:100%;
|
||||
height:auto;
|
||||
}
|
||||
|
||||
@media (max-width: 900px){
|
||||
.content-grid{
|
||||
grid-template-columns:1fr;
|
||||
}
|
||||
|
||||
.header-inner{
|
||||
flex-direction:column;
|
||||
align-items:flex-start;
|
||||
}
|
||||
|
||||
.sidebar-area .widget{
|
||||
margin-bottom:var(--kgv-card-margin-bottom);
|
||||
}
|
||||
|
||||
.footer-bottom{
|
||||
justify-content:center;
|
||||
text-align:center;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 640px){
|
||||
.container,
|
||||
.narrow{
|
||||
width:min(100%,calc(100% - 24px));
|
||||
}
|
||||
|
||||
.header-inner{
|
||||
gap:14px;
|
||||
}
|
||||
|
||||
.main-navigation ul{
|
||||
gap:12px;
|
||||
}
|
||||
|
||||
.slide-content p{
|
||||
max-width:none;
|
||||
}
|
||||
|
||||
.search-form{
|
||||
flex-direction:column;
|
||||
align-items:stretch;
|
||||
}
|
||||
|
||||
.search-form input[type="submit"]{
|
||||
width:100%;
|
||||
}
|
||||
}
|
||||
1
template-parts/content-none.php
Executable file
@@ -0,0 +1 @@
|
||||
<article class="post-card"><div class="single-post"><h2>Kein Inhalt gefunden</h2><p>Hier ist gerade nichts vorhanden.</p></div></article>
|
||||
8
template-parts/content.php
Executable file
@@ -0,0 +1,8 @@
|
||||
<article id="post-<?php the_ID(); ?>" <?php post_class( 'post-card' ); ?>>
|
||||
<?php if ( has_post_thumbnail() ) : ?><a class="card-thumb" href="<?php the_permalink(); ?>"><?php the_post_thumbnail( 'large' ); ?></a><?php endif; ?>
|
||||
<div class="card-body">
|
||||
<h2 class="entry-title"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
|
||||
<div class="entry-meta"><span><?php echo esc_html( get_the_date() ); ?></span><span>·</span><span><?php the_author(); ?></span></div>
|
||||
<div class="entry-excerpt"><?php the_excerpt(); ?></div>
|
||||
</div>
|
||||
</article>
|
||||
28
template-parts/slider.php
Executable file
@@ -0,0 +1,28 @@
|
||||
<?php $slides = function_exists( 'kgv_classic_slider_items' ) ? kgv_classic_slider_items() : array(); if ( empty( $slides ) ) { return; } ?>
|
||||
<section class="hero-slider" aria-label="Startseiten-Slideshow">
|
||||
<div class="slider-track">
|
||||
<?php foreach ( $slides as $index => $slide ) : ?>
|
||||
<article class="slide<?php echo 0 === $index ? ' is-active' : ''; ?>">
|
||||
<img src="<?php echo esc_url( $slide['image'] ); ?>" alt="<?php echo esc_attr( $slide['title'] ); ?>">
|
||||
<div class="slide-overlay">
|
||||
<div class="container slide-content">
|
||||
<h2><?php echo esc_html( $slide['title'] ); ?></h2>
|
||||
<p><?php echo esc_html( $slide['text'] ); ?></p>
|
||||
<?php if ( ! empty( $slide['button'] ) && ! empty( $slide['label'] ) ) : ?>
|
||||
<a class="button" href="<?php echo esc_url( $slide['button'] ); ?>">
|
||||
<?php echo esc_html( $slide['label'] ); ?>
|
||||
</a>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
<?php endforeach; ?>
|
||||
</div>
|
||||
<?php if ( count( $slides ) > 1 ) : ?>
|
||||
<div class="slider-dots" aria-hidden="true">
|
||||
<?php foreach ( $slides as $index => $slide ) : ?>
|
||||
<button class="slider-dot<?php echo 0 === $index ? ' is-active' : ''; ?>" data-slide="<?php echo esc_attr( $index ); ?>"></button>
|
||||
<?php endforeach; ?>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
</section>
|
||||