ist es möglich, die “zuletzt angesehenen Produkte” immer anzuzeigen z. B. rechte Spalte im Layout? Bisher ist es ja so das diese nur in der Produktdetailseite angezeigt werden, und die dafür vorgesehene Methode erwertet als Parameter die ID des zuletzt angeguckten Produktes. Daraus schließe ich, dass eine neue Methode her muss, und zwar in einer View die immer aufgerufen wird (oxView?). Das Problem ist aber, dass oxNew (‘oxview’) nie wirklich aufgerufen wird - dass führt dazu dass das Ableiten einer neuen Klasse von oxView keine sinnvolle Vorgehensweise wäre.
Also, wo platziert man eine Methode getRecentlySeenProducts(), die man mit dem $oView Objekt immer zur Verfügung hat???
habe folgendes probiert: Ich habe eine neue Klasse angelegt myUBase, diese erbt von oxUBase. Im Adminbereich habe das “erben” noch mal explizit angegeben oxubase => myviews/myubase.
In myUBase habe ich die Methode getRecentlySeenArticles() implementiert
class myUBase extends myUBase_parent {
public function getRecentlySeenArticles() {…}
}
… und in _right.tpl bricht das rendern der Seite an folgender stelle ab
[{ if $oView->getRecentlySeenArticles() }]…[{ /if }]
welche Funktion aus dem start.tpl meinst du? Im Template start.tpl gibt es keine Funktion die die zuletzt angesehenen Produkte anzeigt.
In details.tpl gibt es [{oxid_include_dynamic file=“dyn/last_seen_products.tpl” type=“lastproducts” aid=$product->oxarticles__oxid->value aparentid=$product->oxarticles__oxparentid->value testid=“LastSeen” }]
aber diese Funktion funktioniert auch nur in details.tpl d.h. wenn ich diese Funktion in _right.tpl platziere, wird nur dann etwas angezeigt, wenn man sich in der Produktdetailansicht befindet.
Deshalb habe ich eine neue Methode geschrieben die auch wunderbar funktioniert, wenn ich sie in oxUBase platziere, nicht jedoch in der abgeleiteten Klasse myUBase.
die oxUBase ist eine Basisklasse, die möchtest du nicht überschreiben/erweitern Aber wenn du mir erklärst was du genau dort implementiert hast bzw. möchtests finden wir zusammen sicher nen guten “Platz” für deinen Code indem wir ihn in ein Modul verpacken.
ich möchte dass immer (egal auf was für einer Seite ich bin) die “zuletzt angesehenen Produkte” auf der rechten Seite (_right.tpl) sichtbar sind, so wie z.B. die Kategorien auf der linken Seite immer sichtbar sind.
Meinem Verständnis nach benötige ich dafür eine Methode, die bei jedem Request aufgerufen wird. Eine Methode die z.B. über das $oView Objekt aufgerufen werden kann (z.B. $oView->getRecentlySeenArticles()).
Folgende Zeilen in das Template_right.tpl zu platzieren geht nicht!
[{include file=“dyn/last_seen_products.tpl” type=“lastproducts” aid=$product->oxarticles__oxid->value aparentid=$product->oxarticles__oxparentid->value testid=“LastSeen” }] … geth nicht
hab auch probleme mit dem “zuletzt angesehene produkt”. Hab es zwar in der rechten spalte, doch die css Klasse für die rechte spalte wird nicht verwendet.
im firebug wird die klasse “product” angezeigt. im codegewurstel kann ich den fehler ledier nicht finden
[QUOTE=leofonic;23869]Ich komme drauf zurück!
[/QUOTE]
Gerne, vielleicht ja bei der Lahn-Party.
[QUOTE=leofonic;23869]Funktioniert es wie es soll?[/QUOTE]
Ja, Funktion hundertprozentig 1a superduper.
Aber folgender Fehler wird ausgegeben:
“Warning: Cannot modify header information - headers already sent by (output started at C:\xampplite\htdocs\modules\mylastseen.php:28) in C:\xampplite\htdocs\views\oxshopcontrol.php on line 313”
Ich vermute, dass der im Produktivmodus unterbleibt, wäre aber trotzdem schön, den zu vermeiden, oder?
Die Antwortzeit des Servers verlängert sich um 0,1 bis 0,3 Sekunden, das ist zu verschmerzen.
Mal gucken, München ist weit weg von Weilburg.
Um den Fehler wegzubekommen musst du einfach aus mylastseen.php alle Leerzeichen und Zeilenumbrüche außerhalb der PHP-Tags (also ganz am Anfang oder ganz am Ende) entfernen.