Rühme dich nicht des morgenden Tages; denn du weißt nicht, was heute sich begeben mag.
Sprueche 27:1
autor | |
19-10-18 00:17:15 | Rechnen mit Verkaufsstart, -ende |
Matthias Leiser |
Hallo, Ich möchte einen Marker erstellen mit dem Verkaufsstart-Datum + einen festen Wert von Tagen. Zum Beispiel: MARKER_TEST_1 = COA MARKER_TEST_1 { 10 = TEXT 10.value = 1514761200 + 10 * 86400 10.prioriCalc = 1 10.strftime = %d.%m.%Y } So kann ich vom Timestamp (1514761200 = 01.01.2018) 10 Tage (10 * 86400) dazu rechnen und das Resultat im Format ausgeben. Nun möchte ich die Timestamp und Tages Werte mit variable ersetzten aber das Funktioniert nicht. 1. Im Setup habe ich date_stdWrap.strftime > gelöscht damit ich im ###PRODUCT_SELLSTARTTIME### den Timestamp erhalte 2. Marker im Setup erstellen: MARKER_TEST_1 = COA MARKER_TEST_1 { 10 = TEXT 10.value = ###PRODUCT_SELLSTARTTIME## } Da liefert er mir den Timestamp. 3. Mit strftime = %d.%m.%Y liefert er mir aber 01.01.1970: MARKER_TEST_1 = COA MARKER_TEST_1 { 10 = TEXT 10.value = ###PRODUCT_SELLSTARTTIME## 10.strftime = %d.%m.%Y } Die Rechnerei wie im oberen Beispiel geht dann natürlich auch nicht. Wie kann erreichen einen Marker zu erstellen mit dem Verkaufsstart-Datum + einen festen Wert von Tagen? Vielen Dank für die Hilfe! MattMa |
19-10-18 09:39:10 | tt_products Produktliste leerer Inhalt |
Franz Holzinger |
tt_products liest in der Produktliste nur jene Felder aus der Datenbank ein, zu denen es im Shop Template Marker für das aktuelle Plugin vorfindet. Das geschieht, um es zu beschleunigen und keine unnötigen Daten einzulesen. Wenn aber Auswertungen verschiedener Art erfolgen sollen, auch wenn es keine Marker im Shop Template gibt, dann kann das über das Setup festgelegt werden. plugin.tt_products.conf.tt_products.ALL { requiredFields := addToList(sellstarttime) } |
19-10-18 12:46:16 | hat keine Wirkung |
Matthias Leiser |
Hallo Herr Holzinger Vielen Dank für die Antwort. Das geht aber trotzdem nicht. Es ist mir schon klar wenn es keinen Marker im Template gibt, dass ich das Feld mit addToList in der conf hinzu fügen muss. Den Marker habe ich zu Testzwecken im Template hinzugefügt. MARKER_TEST_1 = COA MARKER_TEST_1 { 10 = TEXT 10.value = ###PRODUCT_SELLSTARTTIME### 20 = TEXT 20.value = / 30 = TEXT 30.value = ###PRODUCT_SELLSTARTTIME### 30.strftime = %d.%m.%Y } Liefert mir: 1514761200/01.01.1970 Der Timestamp ist korrekt aber bei der strftime umwandlung entsteht 01.01.1970 wie wenn der Timstamp 0 wäre. Wäre es möglich mit data = field:??? oder dataWrap = {field:???} den Timestamp ein zu lesen? Eine andere Möglichkeit wäre die Daten direkt aus der DB zu lesen. Zum Beispiel mit dataWrap = DB:tt_products:{field:???}:sellstarttime aber da müsste ich wieder die product-id (field:) des aktuellen Datensatz wissen. Vielen Dank für die Hilfe. MattMa |
19-10-18 13:05:58 | ohne strftime |
Franz Holzinger |
Wie sieht denn der Wert aus, wenn kein strftime verwendet wird? Stimmt dann die sellstarttime bzw. die Ausgabe für den Marker ###MARKER_TEST_1###? Es könnte auch an einem Fehler in der Einstellung der Zeitzone liegen. Siehe http://php.net/manual/de/function.strftime.php |
19-10-18 13:32:24 | ohne strftime ist OK = Timestamp |
Matthias Leiser |
Wiie im oberen Beispiel liefert der Marker ###MARKER_TEST_1### den Timestamp (1514761200 bei 01.01.2018) das ist korrekt weil ich ja im Setup mit date_stdWrap.strftime > den strftime gelöscht habe. Wenn ich aber beim marker strftime = %d.%m.%Y verwende geht es nicht. Übrigens date_stdWrap.strftime = %d.%m.%Y würde korrekt arbeiten. Das verwende ich nicht weil ich im Setup auf dem Marker mit dem Timestamp rechnen möchte. Testweise habe ich beim value anstatt ###PRODUCT_SELLSTARTTIME### den Timestamp 1514761200 eingetragen und da gibt er mir mit strftime = %d.%m.%Y das korrekte Datum (01.01.2018) heraus. In der ganze TYPO3 konf habe ich kein Datum Problem und mit dem einfachen Beispiel klappt es auch, deshalb glaube ich nicht das es an der Zeitzone liegen kann. Der andere Ansatz wäre eben den Timestamp aus der DB zu holen oder mitteld field: Ich bräuchte mit DB:tt_products:{???}:sellstarttime eben die aktuelle product uid und weiss nicht wie ich diese bekomme. |
19-10-18 14:42:35 | Ziel: Rechnen mit Verkaufsstart im eigenen Marker |
Matthias Leiser |
Das folgende Ziel möchte ich erreichen aber eben mit den Werten aus "sellstarttime" des product und "newItemDays" aus den Konstanten. Das folgende funktioniert ohne die Variablen Werte: MARKER_TEST_1 = COA MARKER_TEST_1 { 10 = TEXT 10.value = 1514761200 + 10 * 86400 10.prioriCalc = 1 # Ausgabe lesbar 10.strftime = %d.%m.%Y } Wie könnten die Werte ersetzt werden: 1514761200 => sellstarttime 10 => newItemDays Vielen Dank für die Hilfe! |
20-10-18 09:34:10 | globale Marker nicht in tt_products |
Franz Holzinger |
Der globale Template Marker ###MARKER_TEST_1### über ein globales Setup MARKER_TEST_1 kann keine Marker aus tt_products verwenden. Denn die Marker von tt_products werden innerhalb des Ablaufs im Shop generiert und können gar nicht global zur Verfügung gestellt werden. Zumindest in der Produktliste und im Warenkorb gibt es mehrere Produkte gleichzeitig. Man kann ein TypoScript RECORDS definieren, und dort als Parameter tables auf tt_products zugreifen und den Parameter tt_products[product] auswerten. Siehe https://docs.typo3.org/typo3cms/TyposcriptReference/ContentObjects/Records/Index.html . Alternativ kann ein Marker wie ###PRODUCT_SELLSTARTTIME### für jedes Feld mit einem anderen Konstrukt überschrieben werden. plugin.tt_products.conf.tt_products.LIST.field.sellstarttime = COA plugin.tt_products.conf.tt_products.LIST.field.sellstarttime { 10 = TEXT 10.value = ###PRODUCT_SELLSTARTTIME### 20 = TEXT 20.value = / 30 = TEXT 30.value = ###PRODUCT_SELLSTARTTIME### 30.strftime = %d.%m.%Y } |
20-10-18 09:44:09 | Beispiel für tt_news |
Franz Holzinger |
Die Beispiele für die Extension tt_news lassen sich auf ähnliche Art auch mit tt_products nutzen. Statt RECORDS kann auch das TypoScript CONTENT verwendet werden, um Inhalte der Tabelle tt_products auszulesen. temp.newscat = CONTENT temp.newscat { table = tt_news_cat select { pidInList = 46 # Sysfolder-ID der News andWhere { data = GPvar:tx_ttnews|cat wrap = uid=| } } renderObj = TEXT renderObj.field = title } |
22-10-18 18:54:52 | GP var liefert leer |
Matthias Leiser |
Die GP variable liefert mir nicht mit: plugin.tt_products.marks { NEWPRODUCT = COA NEWPRODUCT { 10 = CONTENT 10 { table = tt_products select { pidInList = 10 andWhere { data = GP:tx_ttproducts|product wrap = uid = | } } renderObj = COA renderObj { 10 = TEXT 10.field = sellstarttime } } } Wenn ich Testweise keine GP definiere mit der festen 1 (wrap = uid = 1|) geht es aber eben nur mit dem 1 Datensatz. plugin.tt_products.marks { NEWPRODUCT = COA NEWPRODUCT { 10 = CONTENT 10 { table = tt_products select { pidInList = 10 andWhere { wrap = uid = 1| } } renderObj = COA renderObj { 10 = TEXT 10.field = sellstarttime } } } Brauche aber GP:tx_ttproducts|product. Was mach ich falsch? |
22-10-18 21:00:34 | tt_products Parameter |
Franz Holzinger |
Die Parameter in der Url werden doch als "tt_products[product]" angezeigt. data = GP:tt_products|product |
22-10-18 21:39:17 | keine GP var in der LIST |
Matthias Leiser |
Der Marker ist im LIST Ich kann es drehen und wenden es geht in LIST ansicht nicht. plugin.tt_products.marks { NEWPRODUCT = COA NEWPRODUCT { 10 = TEXT 10.data = DB : tt_products:1:sellstarttime } habe ich das Ding, aber eben mit dem fixen Datensatz 1. Wie bringe ich die aktuelle uid anstelle der fixen 1 hinein. |
22-10-18 21:56:26 | mit ###PRODUCT_UID### |
Matthias Leiser |
plugin.tt_products.marks { NEWPRODUCT = COA NEWPRODUCT { 10.value = ###PRODUCT_UID### 10.dataWrap = DB : tt_products:| 10.wrap3 = |:sellstarttime } } Da werden mir die Marker und die uid korrekt gesetzt, kommen aber als String heraus: DB : tt_products:1:sellstarttime DB : tt_products:4:sellstarttime DB : tt_products:2:sellstarttime DB : tt_products:15:sellstarttime Wie bringe ich das ganze jetzt noch dazu den String aus zu führen? |
22-10-18 22:06:24 | strftime |
Franz Holzinger |
Sie müssen, wie anfangs, wieder ein strftime verwenden. |
23-10-18 06:43:08 | aktuelle product und im marker |
Matthias Leiser |
meine Frage ist wie ersetze ich Product-und im Marker der im LIST view. Zum Bespiel habe ich den fixen Datensatz 1 den ich mit der aktuellen uid des product ersetzen möchte (LIST view): DB:tt_products:1:sellstarttime |
23-10-18 15:00:36 | unklar |
Franz Holzinger |
Was genau wollen Sie noch probieren? |
23-10-18 15:37:06 | aktuelle produkt uid im marker für DB Abfrage |
Matthias Leiser |
oha, da hat mir die Rechtschreibekorr. vom iPad reingefunkt Also ich habe einen Marker (###NEWPRODUCT###) im Template ###ITEM_LIST_TEMPLATE### erstellt. Dieser marker ist im Subpart ###ITEM_CATEGORY_AND_ITEMS### -> ###ITEM_LIST### -> ###ITEM_SINGLE### und wird für jedes Produkt auf der Liste verarbeitet. Bei diesem Marker möchte ich die DB (tt_products) abfragen mit dem jeweiligen Produkt und das Feld "sellstarttime" (ich brauche den Timstamp von sellstarttime für die weitere verarbeitung und prüfung). Diesen Marker habe ich im Setup so definiert: plugin.tt_products.marks { NEWPRODUCT = COA NEWPRODUCT { 10 = TEXT 10.data = DB : tt_products:1:sellstarttime } } Da erhalte ich den Timestamp ganz korrekt vom Feld sellstarttime ganz korrekt aber eben vom Datensatz 1 (DB:tt_products:1:sellstarttime). Deshalb sollte die 1 mit der jeweils aktuellen uid des Produkt ersetzt werden. Mein versuch mit: plugin.tt_products.marks { NEWPRODUCT = COA NEWPRODUCT { 10.value = ###PRODUCT_UID### 10.dataWrap = DB : tt_products:| 10.wrap3 = |:sellstarttime } } scheitert weil ich als Ausgabe im Marker jeweils den String: DB : tt_products:1:sellstarttime DB : tt_products:4:sellstarttime ... usw. erhalte aber nicht den jeweiligen Timstamp vom sellstarttime Feld. Es zeigt mir aber das ich Grundsätzlich mit dem Marker ###PRODUCT_UID### arbeiten könnte. |
23-10-18 15:55:54 | Programmierung |
Franz Holzinger |
Für eine solche Anwendung wäre eine Programmierung erforderlich. Denn dieses TypoScript für den globalen Marker dürfte erst innerhalb des Ablaufs des Shops ermittelt werden. Es wäre dann gar kein globaler Marker mehr. Man müsste eigens einen lokalen Marker innerhalb des ITEM_SINGLE Bereichs (###ITEM_SINGLE###) im LIST-Template (###ITEM_LIST_TEMPLATE###) definieren. |
< Zurück zum Forum |