Hallo, ich komme an folgendem Punkt nicht weiter, da ich nicht genau wie ich hier weiter vorgehen soll… Ich möchte die Funktion sAddArticle der Klasse sBasket verwenden, um über eine eigene PHP-Anwendung einen Artikel in den Warenkorb zu legen. Folgendes habe ich erstellt: [code]<?php // Pfad zur sBasket Core-Klasse (wird auch gefunden)
require(’…/…/core/class/sBasket.php’);
$myBasket = new sBasket();
var_dump($myBasket->sAddArticle(‘SW2001_5409’, 2)); ?> [/code] Beim Aufruf der Datei erscheint allerdings die Fehlermeldung Fatal error: Call to a member function sCallHookPoint() on a non-object Kommentiere ich die Zeile der Fehlermeldung in der sBasket aus eval($this-\>sSYSTEM-\>sCallHookPoint("sBasket.php\_sAddArticle\_Start")); so wird mir ein bool(false) zurückgegeben, also keine Aktion. Kann ich die Methode nicht einfach verwenden? HookPoints werden doch verwendet um den Standard-Code anzupassen bzw. zu erweitern oder sehe ich das falsch? Ich will ja nichts erweitern sondern die Standard-Methode ausführen um einen Artikel mit Order-Number und Anzahl zum Warenkorb hinzuzufügen. Kann mir da jemand weiterhelfen wie ich mein Vorhaben realiseren kann? Irgendwie stehe ich da auf dem Schlauch wie dies umzusetzen ist. Vielen Dank.
Danke für die schnelle Antwort, allerdings verstehe ich schon was Hooks sind, nur finde ich in der Doku nur Beispiele wo man die Funktionen von Methoden mittels Hooks abändert bzw. das Verhalten ändert. Ebenfalls finde ich in der Doku nur Beispiele mit dem Hooks in Plugins verwendet werden. Dies alles möchte ich ja nicht, ich möchte nur mittels eines externen PHP Files die Methoden der Core-Klassen nutzen, um Beispielsweise mittels einem eigenen PHP-File ‘TueIrgendwas.php’ und der Methode sAddArticle der sBasket-Klasse einen Artikel in den Warenkorb zu legen. Hierbei möchte ich weder ein Hook um die Funktionsweise zu ändern noch dies als Plugin zu registrieren da ich dies ja im eigenen Script aufrufen möchte und dies nicht bei einen bestimmen Ereignis des Shops eintritt. Auch Code-Snippets wie $this->sSYSTEM->sMODULES[‘sArticles’]->sGetArticleById(7) haben mir nicht weitergeholfen, immer kommt die Meldung Fatal error: Call to a member function sGetArticleById() on a non-object. Ich weiß einfach nicht wie ich dies in einem externen PHP-File realisieren kann, welche Klassen ich hierzu einbinden muss und wie ich die Funktion letztendlich einbinden kann. Danke schonmal im Vorraus.
Hey, das wird so nicht funktionieren. Die Klassen haben Abhängigkeiten, die aufgelöst werden müssen. Einfachstes Beispiel die Datenbank-Verbindung und das System-Object. Die kannst du also nicht ohne weiteres einfach includen und dann mit der Logik dort arbeiten. Folgendes müsste aber gehen: if(!function\_exists('Shopware')) { require\_once('Shopware.php'); // Achtung! Das funktioniert nur, wenn dein Script im Doc-Root neben shopware.php liegt! Ansonsten Pfad anpassen new Shopware(); } Shopware()-\>Bootstrap()-\>loadResource('Zend'); Shopware()-\>Bootstrap()-\>loadResource('Db'); Shopware()-\>Bootstrap()-\>loadResource('Plugins'); Shopware()-\>Bootstrap()-\>loadResource('Session'); Shopware()-\>Plugins()-\>Core()-\>ErrorHandler()-\>registerErrorHandler(E\_ALL | E\_STRICT); Shopware()-\>Modules()-\>Basket()-\>sAddArticle('1234'); P.s. Erkläre mal kurz was du mit deinem Script überhaupt bewirken möchtest, bzw. in welchem Kontext das arbeiten soll?
Danke das werde ich einmal ausprobieren. Letztendlich möchte ich einen kleinen Konfigurator einbinden, der einige Punkte abfrägt und aus denen dann ein individueller Preis errechnet wird. Da es doch mehr als 6 unterschiedliche Merkmale gibt und alle miteinaner kombiniert werden können und auch der Preis abhängig der Kombination etc. ist scheidet für mich der Shopware-Konfigurator aus. Auch da dieser bereits nahezu fertig vorhanden ist und bis auf kleineren Modifikationen weiter benutzt werden soll. Der eigene Konfigurator soll letztendlich XML erzeugen welches dann durch die Shopware-API einen neuen individuellen Artikel erzeugt und anlegt und dieser dann automatisch in den Warenkorb legt. Ersten Punkt habe ich hinbekommen, nur mit dem ‚in den Warenkorb legen‘ hatte ich die oben genannten Probleme.