wie ist das Array attrfilter aufgebaut? Wie kann ich es modifizieren? Ich möchte eine Suche über Attribute filtern (Ajax-basiert). Dazu möchte ich nicht die funktion “oxid.form.send” verwenden, sondern eine eigene Funktion verwenden.
Dazu muss ich jedoch in das Array attrfilter schreiben und dies dann per POST an index.php senden. Stimmt das?
Hallo rubbercut,
vielen Dank für die Antwort. Habe über ein [{debug}] im smarty mir das Array einmal anzeigen lassen.
Ich möchte gern über einen jQuery-Schieberegler, der die Attribute der Produkte auswertet, eine Listenansicht der Produkte eingrenzen (Also quasi eine Art Konfigurator). Dazu bin ich nach den Infos hier: http://www.oxid-esales.com/forum/showthread.php?t=4702 vorgegangen. Es wird standardmäßig in der list.tpl die Listenansicht nach Aufruf der Attribute über die Funktion oxid.form.send(’_filterlist’) neu erstellt.
Ich möchte nun verstehen, wie ich ohne den Aufruf oxid.form.send(’_filterlist’) meine Attributauswahl an die Listenfunktion von OXID senden kann, um dann meine gefilterte Produktliste zurückzubekommen.
Meinst Du damit, dass ich einmal alle Produkte lade, und diese bereits geladenen filtere & anzeige? Damit erübrigt sich natürlich ein nachladen. Das geht doch dann aber nur bei überschaubaren Produktmengen, oder?
Mit “Ajax-Reload” bezeichnete ich den Vorgang, wenn nur Teilbereiche der Website neu geladen werden. In meinem Fall wäre das das Produktlisting.
Sorry, wenn ich mich unverständlich ausdrücke.
Habe jetzt meine Lösung gefunden: Für oben beschriebenes Problem ist es für mich NICHT notwendig, ein eigenes Modul zu schreiben. Die Funktionalität wird bereits mit der Klasse aList geliefert. Allerdings muss der view angepasst werden, damit beim Aufruf des Filters nicht die komplette Seite zurück geliefert wird, sondern nur der Bereich, der mittels Ajax ausgetauscht werden soll.
Die bei Link 1 gemachten Angaben stimmen. Der Inhalt einer in views hinterlegten Klasse (wie unter 1 genannt)
class ajaxlist extends alist
{
protected $_sThisTemplate = 'ajaxlist.tpl';
}
benötigt nur eine Datei ajaxlist.tpl, in der quasi alles stehen kann, um ohne Reload zu ladene Inhalte darzustellen. Mit AJAX spricht man über cl=ajaxlist und den zu übertragenden Werten (per Post oder GET) die Datei und Klasse(n) an. Nun kann man bestehende Funktionen direkt zum Empfang der Werte anpassen oder ein Modul schreiben . Fertig.
Ich würde mich mit den selben Anforderungen gern in diesen Thread einklinken.
dann habe ich es wohl doch noch nicht ganz verstanden. Wenn ich meine view nach link 1) erstelle, geht es nicht:
class ajaxlist extends alist
{
protected $_sThisTemplate = 'ajaxlist.tpl';
}
Das dürfte daran liegen, dass es aList und nicht alist heißen sollte.
Egal, ob ich es mit dieser korrigierten Variante oder mit
class ajaxlist extends aList {
public function init()
{
parent::init();
$this->_sThisTemplate = 'ajaxlist.tpl';
}
}
versuche, ich werde immer kommentarlos (also ohne Fehlermeldung) zur Startseite weitergeleitet (die URL lautet dann Home — Agentur XY GmbH). Habe in der ajaxlist.tpl auch schon den Inhalt von list.tpl 1:1 kopiert, aber auch einfach nur leer gelassen, immer mit dem selben Ergebnis.
Hat einer eine Idee, was ich falsch mache?
Geprüft habe ich:
Dateiberechtigung
Zeichensatz
Dateinamen
Ob sich die Dateien in views/ bzw. im tpl-Ordner befinden