13 Commits
1.0 ... 1.1

9 changed files with 1474 additions and 1278 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

View File

@@ -27,9 +27,18 @@ if ( get_theme_mod('slider_enabled', false) ) :
endfor;
?>
</div>
<!-- Nur anzeigen, wenn die Paginierung NICHT ausgeblendet ist -->
<?php if ( ! get_theme_mod('slider_hide_pagination', false) ) : ?>
<div class="swiper-pagination"></div>
<?php endif; ?>
<!-- Nur anzeigen, wenn die Pfeile NICHT ausgeblendet sind -->
<?php if ( ! get_theme_mod('slider_hide_arrows', false) ) : ?>
<div class="swiper-button-prev"></div>
<div class="swiper-button-next"></div>
<?php endif; ?>
</section>
<?php else : ?>
<?php
@@ -65,8 +74,11 @@ if ( get_theme_mod('slider_enabled', false) ) :
<?php endif; ?>
<div class="post-content">
<h2 class="post-title"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
<div class="post-excerpt">
<?php the_excerpt(); ?>
<!-- =================================================================== -->
<!-- === HIER IST DIE ÄNDERUNG: Vollen Inhalt anstelle des Auszugs === -->
<!-- =================================================================== -->
<div class="post-full-content">
<?php the_content(); ?>
</div>
</div>
</article>

View File

@@ -47,6 +47,15 @@ function minecraft_modern_scripts() {
true
);
// NEU: Ankündigungs-Skript laden
wp_enqueue_script(
'announcement-script',
get_template_directory_uri() . '/js/announcement.js',
array(), // Keine Abhängigkeiten
'1.0',
true
);
// Swiper.js JS (von CDN)
wp_enqueue_script(
'swiper-js',
@@ -86,13 +95,14 @@ function minecraft_modern_scripts() {
}
// Übergebe ALLE Theme-Einstellungen an das JavaScript
// KORREKTUR: Der Objektname muss 'sliderSettings' bleiben, damit slider-init.js funktioniert.
wp_localize_script(
'minecraft-modern-slider-script',
'sliderSettings',
array(
'hideArrows' => get_theme_mod( 'slider_hide_arrows', false ) ? '1' : '0',
'hidePagination' => get_theme_mod( 'slider_hide_pagination', false ) ? '1' : '0',
'effect' => get_theme_mod( 'slider_effect', 'fade' ),
'direction' => get_theme_mod( 'slider_direction', 'horizontal' ),
'defaultMode' => get_theme_mod( 'default_theme_mode', 'dark' ),
'ajax_url' => admin_url('admin-ajax.php')
)
@@ -188,9 +198,58 @@ function create_faq_post_type() {
}
add_action('init', 'create_faq_post_type');
// =============================================================================
// NEU: Automatische "Home" Seitenerstellung und Zuweisung (kombiniert)
// =============================================================================
/**
* Erstellt die "Home" Seite und weist sie automatisch als statische Startseite zu,
* wenn das Theme aktiviert wird und noch keine Seite festgelegt ist.
*/
function set_static_front_page_automatically() {
// Nur ausführen, wenn noch keine statische Seite als Startseite festgelegt ist
if ( 'page' !== get_option( 'show_on_front' ) ) {
// Finde die "Home" Seite (oder erstelle sie, falls sie nicht existiert)
$home_page = get_page_by_title( 'Home' );
if ( ! $home_page ) {
// Seite erstellen, falls sie nicht existiert
$home_page_id = wp_insert_post( array(
'post_title' => 'Home',
'post_content' => 'Diese Seite dient als statische Startseite.',
'post_status' => 'publish',
'post_type' => 'page',
'post_author' => 1,
) );
} else {
$home_page_id = $home_page->ID;
}
// Setze die Seite als statische Startseite
if ( $home_page_id ) {
update_option( 'show_on_front', 'page' );
update_option( 'page_on_front', $home_page_id );
}
}
}
add_action( 'after_switch_theme', 'set_static_front_page_automatically' );
/**
* Fügt eine Body-Klasse hinzu, um den Home-Titel per CSS auszublenden.
*/
function add_home_body_class( $classes ) {
// Prüfen, ob wir auf der Startseite sind und die Einstellung zum Ausblenden aktiv ist
if ( is_front_page() && !get_theme_mod( 'show_home_title', true ) ) {
$classes[] = 'home-title-hidden';
}
return $classes;
}
add_filter( 'body_class', 'add_home_body_class' );
// =============================================================================
// NEU: Automatische FAQ-Seitenerstellung und Template-Zuweisung
// Automatische FAQ-Seitenerstellung und Template-Zuweisung
// =============================================================================
/**
@@ -238,3 +297,4 @@ function load_faq_page_template( $template ) {
return $template;
}
add_filter( 'template_include', 'load_faq_page_template' );

View File

@@ -12,14 +12,12 @@
<div class="header-main">
<div class="site-branding">
<?php
// Zeigt das Logo an, wenn eines vorhanden ist.
if ( function_exists( 'the_custom_logo' ) && has_custom_logo() ) {
the_custom_logo();
}
?>
<?php
// Zeigt den Titel der Website IMMER an.
// Verwendet <h1> auf der Startseite, sonst <p> für bessere SEO.
if ( is_front_page() && is_home() ) :
?>
<h1 class="site-title"><a href="<?php echo esc_url( home_url( '/' ) ); ?>" rel="home"><?php bloginfo( 'name' ); ?></a></h1>

View File

@@ -84,6 +84,22 @@ function minecraft_modern_customize_register( $wp_customize ) {
'label' => 'Paginierung (Punkte) ausblenden', 'section' => 'header_slider', 'settings' => 'slider_hide_pagination', 'type' => 'checkbox',
) );
// =========================================================================
// === NEU: Slider-Effekt-Einstellungen ===================================
// =========================================================================
$wp_customize->add_setting( 'slider_effect', array( 'default' => 'fade', 'sanitize_callback' => 'sanitize_key' ) );
$wp_customize->add_control( 'slider_effect', array(
'label' => 'Slider-Effekt', 'section' => 'header_slider', 'settings' => 'slider_effect', 'type' => 'select',
'choices' => array( 'slide' => 'Horizontales Gleiten', 'fade' => 'Überblenden', 'cube' => 'Würfel-Effekt' ),
) );
$wp_customize->add_setting( 'slider_direction', array( 'default' => 'horizontal', 'sanitize_callback' => 'sanitize_key' ) );
$wp_customize->add_control( 'slider_direction', array(
'label' => 'Slider-Richtung (nur für "Gleiten")', 'section' => 'header_slider', 'settings' => 'slider_direction', 'type' => 'select',
'choices' => array( 'horizontal' => 'Horizontal', 'vertical' => 'Vertikal' ),
) );
// --- Sektion: Startseiten-Hero (Fallback) ---
$wp_customize->add_section( 'hero_section', array(
@@ -207,7 +223,6 @@ add_action( 'customize_register', 'minecraft_modern_customize_register' );
// === DYNAMISCHES CSS =====================================================
// =========================================================================
// Diese Funktion bleibt unverändert, da sie bereits gut strukturiert ist.
function minecraft_modern_dynamic_css_output() {
$accent_color = get_theme_mod( 'primary_accent_color', '#00d4ff' );
$slider_font = get_theme_mod( 'slider_font_family', 'Raleway' );
@@ -252,6 +267,26 @@ function minecraft_modern_dynamic_css_output() {
.slider-subtitle, .hero-subtitle {
font-size: <?php echo esc_attr($chosen_sizes['subtitle']); ?>;
}
/* =================================================================== */
/* === NEU: Trennlinien mit der Akzentfarbe ========================= */
/* =================================================================== */
/* Trennlinie unter dem Header */
.site-header {
border-bottom: 4px solid var(--primary-accent);
}
/* Trennlinie unter dem Slider */
.hero-slider {
border-bottom: 4px solid var(--primary-accent);
}
/* Trennlinie am oberen Rand des Footers */
.site-footer {
border-top: 4px solid var(--primary-accent);
}
</style>
<?php
}

View File

@@ -1,55 +1,65 @@
document.addEventListener('DOMContentLoaded', function() {
// Hole den Slider-Container
const heroSlider = document.querySelector('.hero-slider');
// Stelle sicher, dass der Slider auf der Seite existiert, bevor du versuchst, ihn zu konfigurieren
if (!heroSlider) {
return;
<!DOCTYPE html>
<html <?php language_attributes(); ?>>
<head>
<meta charset="<?php bloginfo( 'charset' ); ?>">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css">
<?php wp_head(); ?>
</head>
<body <?php body_class(); ?>>
<header id="masthead" class="site-header">
<div class="container">
<div class="header-main">
<div class="site-branding">
<?php
if ( function_exists( 'the_custom_logo' ) && has_custom_logo() ) {
the_custom_logo();
}
?>
<?php
// Konfiguration für den Slider vorbereiten
const swiperConfig = {
// Optionen für den Slider
loop: true, // Endloses Schleifen
if ( is_front_page() && is_home() ) :
?>
<h1 class="site-title"><a href="<?php echo esc_url( home_url( '/' ) ); ?>" rel="home"><?php bloginfo( 'name' ); ?></a></h1>
<?php else : ?>
<p class="site-title"><a href="<?php echo esc_url( home_url( '/' ) ); ?>" rel="home"><?php bloginfo( 'name' ); ?></a></p>
<?php endif; ?>
</div>
<nav id="site-navigation" class="main-navigation">
<?php wp_nav_menu( array( 'theme_location' => 'primary', 'container' => false ) ); ?>
</nav>
<div class="header-info">
<div class="social-links">
<?php
// Array mit den Social-Media-Plattformen und ihren Font Awesome Klassen
$social_icons = array(
'discord' => 'fab fa-discord',
'youtube' => 'fab fa-youtube',
'twitter' => 'fab fa-x-twitter', // Neues Icon für Twitter/X
'facebook' => 'fab fa-facebook-f',
'instagram' => 'fab fa-instagram',
'tiktok' => 'fab fa-tiktok',
'twitch' => 'fab fa-twitch',
'steam' => 'fab fa-steam',
'github' => 'fab fa-github',
'linkedin' => 'fab fa-linkedin-in',
'pinterest' => 'fab fa-pinterest-p',
'reddit' => 'fab fa-reddit-alien',
'teamspeak' => 'fab fa-teamspeak',
'spotify' => 'fab fa-spotify'
);
// Autoplay
autoplay: {
delay: 5000, // 5 Sekunden pro Slide
disableOnInteraction: false, // Autoplay nicht nach Klick stoppen
},
// Wenn der Nutzer die Maus darüber bewegt, pausieren
pauseOnMouseEnter: true,
// Effekt
effect: 'fade', // Übergangseffekt: 'slide', 'fade', 'cube', etc.
fadeEffect: {
crossFade: true
// Schleife, die alle verfügbaren Icons durchgeht
foreach ($social_icons as $key => $class) {
// Prüfen, ob für diese Plattform eine URL im Customizer hinterlegt wurde
if (get_theme_mod('social_' . $key)) {
// Wenn ja, Link und Icon ausgeben
echo '<a href="' . esc_url(get_theme_mod('social_' . $key)) . '" target="_blank"><i class="' . esc_attr($class) . '"></i></a>';
}
};
// Prüfe, ob die Pfeile ausgeblendet werden sollen
if (sliderSettings.hideArrows === '1') {
heroSlider.classList.add('slider-hide-arrows');
} else {
// Navigation nur hinzufügen, wenn sie nicht ausgeblendet wird
swiperConfig.navigation = {
nextEl: '.swiper-button-next',
prevEl: '.swiper-button-prev',
};
}
// Prüfe, ob die Paginierung ausgeblendet werden soll
if (sliderSettings.hidePagination === '1') {
heroSlider.classList.add('slider-hide-pagination');
} else {
// Pagination nur hinzufügen, wenn sie nicht ausgeblendet wird
swiperConfig.pagination = {
el: '.swiper-pagination',
clickable: true, // Klick auf Punkt springt zum Slide
};
}
// Initialisiere den Slider mit der konfigurierten Optionen
new Swiper('.hero-slider', swiperConfig);
});
?>
</div>
</div>
</div>
</div>
</header>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

View File

@@ -4,7 +4,7 @@ Theme URI: https://git.viper.ipv64.net/M_Viper/Minecraft-Modern-Theme
Author: M_Viper
Description: Ein modernes Gaming-Theme mit konfigurierbarem Header-Slider.
Author URI: https://M-Viper.de
Version: 1.0
Version: 1.1
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: minecraft-modern-theme
@@ -84,20 +84,27 @@ a:hover { color: #fff; }
box-shadow: 0 2px 15px rgba(0,0,0,0.3);
}
/* =================================================================== */
/* === KORRIGIERT: Header-Layout für linksbündige Ausrichtung ========= */
/* =================================================================== */
.header-main {
display: flex;
justify-content: space-between;
align-items: center;
justify-content: flex-start; /* <== KORREKTUR: Alle Elemente linksbündig anordnen */
gap: 120px; /* Gleichmäßiger Abstand zwischen den Elementen */
}
/* =================================================================== */
.site-branding {
display: flex;
align-items: center;
gap: 15px;
}
.custom-logo-link img, .custom-logo {
max-height: 60px;
margin-right: 15px;
width: auto;
}
@@ -264,18 +271,12 @@ a:hover { color: #fff; }
}
.footer-widgets {
/* <<< HIER IST DIE KORREKTE LÖSUNG: */
display: flex;
justify-content: space-between; /* Platziert 1 links, 3 rechts, 2 in der Mitte */
align-items: flex-start;
gap: 40px; /* Gleichmäßiger Abstand zwischen den Widgets */
}
/* NEUE REGEL: Zieht das dritte Widget nach links */
.footer-widget:last-child {
margin-right: -0px; /* <<< HIER ANGEPASST: Erhöhter negativer Wert */
}
.footer-widget .widget-title {
font-size: 15px;
color: var(--primary-accent);
@@ -529,6 +530,56 @@ html.light-mode .icon-moon { opacity: 0.3; }
html.light-mode .icon-sun { opacity: 1; }
.theme-toggle:hover .icon-moon, .theme-toggle:hover .icon-sun { transform: scale(1.1); }
/* === ANKÜNDIGUNGSLEISTE ============================================== */
/* =================================================================== */
.announcement-bar {
background-color: var(--announcement-bg, #2c3e50);
color: #ffffff;
padding: 12px 0;
text-align: center;
position: relative;
border-bottom: 3px solid var(--primary-accent);
font-size: 15px;
}
.announcement-bar .container {
display: flex;
align-items: center;
justify-content: center;
padding-right: 40px;
}
.announcement-bar .announcement-title {
margin: 0;
font-size: 16px;
font-weight: 600;
color: #fff;
}
.announcement-bar p {
margin: 0 0 15px;
}
.announcement-close {
position: absolute;
right: 20px;
top: 50%;
transform: translateY(-50%);
background: none;
border: none;
color: #ffffff;
font-size: 24px;
line-height: 1;
cursor: pointer;
opacity: 0.7;
transition: opacity 0.2s ease;
}
.announcement-close:hover {
opacity: 1;
}
/* === CUSTOMIZER & SONSTIGES === */
.hero-slider.slider-hide-arrows .swiper-button-next,
.hero-slider.slider-hide-arrows .swiper-button-prev {
@@ -558,10 +609,6 @@ html.light-mode .icon-sun { opacity: 1; }
gap: 20px;
align-items: center;
}
.footer-widget:last-child {
margin-right: 0; /* Negativen Margin für mobile Ansicht zurücksetzen */
}
.footer-menu { flex-direction: column; gap: 10px; }
/* Theme Toggle */
.theme-toggle {
@@ -577,3 +624,38 @@ html.light-mode .icon-sun { opacity: 1; }
html.light-mode .theme-toggle::before { transform: translateX(28px); }
.icon-moon, .icon-sun { width: 16px; height: 16px; }
}
/* Ladezustand für den Slider - Verhindert das Flackern beim Laden */
.hero-slider.swiper-loading {
opacity: 0;
visibility: hidden;
transition: opacity 0.4s ease-in-out;
}
.hero-slider:not(.swiper-loading) {
opacity: 1;
visibility: visible;
}
/* =================================================================== */
/* === Abstand für die neuen Trennlinien ============================== */
/* =================================================================== */
/* Abstand nach dem Slider zum Hauptinhalt */
main#primary.site-main {
padding-top: 40px; /* Passe den Wert bei Bedarf an */
}
/* Abstand im Footer, damit der Inhalt nicht direkt an der Linie klebt */
.site-footer .widget-area,
.site-footer .site-info {
padding-top: 30px; /* Passe den Wert bei Bedarf an */
}
/* =================================================================== */
/* === Titel der statischen Startseite ausblenden (KORRIGIERT) ==== */
/* =================================================================== */
/* Zielt genau auf das <h2>-Element mit der Klasse "post-title" ab */
body.home-title-hidden h2.post-title {
display: none !important;
}

View File

@@ -1,2 +1 @@
# Minecraft-Modern-Theme
<img src="https://git.viper.ipv64.net/M_Viper/Minecraft-Modern-Theme/raw/branch/main/Minecraft-Modern-Theme/screenshot.PNG" alt="Backend" width="100%">