commit 4d0189a7f21b3c9d298721398147ccadf5b375b8 Author: Ronny Grobel Date: Sun Apr 12 22:08:32 2026 +0200 Initial theme commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2b6e650 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +.DS_Store +Thumbs.db +*.zip diff --git a/404.php b/404.php new file mode 100755 index 0000000..11f771f --- /dev/null +++ b/404.php @@ -0,0 +1,7 @@ + +
+
+

Seite nicht gefunden

Die URL stimmt nicht oder der Inhalt existiert nicht mehr.

+
+
+ diff --git a/archive.php b/archive.php new file mode 100755 index 0000000..16c2d97 --- /dev/null +++ b/archive.php @@ -0,0 +1,13 @@ + +
+
+
+

+ + + +
+ +
+
+ diff --git a/assets/images/50ct_wike_210722.ico b/assets/images/50ct_wike_210722.ico new file mode 100755 index 0000000..95c916b Binary files /dev/null and b/assets/images/50ct_wike_210722.ico differ diff --git a/assets/images/footer-skyline.png b/assets/images/footer-skyline.png new file mode 100755 index 0000000..26916a3 Binary files /dev/null and b/assets/images/footer-skyline.png differ diff --git a/assets/images/skyline.webp b/assets/images/skyline.webp new file mode 100755 index 0000000..9680688 Binary files /dev/null and b/assets/images/skyline.webp differ diff --git a/assets/images/slide-1.png b/assets/images/slide-1.png new file mode 100755 index 0000000..070e7b3 Binary files /dev/null and b/assets/images/slide-1.png differ diff --git a/assets/images/slide-2.png b/assets/images/slide-2.png new file mode 100755 index 0000000..a6e745e Binary files /dev/null and b/assets/images/slide-2.png differ diff --git a/assets/images/slide-3.png b/assets/images/slide-3.png new file mode 100755 index 0000000..846a113 Binary files /dev/null and b/assets/images/slide-3.png differ diff --git a/assets/js/slider.js b/assets/js/slider.js new file mode 100755 index 0000000..524ae05 --- /dev/null +++ b/assets/js/slider.js @@ -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); +}); diff --git a/comments.php b/comments.php new file mode 100755 index 0000000..b78cccd --- /dev/null +++ b/comments.php @@ -0,0 +1,8 @@ + +
+ +

Kommentare

+
+ + +
diff --git a/footer.php b/footer.php new file mode 100755 index 0000000..ffcb60b --- /dev/null +++ b/footer.php @@ -0,0 +1,29 @@ + + + + \ No newline at end of file diff --git a/front-page.php b/front-page.php new file mode 100755 index 0000000..776e0a8 --- /dev/null +++ b/front-page.php @@ -0,0 +1,31 @@ + + +
+
+
+ +
> +
+

+
+
+
+ + +
+

Neueste Beiträge

+ '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; + ?> +
+
+ +
+
+ diff --git a/functions.php b/functions.php new file mode 100755 index 0000000..60e0968 --- /dev/null +++ b/functions.php @@ -0,0 +1,1305 @@ + $item ) { + $title = isset( $item->title ) ? strtolower( wp_strip_all_tags( $item->title ) ) : ''; + $url = isset( $item->url ) ? strtolower( $item->url ) : ''; + $classes = isset( $item->classes ) ? array_map( 'strtolower', (array) $item->classes ) : array(); + + $is_login_item = in_array( 'menu-item-login', $classes, true ) + || false !== strpos( $url, 'wp-login.php' ) + || false !== strpos( $url, '/login' ) + || in_array( $title, array( 'login', 'anmelden' ), true ); + + $is_logout_item = in_array( 'menu-item-logout', $classes, true ) + || false !== strpos( $url, 'action=logout' ) + || in_array( $title, array( 'logout', 'abmelden' ), true ); + + if ( $is_logged_in && $is_login_item ) { + unset( $items[ $key ] ); + } + + if ( ! $is_logged_in && $is_logout_item ) { + unset( $items[ $key ] ); + } + } + + return $items; +} +add_filter( 'wp_nav_menu_objects', 'kgv_classic_filter_auth_menu_items' ); + +function kgv_classic_get_login_redirect_url( $requested_redirect_to = '' ) { + $target = get_theme_mod( 'kgv_login_redirect_target', 'dashboard' ); + + if ( 'home' === $target ) { + return home_url( '/' ); + } + + if ( 'default' === $target ) { + return ! empty( $requested_redirect_to ) ? $requested_redirect_to : admin_url(); + } + + if ( 'custom' === $target ) { + $custom_url = trim( (string) get_theme_mod( 'kgv_login_redirect_custom_url', '' ) ); + + if ( ! empty( $custom_url ) ) { + return $custom_url; + } + } + + if ( current_user_can( 'manage_kleingarten' ) ) { + return admin_url( 'admin.php?page=kgvvm-dashboard' ); + } + + if ( current_user_can( 'view_assigned_parcels' ) ) { + return admin_url( 'admin.php?page=kgvvm-my-parcels' ); + } + + if ( current_user_can( 'read' ) ) { + return admin_url( 'index.php' ); + } + + return home_url( '/' ); +} + +function kgv_classic_login_redirect_to_dashboard( $redirect_to, $requested_redirect_to, $user ) { + if ( ! ( $user instanceof WP_User ) ) { + return $redirect_to; + } + + wp_set_current_user( $user->ID ); + + return kgv_classic_get_login_redirect_url( $requested_redirect_to ); +} +add_filter( 'login_redirect', 'kgv_classic_login_redirect_to_dashboard', 999, 3 ); + +function kgv_classic_add_auth_menu_item( $items, $args ) { + if ( empty( $args->theme_location ) || 'primary' !== $args->theme_location ) { + return $items; + } + + if ( ! (bool) get_theme_mod( 'kgv_show_auth_menu_link', 1 ) ) { + return $items; + } + + $has_auth_item = false !== stripos( $items, 'wp-login.php' ) + || false !== stripos( $items, 'action=logout' ) + || false !== stripos( $items, 'menu-item-login' ) + || false !== stripos( $items, 'menu-item-logout' ) + || false !== stripos( $items, 'menu-item-auth-link' ); + + if ( $has_auth_item ) { + return $items; + } + + if ( is_user_logged_in() ) { + $url = wp_logout_url( home_url( '/' ) ); + $label = __( 'Abmelden', 'kgv-classic' ); + $class = 'menu-item-auth-link is-logout'; + } else { + $url = wp_login_url( kgv_classic_get_login_redirect_url() ); + $label = __( 'Login', 'kgv-classic' ); + $class = 'menu-item-auth-link is-login'; + } + + $items .= sprintf( + '', + esc_attr( $class ), + esc_url( $url ), + esc_html( $label ) + ); + + return $items; +} +add_filter( 'wp_nav_menu_items', 'kgv_classic_add_auth_menu_item', 10, 2 ); + +function custom_wp_mail_from($original_email_address) { + return 'noreply@kgv-usedom.de'; +} +add_filter('wp_mail_from', 'custom_wp_mail_from'); + +function custom_wp_mail_from_name($original_email_from) { + return 'Kleingartenverein Usedom e.V'; +} +add_filter('wp_mail_from_name', 'custom_wp_mail_from_name'); + +add_action( 'admin_bar_menu', 'remove_wp_logo', 999 ); + function remove_wp_logo( $wp_admin_bar ) { + $wp_admin_bar->remove_node( 'wp-logo' ); +} + +function kgv_classic_custom_logo_attributes( $custom_logo_attr ) { + $custom_logo_attr['sizes'] = '(max-width: 782px) 40px, 56px'; + $custom_logo_attr['loading'] = 'eager'; + $custom_logo_attr['decoding'] = 'async'; + + return $custom_logo_attr; +} +add_filter( 'get_custom_logo_image_attributes', 'kgv_classic_custom_logo_attributes' ); + +function kgv_classic_setup() { + add_theme_support( 'title-tag' ); + add_theme_support( 'post-thumbnails' ); + add_theme_support( 'menus' ); + add_theme_support( + 'custom-logo', + array( + 'height' => 96, + 'width' => 96, + 'flex-height' => true, + 'flex-width' => true, + ) + ); + add_theme_support( + 'html5', + array( + 'search-form', + 'comment-form', + 'comment-list', + 'gallery', + 'caption', + 'style', + 'script', + ) + ); + + register_nav_menus( + array( + 'primary' => __( 'Hauptmenü', 'kgv-classic' ), + 'footer' => __( 'Footer Menü', 'kgv-classic' ), + ) + ); +} +add_action( 'after_setup_theme', 'kgv_classic_setup' ); + +function kgv_classic_widgets_init() { + register_sidebar( + array( + 'name' => __( 'Sidebar', 'kgv-classic' ), + 'id' => 'sidebar-1', + 'description' => __( 'Widget-Bereich für Sidebar und Plugin-Widgets.', 'kgv-classic' ), + 'before_widget' => '
', + 'after_widget' => '
', + 'before_title' => '

', + 'after_title' => '

', + ) + ); +} +add_action( 'widgets_init', 'kgv_classic_widgets_init' ); + +function kgv_classic_enqueue_assets() { + wp_enqueue_style( + 'kgv-classic-style', + get_stylesheet_uri(), + array(), + wp_get_theme()->get( 'Version' ) + ); + + wp_enqueue_script( + 'kgv-classic-slider', + get_template_directory_uri() . '/assets/js/slider.js', + array(), + wp_get_theme()->get( 'Version' ), + true + ); +} +add_action( 'wp_enqueue_scripts', 'kgv_classic_enqueue_assets' ); + +function kgv_sanitize_checkbox( $checked ) { + return ( isset( $checked ) && true == $checked ) ? 1 : 0; +} + +function kgv_sanitize_login_redirect_target( $value ) { + $allowed = array( 'dashboard', 'home', 'default', 'custom' ); + + if ( in_array( $value, $allowed, true ) ) { + return $value; + } + + return 'dashboard'; +} + +function kgv_get_font_choices() { + return array( + 'Arial, Helvetica, sans-serif' => 'Arial', + '"Trebuchet MS", Helvetica, sans-serif' => 'Trebuchet MS', + 'Georgia, "Times New Roman", serif' => 'Georgia', + '"Times New Roman", Times, serif' => 'Times New Roman', + 'Verdana, Geneva, sans-serif' => 'Verdana', + 'Tahoma, Geneva, sans-serif' => 'Tahoma', + '"Courier New", Courier, monospace' => 'Courier New', + 'system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif' => 'System UI', + ); +} + +function kgv_sanitize_font_choice( $value ) { + $choices = kgv_get_font_choices(); + + if ( array_key_exists( $value, $choices ) ) { + return $value; + } + + return 'Arial, Helvetica, sans-serif'; +} + +function kgv_sanitize_range_0_20( $value ) { + $value = absint( $value ); + + if ( $value < 0 ) { + $value = 0; + } + + if ( $value > 20 ) { + $value = 20; + } + + return $value; +} + +function kgv_sanitize_range_0_80( $value ) { + $value = absint( $value ); + + if ( $value < 0 ) { + $value = 0; + } + + if ( $value > 80 ) { + $value = 80; + } + + return $value; +} + +function kgv_sanitize_range_0_120( $value ) { + $value = absint( $value ); + + if ( $value < 0 ) { + $value = 0; + } + + if ( $value > 120 ) { + $value = 120; + } + + return $value; +} + +function kgv_customize_slider( $wp_customize ) { + + $wp_customize->add_section( + 'kgv_slider_section', + array( + 'title' => 'Slider', + 'priority' => 30, + ) + ); + + for ( $i = 1; $i <= 3; $i++ ) { + + $wp_customize->add_setting( "kgv_slide_{$i}_image" ); + $wp_customize->add_control( + new WP_Customize_Image_Control( + $wp_customize, + "kgv_slide_{$i}_image", + array( + 'label' => "Slide {$i} Bild", + 'section' => 'kgv_slider_section', + ) + ) + ); + + $wp_customize->add_setting( + "kgv_slide_{$i}_title", + array( + 'sanitize_callback' => 'sanitize_text_field', + ) + ); + $wp_customize->add_control( + "kgv_slide_{$i}_title", + array( + 'label' => "Slide {$i} Titel", + 'section' => 'kgv_slider_section', + 'type' => 'text', + ) + ); + + $wp_customize->add_setting( + "kgv_slide_{$i}_text", + array( + 'sanitize_callback' => 'sanitize_textarea_field', + ) + ); + $wp_customize->add_control( + "kgv_slide_{$i}_text", + array( + 'label' => "Slide {$i} Text", + 'section' => 'kgv_slider_section', + 'type' => 'textarea', + ) + ); + + $wp_customize->add_setting( + "kgv_slide_{$i}_show_button", + array( + 'sanitize_callback' => 'kgv_sanitize_checkbox', + ) + ); + $wp_customize->add_control( + "kgv_slide_{$i}_show_button", + array( + 'label' => 'Button anzeigen', + 'section' => 'kgv_slider_section', + 'type' => 'checkbox', + ) + ); + + $wp_customize->add_setting( + "kgv_slide_{$i}_button", + array( + 'sanitize_callback' => 'esc_url_raw', + ) + ); + $wp_customize->add_control( + "kgv_slide_{$i}_button", + array( + 'label' => 'Button Link', + 'section' => 'kgv_slider_section', + 'type' => 'url', + ) + ); + + $wp_customize->add_setting( + "kgv_slide_{$i}_label", + array( + 'sanitize_callback' => 'sanitize_text_field', + ) + ); + $wp_customize->add_control( + "kgv_slide_{$i}_label", + array( + 'label' => 'Button Text', + 'section' => 'kgv_slider_section', + 'type' => 'text', + ) + ); + } +} +add_action( 'customize_register', 'kgv_customize_slider' ); + +function kgv_classic_slider_items() { + $slides = array(); + + for ( $i = 1; $i <= 3; $i++ ) { + $image = get_theme_mod( "kgv_slide_{$i}_image" ); + + if ( empty( $image ) ) { + continue; + } + + $slides[] = array( + 'image' => $image, + 'title' => get_theme_mod( "kgv_slide_{$i}_title" ), + 'text' => get_theme_mod( "kgv_slide_{$i}_text" ), + 'button' => get_theme_mod( "kgv_slide_{$i}_button" ), + 'label' => get_theme_mod( "kgv_slide_{$i}_label" ), + 'show_button' => get_theme_mod( "kgv_slide_{$i}_show_button" ), + ); + } + + return $slides; +} + +function kgv_exclude_featured_post_from_home( $query ) { + if ( is_admin() || ! $query->is_main_query() ) { + return; + } + + if ( ! $query->is_home() && ! $query->is_front_page() ) { + return; + } + + $featured_post_id = absint( get_theme_mod( 'kgv_featured_post_id' ) ); + + if ( ! $featured_post_id ) { + return; + } + + $post__not_in = $query->get( 'post__not_in' ); + if ( ! is_array( $post__not_in ) ) { + $post__not_in = array(); + } + + $post__not_in[] = $featured_post_id; + + $query->set( 'post__not_in', array_unique( array_map( 'absint', $post__not_in ) ) ); +} +add_action( 'pre_get_posts', 'kgv_exclude_featured_post_from_home', 20 ); + +function kgv_featured_post_first( $query ) { + if ( is_admin() || ! $query->is_main_query() ) { + return; + } + + if ( ! $query->is_home() && ! $query->is_front_page() ) { + return; + } + + $featured_post_id = absint( get_theme_mod( 'kgv_featured_post_id' ) ); + + if ( ! $featured_post_id ) { + return; + } + + $post__in = $query->get( 'post__in' ); + if ( ! is_array( $post__in ) ) { + $post__in = array(); + } + + array_unshift( $post__in, $featured_post_id ); + $post__in = array_unique( array_map( 'absint', $post__in ) ); + + $query->set( 'post__in', $post__in ); + $query->set( 'orderby', 'post__in' ); +} +add_action( 'pre_get_posts', 'kgv_featured_post_first' ); + +function kgv_customize_register_featured_post( $wp_customize ) { + $wp_customize->add_section( + 'kgv_home_settings', + array( + 'title' => 'Startseite', + 'priority' => 30, + ) + ); + + $wp_customize->add_setting( + 'kgv_featured_post_id', + array( + 'default' => '', + 'sanitize_callback' => 'absint', + ) + ); + + $wp_customize->add_control( + 'kgv_featured_post_id', + array( + 'label' => 'Beitrags-ID oben anzeigen', + 'section' => 'kgv_home_settings', + 'type' => 'number', + ) + ); +} +add_action( 'customize_register', 'kgv_customize_register_featured_post' ); + +function kgv_customize_login_settings( $wp_customize ) { + $wp_customize->add_section( + 'kgv_login_settings', + array( + 'title' => 'Login', + 'priority' => 34, + ) + ); + + $wp_customize->add_setting( + 'kgv_login_redirect_target', + array( + 'default' => 'dashboard', + 'sanitize_callback' => 'kgv_sanitize_login_redirect_target', + ) + ); + + $wp_customize->add_control( + 'kgv_login_redirect_target', + array( + 'label' => 'Weiterleitung nach erfolgreichem Login', + 'section' => 'kgv_login_settings', + 'type' => 'select', + 'choices' => array( + 'dashboard' => 'Dashboard', + 'home' => 'Startseite', + 'default' => 'WordPress-Standard', + 'custom' => 'Benutzerdefinierte URL', + ), + ) + ); + + $wp_customize->add_setting( + 'kgv_show_auth_menu_link', + array( + 'default' => 1, + 'sanitize_callback' => 'kgv_sanitize_checkbox', + ) + ); + + $wp_customize->add_control( + 'kgv_show_auth_menu_link', + array( + 'label' => 'Login-/Logout-Link im Hauptmenü anzeigen', + 'section' => 'kgv_login_settings', + 'type' => 'checkbox', + ) + ); + + $wp_customize->add_setting( + 'kgv_login_redirect_custom_url', + array( + 'default' => '', + 'sanitize_callback' => 'esc_url_raw', + ) + ); + + $wp_customize->add_control( + 'kgv_login_redirect_custom_url', + array( + 'label' => 'Eigene Weiterleitungs-URL', + 'description' => 'Wird nur verwendet, wenn oben „Benutzerdefinierte URL“ gewählt ist.', + 'section' => 'kgv_login_settings', + 'type' => 'url', + ) + ); +} +add_action( 'customize_register', 'kgv_customize_login_settings' ); + +function kgv_customize_design_settings( $wp_customize ) { + + $wp_customize->add_section( + 'kgv_design_settings', + array( + 'title' => 'Design', + 'priority' => 35, + ) + ); + + $wp_customize->add_setting( + 'kgv_color_bg', + array( + 'default' => '#f6f1e8', + 'sanitize_callback' => 'sanitize_hex_color', + ) + ); + $wp_customize->add_control( + new WP_Customize_Color_Control( + $wp_customize, + 'kgv_color_bg', + array( + 'label' => 'Hintergrundfarbe', + 'section' => 'kgv_design_settings', + ) + ) + ); + + $wp_customize->add_setting( + 'kgv_color_card', + array( + 'default' => '#ffffff', + 'sanitize_callback' => 'sanitize_hex_color', + ) + ); + $wp_customize->add_control( + new WP_Customize_Color_Control( + $wp_customize, + 'kgv_color_card', + array( + 'label' => 'Kartenfarbe', + 'section' => 'kgv_design_settings', + ) + ) + ); + + $wp_customize->add_setting( + 'kgv_color_text', + array( + 'default' => '#1d1d1d', + 'sanitize_callback' => 'sanitize_hex_color', + ) + ); + $wp_customize->add_control( + new WP_Customize_Color_Control( + $wp_customize, + 'kgv_color_text', + array( + 'label' => 'Textfarbe', + 'section' => 'kgv_design_settings', + ) + ) + ); + + $wp_customize->add_setting( + 'kgv_color_muted', + array( + 'default' => '#6c6c6c', + 'sanitize_callback' => 'sanitize_hex_color', + ) + ); + $wp_customize->add_control( + new WP_Customize_Color_Control( + $wp_customize, + 'kgv_color_muted', + array( + 'label' => 'Sekundärtext', + 'section' => 'kgv_design_settings', + ) + ) + ); + + $wp_customize->add_setting( + 'kgv_color_accent', + array( + 'default' => '#245c4f', + 'sanitize_callback' => 'sanitize_hex_color', + ) + ); + $wp_customize->add_control( + new WP_Customize_Color_Control( + $wp_customize, + 'kgv_color_accent', + array( + 'label' => 'Akzentfarbe', + 'section' => 'kgv_design_settings', + ) + ) + ); + + $wp_customize->add_setting( + 'kgv_color_border', + array( + 'default' => '#e4dacb', + 'sanitize_callback' => 'sanitize_hex_color', + ) + ); + $wp_customize->add_control( + new WP_Customize_Color_Control( + $wp_customize, + 'kgv_color_border', + array( + 'label' => 'Rahmenfarbe', + 'section' => 'kgv_design_settings', + ) + ) + ); + + $wp_customize->add_setting( + 'kgv_color_header_bg', + array( + 'default' => '#ffffff', + 'sanitize_callback' => 'sanitize_hex_color', + ) + ); + $wp_customize->add_control( + new WP_Customize_Color_Control( + $wp_customize, + 'kgv_color_header_bg', + array( + 'label' => 'Header Hintergrund', + 'section' => 'kgv_design_settings', + ) + ) + ); + + $wp_customize->add_setting( + 'kgv_color_footer_bg', + array( + 'default' => '#ffffff', + 'sanitize_callback' => 'sanitize_hex_color', + ) + ); + $wp_customize->add_control( + new WP_Customize_Color_Control( + $wp_customize, + 'kgv_color_footer_bg', + array( + 'label' => 'Footer Hintergrund', + 'section' => 'kgv_design_settings', + ) + ) + ); + + $wp_customize->add_setting( + 'kgv_site_title_color', + array( + 'default' => '#1d1d1d', + 'sanitize_callback' => 'sanitize_hex_color', + ) + ); + $wp_customize->add_control( + new WP_Customize_Color_Control( + $wp_customize, + 'kgv_site_title_color', + array( + 'label' => 'Website-Titel Farbe', + 'section' => 'kgv_design_settings', + ) + ) + ); + + $wp_customize->add_setting( + 'kgv_site_title_size', + array( + 'default' => 29, + 'sanitize_callback' => 'kgv_sanitize_range_0_120', + ) + ); + $wp_customize->add_control( + 'kgv_site_title_size', + array( + 'label' => 'Website-Titel Schriftgröße in px', + 'section' => 'kgv_design_settings', + 'type' => 'number', + 'input_attrs' => array( + 'min' => 10, + 'max' => 120, + 'step' => 1, + ), + ) + ); + + $wp_customize->add_setting( + 'kgv_site_description_color', + array( + 'default' => '#6c6c6c', + 'sanitize_callback' => 'sanitize_hex_color', + ) + ); + $wp_customize->add_control( + new WP_Customize_Color_Control( + $wp_customize, + 'kgv_site_description_color', + array( + 'label' => 'Untertitel Farbe', + 'section' => 'kgv_design_settings', + ) + ) + ); + + $wp_customize->add_setting( + 'kgv_site_description_size', + array( + 'default' => 15, + 'sanitize_callback' => 'kgv_sanitize_range_0_120', + ) + ); + $wp_customize->add_control( + 'kgv_site_description_size', + array( + 'label' => 'Untertitel Schriftgröße in px', + 'section' => 'kgv_design_settings', + 'type' => 'number', + 'input_attrs' => array( + 'min' => 10, + 'max' => 120, + 'step' => 1, + ), + ) + ); + + $wp_customize->add_setting( + 'kgv_body_font', + array( + 'default' => 'Arial, Helvetica, sans-serif', + 'sanitize_callback' => 'kgv_sanitize_font_choice', + ) + ); + $wp_customize->add_control( + 'kgv_body_font', + array( + 'label' => 'Schriftart Fließtext', + 'section' => 'kgv_design_settings', + 'type' => 'select', + 'choices' => kgv_get_font_choices(), + ) + ); + + $wp_customize->add_setting( + 'kgv_heading_font', + array( + 'default' => 'Arial, Helvetica, sans-serif', + 'sanitize_callback' => 'kgv_sanitize_font_choice', + ) + ); + $wp_customize->add_control( + 'kgv_heading_font', + array( + 'label' => 'Schriftart Überschriften', + 'section' => 'kgv_design_settings', + 'type' => 'select', + 'choices' => kgv_get_font_choices(), + ) + ); + + $wp_customize->add_setting( + 'kgv_border_width', + array( + 'default' => 1, + 'sanitize_callback' => 'kgv_sanitize_range_0_20', + ) + ); + $wp_customize->add_control( + 'kgv_border_width', + array( + 'label' => 'Rahmenstärke außen in px', + 'section' => 'kgv_design_settings', + 'type' => 'number', + 'input_attrs' => array( + 'min' => 0, + 'max' => 20, + 'step' => 1, + ), + ) + ); + + $wp_customize->add_setting( + 'kgv_inner_border_width', + array( + 'default' => 1, + 'sanitize_callback' => 'kgv_sanitize_range_0_20', + ) + ); + $wp_customize->add_control( + 'kgv_inner_border_width', + array( + 'label' => 'Rahmenstärke innen in px', + 'section' => 'kgv_design_settings', + 'type' => 'number', + 'input_attrs' => array( + 'min' => 0, + 'max' => 20, + 'step' => 1, + ), + ) + ); + + $wp_customize->add_setting( + 'kgv_show_borders', + array( + 'default' => 1, + 'sanitize_callback' => 'kgv_sanitize_checkbox', + ) + ); + $wp_customize->add_control( + 'kgv_show_borders', + array( + 'label' => 'Außenrahmen anzeigen', + 'section' => 'kgv_design_settings', + 'type' => 'checkbox', + ) + ); + + $wp_customize->add_setting( + 'kgv_show_inner_borders', + array( + 'default' => 1, + 'sanitize_callback' => 'kgv_sanitize_checkbox', + ) + ); + $wp_customize->add_control( + 'kgv_show_inner_borders', + array( + 'label' => 'Innenrahmen anzeigen', + 'section' => 'kgv_design_settings', + 'type' => 'checkbox', + ) + ); + + $wp_customize->add_setting( + 'kgv_card_padding', + array( + 'default' => 18, + 'sanitize_callback' => 'kgv_sanitize_range_0_120', + ) + ); + $wp_customize->add_control( + 'kgv_card_padding', + array( + 'label' => 'Innenabstand Karten in px', + 'section' => 'kgv_design_settings', + 'type' => 'number', + 'input_attrs' => array( + 'min' => 0, + 'max' => 120, + 'step' => 1, + ), + ) + ); + + $wp_customize->add_setting( + 'kgv_widget_padding', + array( + 'default' => 16, + 'sanitize_callback' => 'kgv_sanitize_range_0_120', + ) + ); + $wp_customize->add_control( + 'kgv_widget_padding', + array( + 'label' => 'Innenabstand Widgets in px', + 'section' => 'kgv_design_settings', + 'type' => 'number', + 'input_attrs' => array( + 'min' => 0, + 'max' => 120, + 'step' => 1, + ), + ) + ); + + $wp_customize->add_setting( + 'kgv_inner_box_padding', + array( + 'default' => 14, + 'sanitize_callback' => 'kgv_sanitize_range_0_120', + ) + ); + $wp_customize->add_control( + 'kgv_inner_box_padding', + array( + 'label' => 'Innenabstand Innenboxen in px', + 'section' => 'kgv_design_settings', + 'type' => 'number', + 'input_attrs' => array( + 'min' => 0, + 'max' => 120, + 'step' => 1, + ), + ) + ); + + $wp_customize->add_setting( + 'kgv_section_gap', + array( + 'default' => 22, + 'sanitize_callback' => 'kgv_sanitize_range_0_120', + ) + ); + $wp_customize->add_control( + 'kgv_section_gap', + array( + 'label' => 'Abstand Content/Sidebar in px', + 'section' => 'kgv_design_settings', + 'type' => 'number', + 'input_attrs' => array( + 'min' => 0, + 'max' => 120, + 'step' => 1, + ), + ) + ); + + $wp_customize->add_setting( + 'kgv_card_margin_bottom', + array( + 'default' => 20, + 'sanitize_callback' => 'kgv_sanitize_range_0_120', + ) + ); + $wp_customize->add_control( + 'kgv_card_margin_bottom', + array( + 'label' => 'Abstand unter Karten in px', + 'section' => 'kgv_design_settings', + 'type' => 'number', + 'input_attrs' => array( + 'min' => 0, + 'max' => 120, + 'step' => 1, + ), + ) + ); + + $wp_customize->add_setting( + 'kgv_widget_margin_bottom', + array( + 'default' => 24, + 'sanitize_callback' => 'kgv_sanitize_range_0_120', + ) + ); + $wp_customize->add_control( + 'kgv_widget_margin_bottom', + array( + 'label' => 'Abstand unter Widgets in px', + 'section' => 'kgv_design_settings', + 'type' => 'number', + 'input_attrs' => array( + 'min' => 0, + 'max' => 120, + 'step' => 1, + ), + ) + ); + + $wp_customize->add_setting( + 'kgv_main_padding_top', + array( + 'default' => 28, + 'sanitize_callback' => 'kgv_sanitize_range_0_120', + ) + ); + $wp_customize->add_control( + 'kgv_main_padding_top', + array( + 'label' => 'Seitenabstand oben in px', + 'section' => 'kgv_design_settings', + 'type' => 'number', + 'input_attrs' => array( + 'min' => 0, + 'max' => 120, + 'step' => 1, + ), + ) + ); + + $wp_customize->add_setting( + 'kgv_main_padding_bottom', + array( + 'default' => 36, + 'sanitize_callback' => 'kgv_sanitize_range_0_120', + ) + ); + $wp_customize->add_control( + 'kgv_main_padding_bottom', + array( + 'label' => 'Seitenabstand unten in px', + 'section' => 'kgv_design_settings', + 'type' => 'number', + 'input_attrs' => array( + 'min' => 0, + 'max' => 120, + 'step' => 1, + ), + ) + ); +} +add_action( 'customize_register', 'kgv_customize_design_settings' ); + +function kgv_customizer_dynamic_css() { + $bg = get_theme_mod( 'kgv_color_bg', '#f6f1e8' ); + $card = get_theme_mod( 'kgv_color_card', '#ffffff' ); + $text = get_theme_mod( 'kgv_color_text', '#1d1d1d' ); + $muted = get_theme_mod( 'kgv_color_muted', '#6c6c6c' ); + $accent = get_theme_mod( 'kgv_color_accent', '#245c4f' ); + $border = get_theme_mod( 'kgv_color_border', '#e4dacb' ); + $header_bg = get_theme_mod( 'kgv_color_header_bg', '#ffffff' ); + $footer_bg = get_theme_mod( 'kgv_color_footer_bg', '#ffffff' ); + $site_title_color = get_theme_mod( 'kgv_site_title_color', '#1d1d1d' ); + $site_title_size = absint( get_theme_mod( 'kgv_site_title_size', 29 ) ); + $site_description_color = get_theme_mod( 'kgv_site_description_color', '#6c6c6c' ); + $site_description_size = absint( get_theme_mod( 'kgv_site_description_size', 15 ) ); + $body_font = get_theme_mod( 'kgv_body_font', 'Arial, Helvetica, sans-serif' ); + $heading_font = get_theme_mod( 'kgv_heading_font', 'Arial, Helvetica, sans-serif' ); + $border_width = absint( get_theme_mod( 'kgv_border_width', 1 ) ); + $inner_border_width = absint( get_theme_mod( 'kgv_inner_border_width', 1 ) ); + $show_borders = (int) get_theme_mod( 'kgv_show_borders', 1 ); + $show_inner_borders = (int) get_theme_mod( 'kgv_show_inner_borders', 1 ); + $card_padding = absint( get_theme_mod( 'kgv_card_padding', 18 ) ); + $widget_padding = absint( get_theme_mod( 'kgv_widget_padding', 16 ) ); + $inner_box_padding = absint( get_theme_mod( 'kgv_inner_box_padding', 14 ) ); + $section_gap = absint( get_theme_mod( 'kgv_section_gap', 22 ) ); + $card_margin_bottom = absint( get_theme_mod( 'kgv_card_margin_bottom', 20 ) ); + $widget_margin_bottom = absint( get_theme_mod( 'kgv_widget_margin_bottom', 24 ) ); + $main_padding_top = absint( get_theme_mod( 'kgv_main_padding_top', 28 ) ); + $main_padding_bottom = absint( get_theme_mod( 'kgv_main_padding_bottom', 36 ) ); + + $outer_border_value = $show_borders ? $border_width : 0; + $inner_border_value = $show_inner_borders ? $inner_border_width : 0; + + $css = " + :root{ + --kgv-bg: {$bg}; + --kgv-card: {$card}; + --kgv-text: {$text}; + --kgv-muted: {$muted}; + --kgv-accent: {$accent}; + --kgv-border: {$border}; + --kgv-header-bg: {$header_bg}; + --kgv-footer-bg: {$footer_bg}; + --kgv-site-title-color: {$site_title_color}; + --kgv-site-title-size: {$site_title_size}px; + --kgv-site-description-color: {$site_description_color}; + --kgv-site-description-size: {$site_description_size}px; + --kgv-body-font: {$body_font}; + --kgv-heading-font: {$heading_font}; + --kgv-border-width: {$outer_border_value}px; + --kgv-inner-border-width: {$inner_border_value}px; + --kgv-card-padding: {$card_padding}px; + --kgv-widget-padding: {$widget_padding}px; + --kgv-inner-box-padding: {$inner_box_padding}px; + --kgv-section-gap: {$section_gap}px; + --kgv-card-margin-bottom: {$card_margin_bottom}px; + --kgv-widget-margin-bottom: {$widget_margin_bottom}px; + --kgv-main-padding-top: {$main_padding_top}px; + --kgv-main-padding-bottom: {$main_padding_bottom}px; + } + + .site-title{ + color: var(--kgv-site-title-color); + font-size: var(--kgv-site-title-size); + } + + .site-description{ + color: var(--kgv-site-description-color); + font-size: var(--kgv-site-description-size); + } + + .site-main{ + padding: var(--kgv-main-padding-top) 0 var(--kgv-main-padding-bottom); + } + + .content-grid{ + gap: var(--kgv-section-gap); + } + + .post-card, + .page-content-card{ + margin: 0 0 var(--kgv-card-margin-bottom); + } + + .card-body, + .page-content-card, + .single-post{ + padding: var(--kgv-card-padding); + } + + .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); + } + + .comment-body, + .kgv-termin-meta-item, + .kgv-termin-box{ + padding: var(--kgv-inner-box-padding); + } + + .widget_recent_entries ul li{ + margin-bottom: calc(var(--kgv-widget-padding) - 2px); + padding-bottom: calc(var(--kgv-widget-padding) - 6px); + } + + @media (max-width: 900px){ + .sidebar-area .widget{ + margin-bottom: var(--kgv-card-margin-bottom); + } + } + "; + + wp_add_inline_style( 'kgv-classic-style', $css ); +} +add_action( 'wp_enqueue_scripts', 'kgv_customizer_dynamic_css', 20 ); + +function kgv_sanitize_page_checkbox_list( $value ) { + if ( is_array( $value ) ) { + $ids = array_map( 'absint', $value ); + } else { + $ids = array_map( 'absint', explode( ',', (string) $value ) ); + } + + $ids = array_filter( $ids ); + $ids = array_unique( $ids ); + + return implode( ',', $ids ); +} + +function kgv_get_hidden_page_date_ids() { + $raw = get_theme_mod( 'kgv_hide_page_date_ids', '' ); + + if ( empty( $raw ) ) { + return array(); + } + + return array_unique( array_filter( array_map( 'absint', explode( ',', (string) $raw ) ) ) ); +} + +function kgv_customize_page_meta_settings( $wp_customize ) { + + if ( class_exists( 'WP_Customize_Control' ) && ! class_exists( 'KGV_Customize_Page_Checkbox_List_Control' ) ) { + class KGV_Customize_Page_Checkbox_List_Control extends WP_Customize_Control { + public $type = 'kgv-page-checkbox-list'; + + public function render_content() { + $pages = get_pages(); + + if ( empty( $pages ) ) { + echo '' . esc_html( $this->label ) . ''; + echo '

Keine Seiten gefunden.

'; + return; + } + + $values = $this->value(); + if ( ! is_array( $values ) ) { + $values = array_filter( array_map( 'absint', explode( ',', (string) $values ) ) ); + } + + echo '' . esc_html( $this->label ) . ''; + + if ( ! empty( $this->description ) ) { + echo '' . esc_html( $this->description ) . ''; + } + + echo '
'; + + foreach ( $pages as $page ) { + $checked = in_array( (int) $page->ID, $values, true ) ? 'checked="checked"' : ''; + + echo ''; + } + + echo '
'; + } + } + } + + $wp_customize->add_section( 'kgv_page_meta_settings', array( + 'title' => 'Seiten', + 'priority' => 35, + ) ); + + $wp_customize->add_setting( 'kgv_show_page_date', array( + 'default' => 1, + 'sanitize_callback' => 'absint', + ) ); + + $wp_customize->add_control( 'kgv_show_page_date', array( + 'label' => 'Datum auf Seiten grundsätzlich anzeigen', + 'section' => 'kgv_page_meta_settings', + 'type' => 'checkbox', + ) ); + + $wp_customize->add_setting( 'kgv_hide_page_date_ids', array( + 'default' => '', + 'sanitize_callback' => 'kgv_sanitize_page_checkbox_list', + ) ); + + $wp_customize->add_control( + new KGV_Customize_Page_Checkbox_List_Control( + $wp_customize, + 'kgv_hide_page_date_ids', + array( + 'label' => 'Datum auf ausgewählten Seiten ausblenden', + 'description' => 'Hier nur Seiten auswählen. Beiträge tauchen hier nicht auf.', + 'section' => 'kgv_page_meta_settings', + ) + ) + ); +} +add_action( 'customize_register', 'kgv_customize_page_meta_settings' ); + diff --git a/header.php b/header.php new file mode 100755 index 0000000..13b6435 --- /dev/null +++ b/header.php @@ -0,0 +1,25 @@ + +> + + + + + +> + + diff --git a/index.php b/index.php new file mode 100755 index 0000000..705d578 --- /dev/null +++ b/index.php @@ -0,0 +1,53 @@ + + + + + + +
+
+
+ + + + post_status ) : + setup_postdata( $GLOBALS['post'] = $featured_post ); + get_template_part( 'template-parts/content', get_post_type() ); + wp_reset_postdata(); + endif; + endif; + ?> + + + + + + + + + + + + + + + + + + +
+ + +
+
+ + \ No newline at end of file diff --git a/maintenance.php b/maintenance.php new file mode 100755 index 0000000..e89cf9e --- /dev/null +++ b/maintenance.php @@ -0,0 +1,22 @@ + + + + + Kleingartenverein Usedom e.V + + + +
+

Kleingartenverein Usedom e.V

+

+ In a permanent effort to improve our services, we currently are performing upgrades on our website.
+ We apologize for the inconvenience, but we will be pleased to see you back in a very few minutes. +

+

The maintenance team.

+
+ + \ No newline at end of file diff --git a/page.php b/page.php new file mode 100755 index 0000000..53c4ed6 --- /dev/null +++ b/page.php @@ -0,0 +1,26 @@ + + + +
+
+
+ +
> +
+

+ + + +
+
+
+ +
+ +
+
+ diff --git a/readme.txt b/readme.txt new file mode 100755 index 0000000..7aa949f --- /dev/null +++ b/readme.txt @@ -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. diff --git a/screenshot.png b/screenshot.png new file mode 100644 index 0000000..91a3ac5 Binary files /dev/null and b/screenshot.png differ diff --git a/search.php b/search.php new file mode 100755 index 0000000..6f7a4bb --- /dev/null +++ b/search.php @@ -0,0 +1,13 @@ + +
+
+
+

Suche:

+ + + +
+ +
+
+ diff --git a/sidebar.php b/sidebar.php new file mode 100755 index 0000000..b964165 --- /dev/null +++ b/sidebar.php @@ -0,0 +1,11 @@ + + diff --git a/single.php b/single.php new file mode 100755 index 0000000..c3bd9e9 --- /dev/null +++ b/single.php @@ -0,0 +1,72 @@ + + +
+
+
+ + + +
> +
+ + +
+ Termin +

+ +
+ +
+ Datum + +
+ + + +
+ Verantwortlich + +
+ +
+
+ +
+ +
+ +

+ + + + + + + +
+ +
+ + +
+
+ + + +
+ + +
+
+ + \ No newline at end of file diff --git a/style.css b/style.css new file mode 100755 index 0000000..a1e6de0 --- /dev/null +++ b/style.css @@ -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%; + } +} \ No newline at end of file diff --git a/template-parts/content-none.php b/template-parts/content-none.php new file mode 100755 index 0000000..9929230 --- /dev/null +++ b/template-parts/content-none.php @@ -0,0 +1 @@ +

Kein Inhalt gefunden

Hier ist gerade nichts vorhanden.

\ No newline at end of file diff --git a/template-parts/content.php b/template-parts/content.php new file mode 100755 index 0000000..9e6cd9d --- /dev/null +++ b/template-parts/content.php @@ -0,0 +1,8 @@ +
> + +
+

+ +
+
+
diff --git a/template-parts/slider.php b/template-parts/slider.php new file mode 100755 index 0000000..234b448 --- /dev/null +++ b/template-parts/slider.php @@ -0,0 +1,28 @@ + +
+
+ $slide ) : ?> +
+ <?php echo esc_attr( $slide['title'] ); ?> +
+
+

+

+ + + + + +
+
+
+ +
+ 1 ) : ?> + + +