Sehr umfangreich, individuell einstellbar und doch kompakt. Die Einstellung erfolgt hier halt direkt in der PHP-Datei.
Ich habe testhalber noch um eine Abfrage für "Urlaub" von bis eingebaut. Code ist am Ende des Scripts und kommentiert.
Folgendes Code in die userfuncs.php kopieren und in der gewünschten Seite, Newsbox oder Footer etc. aufrufen per
Code: Select all
{{{oeffnungszeiten()}}}
Code: Select all
<?php
/*
* Öffnungszeiten
*/
date_default_timezone_set('Europe/Berlin');
function oeffnungszeiten() {
// Wochentage ( Montag = 1, Dienstag = 2, ... Samstag = 6, Sonntag = 7 )
$close = array(7); // an dieser Einstellung muss nichts mehr geändert werden
$tage = ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"]; // Wochentage haben Namen...
$monate = [1=>"Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"];
$tag = date("w"); // Nummer des aktuellen Tages: 0 für Sonntag, 6 für Samstag
// Offen ab - Uhrzeit der "normalen" Öffnung
$time_start = '09:00';
// Offen bis - Uhrzeit der "normalen" Schliessung
$time_stop = '17:00';
// Falls die Zeiten an einem Tag anders sind - zum Beispiel:
/*
// Montag
if (date('N') == "1") {
$time_start = '09:30'; // Öffnungszeit am Montag 09.30
// $time_stop = '15:00'; // Schliesszeit am Montag 15.00
}
*/
//Freitag
if (date('N') == "5") {
// $time_start = '09:30'; // andere Öffnungszeit am Freitag
$time_stop = '15:00'; // andere Schliesszeit am Freitag 15.00
}
// Am Samstag ist geschlossen
if (date('N') == "6") {
// $time_start = '09:00'; // andere Öffnungszeit am Samstag
$time_stop = $time_start; // Schliesszeit gleich der Öffnungszeit - Samstag geschlossen
}
// Funktion Anrede, je nach Uhrzeit des Tages
$uhrzeit = date('H.i');
if ($uhrzeit >= "03.30" && $uhrzeit < "05.00") {
$gruss = 'Guten Morgen Besucher zur frühen Stunde, ';
}
elseif ($uhrzeit >= "05.00" && $uhrzeit < "12.00") {
$gruss = 'Guten Morgen Besucher, ';
}
elseif ($uhrzeit >= "12.00" && $uhrzeit < "18.00") {
$gruss = 'Guten Tag Besucher, ';
}
elseif ($uhrzeit >= "18.00" && $uhrzeit < "23.59") {
$gruss = 'Guten Abend Besucher, ';
}
else {$gruss = 'Guten Abend Besucher zur späten Stunde, ';
}
// Funktion "vor" der Öffnung oder "nach" der Schliessung
if ($uhrzeit >= "00.00" &&
$uhrzeit < "09.00") {
$gruss2 = 'noch';
}
elseif ($uhrzeit >= $time_stop &&
$uhrzeit < "00.00") {
$gruss2 = 'schon';
}
else {
$gruss2 = 'schon';
}
// Feste und bewegliche Feiertage
$holiday = [
'01.01', // Neues Jahr
// $heute = date("d.m"), // heutiges Datum - zum testen!
$Rosenmontag = date("d.m",easter_date()-48*86400), // Rosenmontag, 48 Tage vor Ostern
$Karfreitag = date("d.m",easter_date()-2*86400), // Karfreitag, 2 Tage vor Ostern
$Ostermontag = date("d.m",easter_date()+86400), // Ostermontag
'01.05', // Erster Mai
$ChristiHimmelfahrt = date("d.m",easter_date()+39*86400),
$Pfingstmontag = date("d.m",easter_date()+50*86400),
$Fronleichnam = date("d.m",easter_date()+60*86400),
'03.10', // Tag der deutschen Einheit
'01.11', // Allerheiligen
'24.12', // Heiliger Abend
'25.12', // 1 Weihnachtstag
'26.12', // 2 Weihnachtstag
'31.12', // Silvester
];
$feiertag ="keiner";
// Prüfen ob geöffnet ist (Wochentag, Uhrzeit und Feiertag)
if (date('N') != in_array(date('N'), $close) &&
date('H:i') >= $time_start &&
date('H:i') <= $time_stop &&
date('d.m') != in_array(date('d.m'), $holiday)) {
$offen = $gruss . ' Unser Büro ist heute, am ' . $tage[$tag] . ' den ' . date(" d") . ' ' . $monate[date("n")] . ' von ' . $time_start . ' bis ' . $time_stop . ' geöffnet';
}
else {
if (date('d.m') == in_array(date('d.m'), $holiday)) {
if (date("d.m") == "01.01") $feiertag = 'Neujahr';
// if (date("d.m") == "$heute") $feiertag = 'Aktuelles Datum'; // heutiges Datum - zum testen!
if (date("d.m") == "$Rosenmontag") $feiertag = 'Rosenmontag';
if (date("d.m") == "$Karfreitag") $feiertag = 'Karfreitag';
if (date("d.m") == "$Ostermontag") $feiertag = 'Ostemontag';
if (date("d.m") == "01.05") $feiertag = 'Tag der Arbeit';
if (date("d.m") == "$ChristiHimmelfahrt") $feiertag = 'Christi Himmelfahrt';
if (date("d.m") == "$Pfingstmontag") $feiertag = 'Pfingstmontag';
if (date("d.m") == "$Fronleichnam ") $feiertag = 'Fronleichnam';
if (date("d.m") == "03.10") $feiertag = 'Tag der Deutschen Einheit';
if (date("d.m") == "01.11") $feiertag = 'Allerheiligen';
if (date("d.m") == "24.12") $feiertag = 'Heiliger Abend';
if (date("d.m") == "25.12") $feiertag = '1. Weihnachtstag';
if (date("d.m") == "26.12") $feiertag = '2. Weihnachtstag';
if (date("d.m") == "31.12") $feiertag = 'Silvester';
}
if ($feiertag != "keiner") {
$offen = $gruss . " Heute, am " . $feiertag . ', ist unser Büro geschlossen.';
}
elseif ($tage[$tag] == "Samstag") {
$offen = $gruss . ' heute am ' . $tage[$tag] . ', ist unser Büro geschlossen.';
}
elseif ($tage[$tag] == "Sonntag") {
$offen = $gruss . ' heute am ' . $tage[$tag] . ', ist unser Büro geschlossen.';
}
else {
$offen = $gruss . 'unser Büro hat heute, am ' . $tage[$tag] . ' den ' . date(" d") . ' ' . $monate[date("n")] . ' ' . $gruss2 . ' geschlossen.';
}
}
// Prüfen ob Urlaub ist, von bis ... (lck)
$currentDate = date('d.m.Y');
$currentDate = date('d.m.Y', strtotime($currentDate));
$startDate = date('d.m.Y', strtotime("2023/10/20"));
$endDate = date('d.m.Y', strtotime("2023/10/31"));
if (($currentDate >= $startDate) && ($currentDate <= $endDate)) {
$offen = ' Unserer Büro ist vom ' . $startDate . ' bis ' . $endDate . ' wegen Urlaub geschlossen. ';
}
// Urlaub end (lck)
// $offen = 'Wir haben Urlaub. Unser Büro ist bis Dienstag, den 14. April 2021 geschlossen'; // Info über Urlaub
return($offen);
}
// echo '<p>' . oeffnungszeiten() . '</p>';
*Ein simples Plugin ist auch jetzt schon möglich. Einfach den Code nicht in die userfuncs.php packen, sondern unter Plugins einen neuen Ordner names oeffnungszeiten anlegen und dort eine index.php mit dem geposteten Code anlegen. Eine admin.php ist hierbei auch nicht nötig. Der Plugin-Aufruf ist der gleiche wie oben.
Plugin