Hallo,
ich möhcte gerne in der list.tpl innerhalb “foreach” eine zusätzliche Bedingung abgragen.
<ul class="[{$type}]View clear" id="[{$listId}]">
[{foreach from=$products item=_product name=productlist}]
<li class="productData">[{include file="widget/product/listitem_"|cat:$type|cat:".tpl" product=$_product testid=$listId|cat:"_"|cat:$smarty.foreach.productlist.iteration}]</li>
[{if ($type eq "infogrid" AND ($smarty.foreach.productlist.last) AND ($smarty.foreach.productlist.iteration % 2 != 0 )) }]
<li class="productData"></li>
[{/if}]
[{/foreach}]
</ul>
Geprüft werden soll die Bedingung:
[{if $smarty.now|date_format:"%Y-%m-%d" <= $product->oxarticles__oxactiveto->value|date_format:"%Y-%m-%d"}]
Leider ist es so, dass der Wert den ($product->oxarticles__oxactiveto->value) hier innerhalb der list.tpl nicht auslesbar ist?
Vielen Dank für Eure Hilfe,
Norbert
Da soll doch bestimmt ein Artikel markiert werden, oder?
An die Werte kommt Du in der list.tpl so:
$_product->oxarticles__oxactiveto->value
, was wegen der Schleife nichts bringt. Die Abfrage sollte besser in listitem_infogrid.tpl stehen und dann in etwa so aussehen:
[{if $smarty.now|date_format:"%Y-%m-%d" == $product->oxarticles__oxactiveto->value|date_format:"%Y-%m-%d"}]
[{/if}]
Hallo,
danke für die Antwort.
Habe es so [{$_product->oxarticles__oxactiveto->value}] in die list.tpl eingestzt.
Es kommt leider keine Variable an, somit kann ich an der Stelle die Bedingung auch nicht prüfen.
Also es wird nichts angezeigt.
Der andere Hinweis stimmt. Ich habe die Bedingung auch in listitem_line.tpl stehen.
Es ist allerdings so, dass dann im Gunde jeder Artikel “ausgelesen” wird.
Die für die die Bedingung nicht zutrifft werden zwar nicht angezeigt, es wird jedoch ein Artikelfeld angezeigt, so dass ich mehrere “Trennstriche” in der Liste habe.
Artikelfeld ist dann jedoch leer.
Deshalb wollte ich vorher dafür sorgen, dass die Schleife auch nur einmal durchlaufen wird, wenn nur ein Artikel die Bedinung erfüllt.
Gruß,
Norbert
[QUOTE=rubbercut;61737]Da soll doch bestimmt ein Artikel markiert werden, oder?
An die Werte kommt Du in der list.tpl so:
$_product->oxarticles__oxactiveto->value
, was wegen der Schleife nichts bringt. Die Abfrage sollte besser in listitem_infogrid.tpl stehen und dann in etwa so aussehen:
[{if $smarty.now|date_format:"%Y-%m-%d" == $product->oxarticles__oxactiveto->value|date_format:"%Y-%m-%d"}]
[{/if}]
[/QUOTE]
[QUOTE=Kaiser3;61740]…habe es so [{$_product->oxarticles__oxactiveto->value}] in die list.tpl eingestzt.
Es kommt leider keine Variable an, somit kann ich an der Stelle die Bedingung auch nicht prüfen.
Also es wird nichts angezeigt…Die für die die Bedingung nicht zutrifft werden zwar nicht angezeigt, es wird jedoch ein Artikelfeld angezeigt, so dass ich mehrere “Trennstriche” in der Liste habe…[/QUOTE]
Also bei mir wird was angezeigt. Ein leeres Artikelfeld kann ich auch nicht bestätigen.
Was soll denn damit bezweckt werden?
@Kaiser3
Die Performance-Einstellung " Beim Laden von Artikeln “Aktiv von/bis” berücksichtigen" ist aber aktiviert oder?
[QUOTE=ChristophH;61746]@Kaiser3
Die Performance-Einstellung " Beim Laden von Artikeln “Aktiv von/bis” berücksichtigen" ist aber aktiviert oder?[/QUOTE]
[QUOTE=ChristophH;61746]@Kaiser3
Die Performance-Einstellung " Beim Laden von Artikeln “Aktiv von/bis” berücksichtigen" ist aber aktiviert oder?[/QUOTE]
Hallo,
jetzt hole ich doch ein wenig aus, um Euch den Hintergrund meiner “Experimente” zu erklären.
Zunächst habe ich, mit activefrom bis active to gearbeitet. Hierzu habe ich im Admin bei “Beim Laden von Artikeln “Aktiv von/bis” berücksichtigen” das häkchen gesetzt.
Ich möchte aber auch die Titel sichtbar und aktiv setzen, die erst in der Zukunft veröffentlicht werden.
Wenn dieses Datum in der Zukunft liegt, ist der Titel gemäß der Shop-Funktion ja noch nicht aktiv und wird somit in der Kategorie nicht aufgelistet.
Ich möchte diesen Titel aber auflisten.
Somit dachte ich, sei schlau und setze alle Titel Aktv mit dem Häckchen im Admin bei den Artikeln und Arbeite zusätzlihch mit dem Datum activefrom/activeto.
Jetzt werden auch in der Tat die Titel angezeigt, deren Datum activefrom in der Zukunft liegen.
Der Nachteil ist nur, dass jetzt auch die Titel angezeigt werden, die bei activeto ein Datum der Vergangenheit stehen haben.
Jetzt kann ich zwar in der listitem_line.tpl durch den Vergleich des aktuellen Datums mit dem Datumsfeld activeto vergleichen und dafür sorgen, dass der Inhalt nicht angezeigt wird.
Es ist jedoch so, dass eine Ebene darüber in list.tpl in der foreach-schleife auch für den Artikel der nicht angezeigt wird ein Artikelfeld erstellt wird.
Ich müßte also innerhalb der Schleife die Bedingung setzten, die ich erst in der listitem_line.tpl habe.
Leider funktioniert das auf dieser Ebene nicht, da die Varible dort keinen “Wert” oder “Inhalt” hat, so dass ich keinen Vergleich mit dem aktuellen Datum ziehen kann.
Und zwar leider auch nicht mit:
$_product->oxarticles__oxactiveto->value
wie beschrieben.
Gruß,
Norbert
nur mal kurz die Essenz, wie ich Sie verstanden habe:
datumsgesteuert nicht aktive Artikel, deren Startdatum in der Zukunft liegt, sollen zwar angezeigt, aber nicht kaufbar sein - jedenfalls bis zum Startdatum
richtig?
Also bei mir geht das schon. list.tpl
<ul class="[{$type}]View clear" id="[{$listId}]">
[{foreach from=$products item=_product name=productlist}]
[{if $smarty.now|date_format:"%Y-%m-%d" <= $_product->oxarticles__oxactiveto->value|date_format:"%Y-%m-%d"}]
Smarty now[{$smarty.now|date_format:"%Y-%m-%d"}] ++++ DB-Abruf[{$_product->oxarticles__oxactiveto->value|date_format:"%Y-%m-%d"}]
[{/if}]
<li class="productData">[{include file="widget/product/listitem_"|cat:$type|cat:".tpl" product=$_product testid=$listId|cat:"_"|cat:$smarty.foreach.productlist.iteration}]</li>
[{if ($type eq "infogrid" AND ($smarty.foreach.productlist.last) AND ($smarty.foreach.productlist.iteration % 2 != 0 )) }]
<li class="productData"></li>
[{/if}]
[{/foreach}]
</ul>
[QUOTE=Hebsacker;61752]nur mal kurz die Essenz, wie ich Sie verstanden habe:
datumsgesteuert nicht aktive Artikel, deren Startdatum in der Zukunft liegt, sollen zwar angezeigt, aber nicht kaufbar sein - jedenfalls bis zum Startdatum
richtig?[/QUOTE]
Hallo,
angezeigt werden sollen dem Kunden am heutigen Tag Titel mit folgenden Daten:
Fall 1. activefrom/aktiveto - 01.06.2011 bis 01.09.2011
Fall 2. activefrom/aktiveto - 15.07.2011 bis 01.09.2011
nicht angezeigt werden sollen
Fall 3. activefrom/aktiveto - 01.06.2011 bis 02.07.2011
Setze ich kein Häckchen im Admin bei Artikel-Aktiv sondern arbeite nur mit den Datumsangaben
werden Fall 2 und 3 nicht angezeigt.
Die Anzeige von Fall 2 wäre aber gewollt. Bis das Enddatum 01.09.2011 überschritten ist.
Setze ich ein Häckchen im Admin bei Artikel-Aktiv so werden alle drei Fälle angezeigt.
Fall 3 hätte aber dfinitiv nicht angezeigt werden sollen.
Gruß,
Norbert
OK, dann hat das Raten ein Ende:
Funktionen: getActiveCheckQuery, getStockCheckQuery anpassen (oder Modul
)
$sDatex = date( 'Y-m-d H:i:s', oxUtilsDate::getInstance()->getTime() );
$sDate = date('Y-m-d H:i:s', strtotime("+2 days"));
$sQ = "( $sQ or ( $sTable.oxactivefrom < '$sDate' and $sTable.oxactiveto > '$sDatex' ) ) ";
Die -2 Days musst auf Deine Bedürfnisse anpassen. Über die if-Abfrage kannst ja jetzt alles ausblenden. Eventuell count anpassen.
Vielen Dank,
funktioniert genau wie ich es will.
Gruß,
Norbert
Ja, ich habe daraus mal ein Modul gemacht. So könnte es dann aussehen:
