Dies ist nur ein einfacher Überblick darüber, wie ich damit anfangen würde und was ich mit der Fertigstellung anfangen könnte:
Holen Sie sich die Zeit:
$currenttime = strtotime(date("h:i:s A"));
Holen Sie sich die Cutoff-Zeit oder stellen Sie sie vorerst manuell ein:
$cutofftime = strtotime(date('h:i:s A', strtotime(date('d-m-Y') . ' + 16 hours')));
Ruft den aktuellen Tag ab und fügt 16 Stunden für die Sperrzeit von 16:00 hinzu
Holen Sie sich die Lieferzeit oder stellen Sie sie vorerst manuell ein:
$deliverydate = date('d-m-Y', strtotime(date('d-m-Y') . ' + 2 weekdays'));
Der Tag muss geändert werden, wenn die Sperrzeit abgelaufen ist:
if ($currenttime>$cutofftime) {
$cutofftime+= 86400;
$deliverydate+= 86400;
}
Intervall berechnen
$interval = date('H:i:s', mktime(0, 0, $cutofftime-$currenttime));
Formatieren Sie dann die Daten:
<div>For delivery on <?php echo $deliverydate; ?> order within the next <span id="time"></span> minutes!</div>
Javascript, um einen Countdown live zu machen:
<script>
function startTimer(duration, display) {
var timer = duration, hours, minutes, seconds;
setInterval(function () {
hours = parseInt(timer / 60, 10)
minutes = parseInt(timer / 60, 10)
seconds = parseInt(timer % 60, 10);
minutes = minutes < 10 ? "0" + minutes : minutes;
seconds = seconds < 10 ? "0" + seconds : seconds;
display.textContent = minutes + ":" + seconds;
if (--timer < 0) {
timer = duration;
}
}, 1000);
}
window.onload = function () {
var time = <?php echo $cutofftime-$currenttime; ?>,
display = document.querySelector('#time');
startTimer(time, display);
};
</script>
Vollständiger Beispielcode
<?php
$currenttime = strtotime(date("h:i:s A"));
$cutofftime = strtotime(date('h:i:s A', strtotime(date('d-m-Y') . ' + 16 hours')));
$deliverydate = date('d-m-Y', strtotime(date('d-m-Y') . ' + 2 weekdays'));
if ($currenttime>$cutofftime) {
$cutofftime = strtotime(date('h:i:s A', strtotime(date('d-m-Y') . ' + 40 hours')));
$deliverydate = date('d-m-Y', strtotime(date('d-m-Y') . ' + 3 weekdays'));
}
$interval = date('H:i:s', mktime(0, 0, $cutofftime-$currenttime));
?>
<div>For delivery on <?php echo $deliverydate; ?> order within the next <span id="time"></span> minutes!</div>
<script>
function startTimer(duration, display) {
var timer = duration, hours, minutes, seconds;
setInterval(function () {
hours = parseInt(timer / 60, 10)
minutes = parseInt(timer / 60, 10)
seconds = parseInt(timer % 60, 10);
minutes = minutes < 10 ? "0" + minutes : minutes;
seconds = seconds < 10 ? "0" + seconds : seconds;
display.textContent = minutes + ":" + seconds;
if (--timer < 0) {
timer = duration;
}
}, 1000);
}
window.onload = function () {
var time = <?php echo $cutofftime-$currenttime; ?>,
display = document.querySelector('#time');
startTimer(time, display);
};
</script>
Dies ist nur etwas ziemlich Schlechtes, das ich jedoch als Konzept aufgegriffen habe. Könnte mit der Verwendung von Magento-Zeit und einigen Einstellungen im Back-End für die Sperrzeit sowie dem Abrufen von Lieferzeiten für Produkte zusammenhängen.
Aktuelle Themen hier:
- Das Lieferdatum wird nicht aktualisiert. Es muss aktualisiert werden, wenn der Timer 0 erreicht.
- Möchten Sie die Minuten ändern, um Stunden einzuschließen.
- Machen Sie modular und fügen Sie einige Admin-Einstellungen für die Sperrzeit hinzu.
- Es wäre gut, eine Versandzeit vom Backend entweder von Produkten oder von der Versandart zu erhalten.
- Verwenden Sie Magento-Zeit anstelle von PHP
- Ich bin mir nicht sicher über die Sommerzeit und wie das funktionieren wird.
Ich werde jedoch ein bisschen daran arbeiten und mich weiter verbessern. Ich habe ein Git-Projekt gestartet, das sich in einem schlechteren Zustand befindet, aber jetzt ein Modul ist und auf der Produktseite bis zur eingestellten Zeit heruntergezählt wird.
https://github.com/harrigo/Magento2-CountdownTimer