Wie erreicht man den "Versand-Countdown-Timer" für die Lieferfunktion?

7

Ich versuche, einen Countdown-Timer für die Versandfrist für Module / Funktionen auf der Produktseite zu entwickeln.

Dieser Timer benachrichtigt Kunden über den voraussichtlichen Liefertermin, wenn ein Kauf getätigt wird, bevor der Timer Null erreicht

Siehe Arbeitsbeispiel hier auf Amazon

Geben Sie hier die Bildbeschreibung ein

Ich sollte in der Lage sein, Liefertage festzulegen und die Zeit für Produkte in admin zu verkürzen

Hinweis: Ein Magento1kann über diese Erweiterung erreicht werden: Versandtermin-Countdown

Jede Hilfe wird sehr geschätzt.

Manoj Deswal
quelle
1
Ja okay bhai. Danke für Vorschläge. :)
Teja Bhagavan Kollepara

Antworten:

5

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:

  1. Das Lieferdatum wird nicht aktualisiert. Es muss aktualisiert werden, wenn der Timer 0 erreicht.
  2. Möchten Sie die Minuten ändern, um Stunden einzuschließen.
  3. Machen Sie modular und fügen Sie einige Admin-Einstellungen für die Sperrzeit hinzu.
  4. Es wäre gut, eine Versandzeit vom Backend entweder von Produkten oder von der Versandart zu erhalten.
  5. Verwenden Sie Magento-Zeit anstelle von PHP
  6. 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

harri
quelle
Ja, ich arbeite daran und werde die Ideen teilen, um es zum
Laufen
1
Ich werde versuchen, daran zu arbeiten, werde aber wahrscheinlich für ein paar Tage keine Zeit haben. Habe jedoch einen Ausgangspunkt für Github gemacht, indem ich es zu einem Modul gemacht habe
harri
1
Ich habe ein wenig daran gearbeitet, war jedoch mit anderen Dingen beschäftigt, so dass langsame Fortschritte nur Tage ausschließen müssen und die Abschaltzeit von Tag zu Tag einstellen würde. Probleme beim Hinzufügen von 1 Arbeitstag ohne bestimmte Feiertage und ähnliches mit Javscript, wenn der Timer abläuft, während der Benutzer auf der Seite ist.
Harris
2
Super danke. Ja, ich bin mir nicht sicher, warum es zu diesem Zeitpunkt beginnt, sollte aber einfach genug sein, um es im Moment als sehr einfaches kleines Modul zu debuggen.
Harris
1
Und wenn Sie etwas Zeit haben, dies zu beheben, tun Sie es bitte. Vielen Dank für Ihre Bemühungen
Sharma