Artikel mit Start und Endzeit

Moin,

ich würde gerne für einen eigenen neuen Shop auf 4.7 Basis eine Start und Endzeit einbauen…

Idee:
Ein Artikel mit Start und Endzeit, der auch nur in dieser Zeitspanne zu kaufen ist.
Die Endzeit möchte ich dann auch als ablaufende Zeit Tage/Std/Min/Sec sichtbar bei jedem Artikel egal wo er auf den Seite sichtbar ist haben.

Hat sich da schon jemand mal mit beschäftigt und kann mir Codeschnipsel oder Tipps geben ?

Zwar kann man ja z.B. -Angebot der Woche- Zeitlich begrenzen, aber der Artikel bleibt nach Ablauf ja immer noch kaufbar oder wäre das der Ansatz dort zu sagen …ist der Artikel nicht mehr Angebot der Woche so stelle ihn in der DB als nicht mehr kaufbar ?

Gruß
Andreas

hast du beim artikel den aktiv haken drin ?? glaub das war so wenn datum drin ist darf kein aktiv haken drin sein

un in den Perfomance Einstellungen muss die Option “beim laden der Artikel <von bis> berücksichtigen” angehakt werden

Moin,

mir ist auch gerade eingefallen, das das mit meiner Idee über -angebot der woche- ja nicht geht, da ich mehrere Artikel mit unterschiedlichen Laufzeiten haben möchte…so wie ich nun hier und anderswo gestöbert habe nennt sich das wohl Live-Shopping…es gab da mal ein Modul von…wurde aber eingestellt das Ganze.

Trotzdem danke für den tipp laramarco

Gruß
Andreas

häh, wieso?
man kann doch die Artikel mit der Option “aktiv von … bis …” auf die Sekunde genau aktivieren und deaktivieren lassen. Und einen Countdown einzubauen ist pillepalle

Moin,

bin ich denn blind ?? …unter Artikel verwalten -> Artikel …find ich das nicht …oder wie meinst du das jetzt ?

Gruß
Andreas

Moin,

ich habs…jo…habe in Perfomance Einstellungen die Option “beim laden der Artikel <von bis> berücksichtigen” angehakt und mal dann bei artikel geschaut…habe ich ja noch nie benutzt diese Option …und das in den ganzen 3 Jahren nicht :frowning:

nun gut…klasse und danke für den schups in die richtige Richtung…nun muss ich mir nur noch die Uhr basteln :confused:

Gruß
Andreas

geht ziemlich einfach mit einem jQuery Plugin.
such dir eins aus :slight_smile:

Moin,

einfache Zahlen mit Tage, stunde etc reicht da aus …werde mich da mal morgen weiter mit beschäftigen…vielen dank schon mal

Gruß
Andreas

Hoi,

das ist eigentlich auch schon eingebaut, Nennt sich unter Kundeninfo -> Aktionen verwalten -> Promotions :wink:
Kannst Dir auch gern mal diesen Screencast bzgl. Liveshopping antun:

Gruss

Moin,

@Marco Steinhaeuser
im Video ist ja nur zu sehen, dass man es so einstellen kann, dass der Warenkorb nach einem countdown gelöscht wird…

auch damit habe ich mich noch nicht wirklich beschäftigt:
Kundeninfo -> Aktionen verwalten -> Promotions
aber bislang habe ich da hier auch keine richtige info darüber gefunden, nur aus alten Beiträgen , dass es mit azur nicht geht etc.
Auch durch probieren im Demo-Shop bin ich nicht schlauer geworden wie da was wo funktioniert.

Gruß
Andreas

Hi @Andreas Agadon (wirst Du mich wohl bitte ausschliesslich mit meinem Vornamen ansprechen?! :-))

im Theme Azure ist die Option nicht per default aktiviert. Aber man kann es durchaus so anpassen, dass es den gewünschten Effekt erzielt: Auf der Startseite kann ein Banner eingebunden werden, das Promotions darstellt - noch soundsoviele Stunden kaufbar, Aktion leider schon beendet etc.

Gruß

Moin,

beim countdown komme ich dann mal wieder nicht mehr weiter…

Es gibt einen countdown im Shop …oxcountdown.js …der ist ja für den warenkorb

Diesen Countdown (die oxcountdown.js) möchte ich ja jetzt für jeden einzelnen artikel verwenden …zur Endzeit eines Artikels komme ich z.B. über [{ $_product->oxarticles__oxactiveto->value}] …nun habe ich mir etliche Beispielseiten und auch die Countdown.tpl…minibasket etc angeschaut…aber mir einen countdown daraus zu basteln bekomme ich einfach nicht hin…zumal mir da wirklich das Verständniss etwas fehlt.

Vieleicht kann mir da hier wer helfen, damit ich mir das ding basteln kann.

Desweiteren mußte ich feststellen, dass ja mal wieder alle Ordner in der 4.7 nicht mehr da sind wo sie noch in der 4.5.5 mal waren :confused:

Gruß
Andreas

Moin,

es lässt mir ja keine ruhe…

fangen wir es mal anders an…der Countdown im Warenkorb greift ja auf die Einstellungen im Admin unter private sales zurück…
Mal ganz einfach gedacht…wenn ich es nun haben möchte, dass er z.B auf Artikel verwalten->artikel->Hersteller-Artikelnummer (MPN) eines Artikels zurückgreift, wo muss ich dass denn dann bitte ändern ?
Die Hersteller-Artikelnummer (MPN) benötige ich nicht und dort könnte ich ja nun auch die Zeit in sec eintragen.

Ich finde einfach nicht was ich da wo ändern soll…oder wäre auch dieser Ansatz völlig falsch

Gruß
Andreas

Moin,

ich gebs auf…das ist mir einfach zu hoch und ich verstehe die Zusammenhänge einfach nicht, egal wo ich hier, im Web oder in diversen scripten nachschaue…

[QUOTE=vanilla thunder;113676]Und einen Countdown einzubauen ist pillepalle[/QUOTE]

@vanilla thunder
Du bist jetzt mein letzte Hoffnung

Gruß
Andreas

http://down.smugglersrun.de/buecher/obi-wan.html :slight_smile:

so so, ich bilde also Darth Vaders aus? :smiley:

Der Zusammenhang ist folgender:
Ein Artikel hat einen “Endzeitpunkt”, wie du den herausbekommst, weisst du ja schon.
Dann brauchst du zunächst einen Countdown Script, siehe den Link von mir auf Seite 1.
Schau dir mal ein paar Scripts an, bei jedem steht dabei, welchen Code er braucht um zu funktionieren und v.a. wie die Datumsangabe (Format) aussehen muss. Mit etwas Glück findest du ein Script, dass den Datumsformat von OXID versteht. Bei etwas weniger Glück musst du das Datum, das im Artikel eingetragen ist, umwandelt. Oder du nimmst ein anderes Feld und trägst es dort im richtigen Format ein.
Und dann verfolgst du die Anleitung zum Einbau des Scripts.

Moin,

@ vanilla thunder

im Grunde habe ich alles schon so gemacht wie du schreibst…anschauen…anschauen …versuchen zu verstehen…aber…nix verstanden.

Informationen fehlen mir eben…z.B.
Wo kommt der Pfad zur db hin und wie schreib ich den…

Hier mal ein Beispiel code den ich gefunden habe:


countdown = function() {
    var tage = 'Tage';
    var countdown_d, countdown_h, countdown_m, countdown_s;
    var ausgabe_s, ausgabe_m, ausgabe_h;
    var endTime = new Array();
    var text = new Array();
    var i = 0;
                
                
    // Hier alle Termine chronologisch(!) mit Datum und Text anlegen
	endTime[0] = new Date(2012, 4, 12, 20, 0, 0); //Jahr, Monat - 1 !!!!!!!, Tag, Stunden, Minuten, Sekunden
    text[0] = 'zum DFB Pokal Finale 2012 in Berlin';
	
                
                
    // Berechnung des nächsten Termins           
	var timeNow = new Date();
    while((endTime[i] - timeNow) < 0) {
        i++;
    }
	var diffTime = endTime[i] - timeNow; //in Millisekunden
	diffTime = Math.floor(diffTime/1000);
	
	//Berechnung der Tage, Stunden, Minuten, Sekunden
	if(diffTime >= 0) {
		countdown_d = Math.floor(diffTime / 86400);
		diffTime = diffTime % 86400;
		countdown_h = Math.floor(diffTime / 3600);
		diffTime = diffTime % 3600;
		countdown_m = Math.floor(diffTime / 60);
		countdown_s = diffTime % 60;
	
        if(countdown_s < 10) ausgabe_s = '0'+countdown_s;
        else ausgabe_s = countdown_s;
        if(countdown_m < 10) ausgabe_m = '0'+countdown_m;
        else ausgabe_m = countdown_m;
        if(countdown_h < 10) ausgabe_h = '0'+countdown_h;
        else ausgabe_h = countdown_h;
        if(countdown_d == 1) {
            tage = 'Tag';
        }	
        
        // verbleibende Zeit und Termintext schreiben
        document.getElementById('countdown').innerHTML = 'Noch <b>'+countdown_d+'</b> '+tage+' und <b>'+ausgabe_h+':'+ausgabe_m+':'+ausgabe_s+
'</b> bis '+text[i];
	}
	else {
	    document.getElementById('countdown').style.display = 'none'; 
	}
	setTimeout(countdown, 1000);
}
window.onload = countdown(); // Countdown anstoßen



<!DOCTYPE html>
<html>
<head>
<title>JS Countdown</title>
</head>
<body>
<div id="countdown" style="	font-family: 'Courier New', Courier, monospace; font-size: 16pt; margin: 30px;"></div>
<script type="text/javascript" src="js_countdown.js"></script>
</body>
</html>

Ich kann mir schon vorstellen das dort…

// Hier alle Termine chronologisch(!) mit Datum und Text anlegen
endTime[0] = new Date(2012, 4, 12, 20, 0, 0); //Jahr, Monat - 1 !!!, Tag,

der Pfad angegeben wird…(obwohl ich denke, dass er hier nicht mit der Datumsangabe aus der db zurechtkommt)

Ein zweiter countdown wäre dieser:


<?php

//z.b. Zeitpunkt aus einer Datenbank
$datetime = "2013-12-31 09:21:28";

$ts = strtotime($datetime);        //in TimeStamp umwandeln
$currentTs = time();            //Aktueller Timestamp

?>

<html>
    <head>
        <title>Countdown</title>
        <script type="text/javascript">
            var countdownfunc = function(elem, ende, endstring)
            {
                //Wenn nichts als countdownende angegeben wurde dann wird das hier festgelegt
                if(typeof endstring == 'undefined')
                {
                    endstring = 'jetzt';
                }

                //Der ausgabestring wird festgelegt
                var output = endstring;

                //Differenz zwischen jetzt und dem ende
                //division durch 1000 weil in JavaScript ein timestamp in Millisekunden angegeben wird
                var timeDiff = (parseInt(ende)) - (parseInt(new Date().getTime() / 1000));

                //Wenn mehr als 0 Sekunden übrig ist dann ...
                if(timeDiff > 0)
                {
                    //... setz den ausgabe string zurück
                    output = '';

                    //Wenn mehr als 1 Stunde (60 sek * 60 Min) übrig ist...
                    if(timeDiff > 3600)
                    {
                        //errechne wie viele stunden übrig sind
                        output += parseInt(timeDiff/3600) + 'h ';
                        timeDiff = timeDiff%3600; //Modulo, teile durch eine stunde und speichere den rest
                    }

                    //Wenn mehr als 1 Minute (60 Sek) übrig ist ...
                    if(timeDiff > 60)
                    {
                        //... errechne wieviele minuten es sind ...
                        output += parseInt(timeDiff/60) + 'm ';
                        timeDiff = timeDiff%60;//... und merk dir den rest
                    }

                    //jetzt sind nur noch die sekunden übrig
                    output += timeDiff + 's';

                    //rufe diese funktion nach 1000 millisekunden (1 Sek) wieder auf
                    setTimeout(function() {countdownfunc(elem, ende, endstring);},1000);
                }

                //Schreib den ausgabestring in das mitgelieferte element
                elem.innerHTML = output;
            };
        </script>
    </head>

    <body>
        Restzeit: <div id="countdown"></div>

        <script type="text/javascript">
            //Funktion erst aufrufen nachdem das element erzeugt wurde ...
            countdownfunc(document.getElementById('countdown'), <?=$ts?>);
        </script>
    </body>
</html>



Hier würden ja wohl die Datumsangaben passen, aber egal wie und was ich hier eintrage…

//z.b. Zeitpunkt aus einer Datenbank
$datetime = “2013-12-31 09:21:28”;

auf der Artikelseite zeigt er nix an…

Zwar sind auf deiner empfohlenen Seite recht viele und auch schöne dabei…aber mit meinem Schulenglisch ist es doch schon recht lange her :frowning:

Und wie schon oben geschrieben…ich habe keinen blassen Schimmer wo ich den Pfad zur db und wie eintrage…egal ob nun zur vorgegebenen Endzeit oder zu einem anderen Feld (z.B. Hersteller-Artikelnummer (MPN) ) wo ich die Zeit in sec eintrage.

Für Tipps und Hilfe bin ich immer dankbar

Pfad zu der db? Wozu? Woher und warum und wofür hast du den ganzen unnötigen Code?

Dann machen wir jetzt mal den Countdown ganz konkret an einem Beispiel.

Schritt 1

ich habe mich spontan für “KK Countdown” ( more info / demo ) entschieden. Einfach direkt auf “download” drücken und dann fängt auch direkt die Anleitung an, womit auch zum Schritt 2 übergehen.

Schritt 2

Nehmen wir mal die productmain.tpl. Ich setze den Countdown direkt unter den Titel des Produktes.

1: die Script einbinden, aber erst muss man die Dateihochladen. Am besten dahin, wo die anderen Scripts sind. Und da jQuery in Azrue bereits eingebunden ist, laden wir nur die kkcountdown.min.js hoch.
In dem Template findet man überall solche Zeilen:

[{oxscript include="js/widgets/oxarticleactionlinksselect.js" priority=10 }]

Könnte ja sein, dass man so Scripts einbinden kann, versuchen wir es mal mit unserem Script:

[{oxscript include="js/kkcountdown.min.js" priority=10 }]

2: Code zum Countdown-Starten.

<script type="text/javascript">
$(".kkcount-down").kkcountdown({
 dayText : 'day ',
 daysText : 'days ',
 hoursText : 'h ',
 minutesText : 'm ',
 secondsText : 's',
 displayZeroDays : false,
 oneDayClass : 'one-day'
 });
</script>

Im Template findest du keine Scripts, die wie oben eingebunden werden, dafür aber so:

[{oxscript add="$( '#productTitle' ).oxArticleActionLinksSelect();"}]

also probieren wir das mal aus:


[{oxscript add="$('.kkcount-down').kkcountdown({
 dayText : 'day ',
 daysText : 'days ',
 hoursText : 'h ',
 minutesText : 'm ',
 secondsText : 's',
 displayZeroDays : false,
 oneDayClass : 'one-day'
 });" }]

3: den Countdown selbst einbauen.
Es ist ein Tag erforderlich mit der Klasse “kkcount-down” und einem Attribut “time” mit dem Wert des Datums, das dem “active to” entspricht.

Bei meinem Artikel habe ich “aktiv bis 2013-02-25 12:45:17” eingetragen. Du hast ja vorher schon folgendes festgestellt:

also kommt dabei logischerweise “2013-02-25 12:45:17” raus, was dem Beispiel “1325372400” gar nicht ähnlich aussieht.

Dann steht also fest, dass du dieses Datum umformatieren musst. An dieser Stelle hättest du dann wieder im Forum gefragt, wie man das hier “2013-02-25 12:45:17” denn umformatieren könnte.
Dann hätte ich gesagt, dass es dafür eine Smarty Funktion gibt. Smarty ist sowas wie eine Programmiersprache und wird u.a. von OXID in den Templates benutzt und diese merkst du anhand von den Kombinationen aus eckigen und geschweiften Klammern: [{ $bla }] und dass diese Funktion “date_format” heißt (date_format (Datums Formatierung) | Smarty) und so benutzt wird:

[{ $_product->oxarticles__oxactiveto->value|date_format"%s"}]

Da hätten wir das Datum.
Der vollständige Code ist also:

<span time="[{$oDetailsProduct->oxarticles__oxactiveto->value|date_format:"%s"}]" class="kkcount-down"></span>

ich habe dieses mal $oDetailsProduct genommen, weil in der productmain.tpl $oDetailsProduct benutzt wird und nicht $_product

Schritt 3
Speichern, die Seite neuladen und da ist es auch schon.
Nach dem letzten Schritt in der Anleitung folgen noch die Optionen für den Countdown, diese kannst du in dem mehrzeiligen Code, der den Countdown startet, angeben/anpassen.
Jetzt kannst du per CSS und mit der Klasse “kkcount-down” das Aussehen von dem Countdown ändern.

Keine Pfade zu der db, nur 10 Zeilen Quellcode aus einer Datei in die andere kopieren :slight_smile:

Moin,

@ vanilla thunder

…das ist doch mal eine vernünftige Erklärung…wow …vielen vielen Dank für deine Mühe.
Nicht nur das das Ganze funktioniert, nein, es erklärt auch die ganzen Zusammenhänge und hilft mir (und bestimmt auch einigen anderen) nun auch in Zukunft weiter…echt klasse.

Ich musste zwar bei einigen Textstellen schmunzeln, aber das war auch sicherlich so beabsichtigt :wink:

…nochmals vielen Dank dafür

Gruß
Andreas