hook will nicht

hi, geh weiter die examples durch. hab das gefühl das nix geht. eigentlich soll folgender code eine die() ausgabe machen. [code]<?php class Shopware_Plugins_Frontend_Example3_Bootstrap extends Shopware_Components_Plugin_Bootstrap
{
public function install()
{

	$hookReplace = $this->createHook( 'sArticles', 'sGetArticleById', 'onArticleReplace', Enlight\_Hook\_HookHandler::TypeReplace, 0 ); $this-\>subscribeHook($hookReplace); return true; } static function onArticleReplace (Enlight\_Hook\_HookArgs $args) { die("Artikel gesperrt"); } } [/code] wie in meinen [url=http://forum.shopware.de/plugins-erweiterungen-f20/if-using-firebug-1-8-you-need-developercompanion-t3690.html]1. post[/url], passiert nix. cache geleert, plugin mehrmals installiert ... kann mir jemand sagen was ich falsch mache?

[quote=“pino”]hi, geh weiter die examples durch. hab das gefühl das nix geht. eigentlich soll folgender code eine die() ausgabe machen. [code]<?php class Shopware_Plugins_Frontend_Example3_Bootstrap extends Shopware_Components_Plugin_Bootstrap
{
public function install()
{

	$hookReplace = $this->createHook( 'sArticles', 'sGetArticleById', 'onArticleReplace', Enlight\_Hook\_HookHandler::TypeReplace, 0 ); $this-\>subscribeHook($hookReplace); return true; } static function onArticleReplace (Enlight\_Hook\_HookArgs $args) { die("Artikel gesperrt"); } } [/code] wie in meinen [url=http://forum.shopware.de/plugins-erweiterungen-f20/if-using-firebug-1-8-you-need-developercompanion-t3690.html]1. post[/url], passiert nix. cache geleert, plugin mehrmals installiert ... kann mir jemand sagen was ich falsch mache?[/quote] Was machst du um dies Auszuführen? Du musst ja irgendeine Action im Shop machen, welche die Function sGetArticleById aufruft.
1 „Gefällt mir“

hi, ich rufe ein artikel auf. z.b. /lifestyle-wohnen/6/karaffe Enlight\_Controller\_Request\_RequestHttp Object ( [\_paramSources:protected] =\> Array ( [0] =\> \_GET [1] =\> \_POST ) [\_requestUri:protected] =\> /lifestyle-wohnen/6/karaffe [\_baseUrl:protected] =\> [\_basePath:protected] =\> [\_pathInfo:protected] =\> /lifestyle-wohnen/6/karaffe [\_params:protected] =\> Array ( [RewriteUrl] =\> 1 [sViewport] =\> detail [sArticle] =\> 6 ) [\_rawBody:protected] =\> [\_aliases:protected] =\> Array ( ) [\_dispatched:protected] =\> 1 [\_module:protected] =\> frontend [\_moduleKey:protected] =\> module [\_controller:protected] =\> detail [\_controllerKey:protected] =\> sViewport [\_action:protected] =\> index [\_actionKey:protected] =\> sAction )

hi, das problem besteht leider immer noch. [quote=“http://wiki.shopware.de/Einfuehrung-Hook-System_detail_615.html”] Schauen wir uns beispielsweise einmal die Methode sGetArticleById aus der Klasse /engine/core/class/sArticles.php an. Diese wird im Detail-Controller aufgerufen, um alle Daten eines spezifischen Artikels aus der Datenbank abzufragen. [/quote] ich bin in detail <?php class Shopware_Plugins_Frontend_myHook_Bootstrap extends Shopware_Components_Plugin_Bootstrap { public function install() { $hook = $this->createHook( 'sArticles', 'sGetArticleById', 'onArticle', Enlight\_Hook\_HookHandler::TypeAfter, 0 ); $this-\>subscribeHook($hook); return true; } static function onArticle(Enlight\_Hook\_HookArgs $args) { $article = $args-\>getReturn(); $article["price"] = str\_replace(",",".",$article["price"]); // Preis ist an dieser Stelle bereits formatiert, also Komma durch Punkt ersetzen, damit wir mit dem Ergebnis rechnen können $article["price"]\*= 1.1; // Preis um 10 % erhöhen $article["price"] = $args-\>getSubject()-\>sFormatPrice($article["price"]); // Aufruf einer Methode aus der Original-Klasse, um den Preis entsprechend zu formatieren $args-\>setReturn($article); // Rückgabe der Methode definieren } } ?\> kann keiner der erfahrenen hier was dazu sagen? // edit [quote=“http://wiki.shopware.de/Einfuehrung-Hook-System_detail_615.html”] Im Hintergrund erzeugt Shopware automatisch die benötigten Objekte und Klassen im Verzeichnis engine/Shopware/Proxies/ In unserem Fall finden wir dort nun die Datei myArticlesProxy.php (myArticles, weil für die Klasse sArticles im Auslieferungszustand bereits eine Vererbung stattfindet) [/quote] soll: [code]<?php class Shopware_Proxies_myArticlesProxy extends myArticles implements Enlight_Hook_Proxy
{
public function excuteParent($method, $args=null)
{
return call_user_func_array(array($this, ‘parent::’.$method), $args);
}

public static function getHookMethods()
{
	return array ( 0 => 'sGetArticleById',); } public function sGetArticleById($id=0) { if(!Enlight::Instance()-\>Hooks()-\>hasHooks('myArticles', 'sGetArticleById')) { return parent::sGetArticleById($id); } $obj\_args = new Enlight\_Hook\_HookArgs($this, 'sGetArticleById', array('id'=\>$id)); return Enlight::Instance()-\>Hooks()-\>executeHooks($obj\_args); } } [/code] ist: [code]

push das thema ist leider nicht vom tisch. kann mir jemand erklären wie das mit den hooks ist und der benötigten *proxy datei? dazu noch ne frage: wie kann ich ein hook auf index/home machen?

Lösche mal alle Proxies unter Shopware\Proxies - in der 3.5.4 gibt es diesbzgl. noch einen Fehler, so dass die Dateien nicht neu generiert werden. Das ist aber in 3.5.5 behoben bzw. gibt es dazu im Trac auch einen Fix! Damit sollte sich das Problem erledigt haben!

1 „Gefällt mir“

gesagt, getan. von 43 auf 4 dateien. scheint aber alles zu laufen. muß ich mal im auge behalten, danke schon mal. // edit ok, ich muss die proxie datei immer löschen, damit diese neu erstelt wird.

hallo zusammen, wie haben in einem shop (3.5.6) ein pfandsystem-plugin installiert, welches wir noch modifizieren müssten. das ganze läuft über ein paar hooks, die auch einwandfrei funktionieren, ABER: - änderungen z.B. mit einem weiteren hook im gleichen plugin bewirken in der ausgabe gar nichts … - auch wenn das plugin deaktiviert wird … - oder bestehende hooks in diesem plugin auskommentiert werden, passiert gar nichts, das plugin wird weiterhin in der alten version dargestellt. - wir haben alle proxies gelöscht, - den cache des öfteren geleert, der effekt ist immer der gleiche, es passiert nix … wie wenn die hooks einmalig initialisiert worden sind, und änderungen nicht mehr angenommen werden. hat irgendjemand eine idee ??? vielen dank christian