Ajax

Hallo.

Ich habe einen Preisfilter erstellt. Wenn ich diesen mit

index.php?cl=alist&cnid=...

auslöse, lädt mir oxid den gesamten Shop (also Header und Footer) inklusive der gefilterten Artikel statt nur die Artikel. Ich habe also dann einen Shop im Shop.

Wie schaffe ich es, nur den Reload der Artikel zu bewirken?

Muss ich dazu eine eigene Viewklasse anlegen?

Gruß & Dank

joe

Jup, dafür musst du eine eigene View bauen, am besten von list erben lassen und nur $_sThisTemplate ändern.

Hallo.

Gibt es dazu ein Tutorial oder Hinweise ? Im Moment weiß ich nämlich nicht, wie ich anfangen sollte.

Gruß & Dank

joe

das ist total easy, leg im views ordner eine datei ajaxlist.php an die so aussieht:

public class ajaxlist extends list{
$_sThisTemplate = “ajaxlist.tpl”
}

Dann kopier list.tpl nach ajaxlist.tpl - dann kannst du aus ajaxlist.tpl einfach den _header und _footer include raussschmeissen und alles anpassen wie du es brauchst.

Hallo & Danke.

Wenn ich die Datei anlege, bekomme ich folgende Fehlermeldung:

Parse error: syntax error, unexpected T_PUBLIC

Gruß

joe

Nachtrag: Wenn ich es analog zu den anderen Dateien mache, kommt zumindest schonmal keine Fehlermeldung:

class ajaxlist extends alist
{
    protected $_sThisTemplate = 'ajaxlist.tpl';
}

Ist das so richtig ?

Hallo.

Danke vielmals für den Ansatz. Die Änderung scheint es gewesen zu sein. Ich bekomme zwar noch ein paar ajax-Fehlermeldungen aber sonst geht das schon mal.

Kann ich nun auch gezielt Funktionen aus alist.php abrufen oder besser: diese in die ajaxlist.php kopieren, maipulieren und mit der ajaxlist.tpl abrufen?

Gruß & Dank

joe

Das beste vorgehen ist immer ein overload der methode, jenachdem ob du den Rückgabewert beeinflussen willst eventuell so:

public function meinoverload($param){
$result = parent::meinoverload($param);
$result = $result + 1;
return $result;
}

Das schützt dich vor Problemen bei Updates vom Shop, wenn du es komplett aushebelst (ohne parent call) kriegst du evtl. Probleme. Wenn du nichts an der Methode ändern willst dann rufe sie einfach direkt auf, das ist die beste vorgehensweise.

So, nun habe ich alles mal hochgeladen und da funktioniert es nicht. Kann das am mod-rewirte liegen?

Hallo.

Ich habe nun einiges probiert, bin aber online leider noch nicht weiter gekommen.

Ist an folgendem Link etwas falsch oder fehlt was ?

index.php?cl=ajaxlist&cnid=65e945784a2cf4589a66b68f16af61b78&minValue=55&maxValue=218

Auf meinem Rechner wird die Seite ajaxlist.tpl angezeigt. Online sagt er mir “301 moved permanently”.

Woran kann das liegen?

Gruß & Dank

joe

Hallo,

schau mal ins EXCEPTION_LOG.txt (unter log/).

Grüße

Cutty

Hallo.

Da steht tatsächlich ein Fehler drin.

oxSystemComponentException-oxException (time: 2010-06-13 17:11:34): [0]: EXCEPTION_SYSTEMCOMPONENT_CLASSNOTFOUND
Stack Trace: #0 /…/core/oxfunctions.php(284): oxUtilsObject->oxNew(‘ajaxlist’, NULL)
#1 /…/views/oxshopcontrol.php(271): oxNew(‘ajaxlist’)
#2 /…/views/oxshopcontrol.php(99): oxShopControl->_process(‘ajaxlist’, NULL)
#3 /…/index.php(104): oxShopControl->start()
#4 {main}

Allerdings funktioniert das ganze local. Nur online nicht. Die Dateien sind da:
ajaxlist.php in views und ajaxlist.tpl im tpl-Verzeichnis.

Ich hab echt keine Ahnung.

Gruß & Dank

joe

Wenn die Dateien korrekt übertragen wurden, fallen mir nur noch 2 Dinge ein:

Ein Modul, welches stören könnte oder mit der Linkbildung stimmt was nicht.

Hallo.

Der Link sieht so aus wie auf der ersten Seite geschrieben.

Kann das nicht am rewrite liegen, weil es local funkt?

Gruß & Dank

joe

Ich gebe für heute auf. Kann das vielleicht am Provider liegen?

Diese Meldung EXCEPTION_SYSTEMCOMPONENT_CLASSNOTFOUND kann nur daran liegen dass du die Datei aus dem views Ordner nicht mit übertragen hast / diese blöde Rechte bekommen hat (600 oder so ne scheisse)

Hallo.

Ja, es geht. Es lag am Namen ajaxlist. Ich hatte List statt list geschrieben. Endich geht es weiter.

Gruß & Dank an aggrosoft und rubbercut

joe