Globale Variabeln

Also, ich bin nun soweit dass ich einen Block durch ein Template ersetzen kann, indem ich überprüfe ob ein Nutzer eingeloggt ist. Mein Problem ist nun, wenn ich zum Beispiel im Artikellisting den Preisblock überschreibe in etwa so:

Im product-price.tpl

{block name='frontend_listing_box_article_price_info'}
	
		{action controller=UserDataController action=priceDetail}
	
{/block}

in der price_detail.tpl 

{if $plugin_benutzerDaten_userEingeloggt === true}
	
	{* Product price - Unit price *}
	{block name='frontend_listing_box_article_unit'}
		{include file="frontend/listing/product-box/product-price-unit.tpl"}
	{/block}

	{* Product price - Default and discount price *}
	{block name='frontend_listing_box_article_price'}
		{include file="frontend/listing/product-box/product-price.tpl"}
	{/block}
{/if}

 

Das ganze funktioniert soweit schon, nur leider sind im eingeloggt Zustand der Preis dann 0,00 € weil scheinbar die Artikel nicht weiter übergeben werden. Wie müsste ich da nun dran gehen, dass ich das zum laufen bekommen? Ansätze?

Der Controller stellt im Moment eigentlich nur die Variable zur Verfügung und läds das Template.

Du musst die Parameter weitergeben - zb:
{action controller=UserDataController action=priceDetail article=$article bla=„blub“}
Dann stehen dir diese Variablen auch im widget zur Verfügung.

Alternativ: nur die ID mitgeben und neu aus der DB auslesen.

Viele Grüße

1 Like

Super, dass war schon mal der richtige Hinweis. Solangsam komm ich vorran :wink:

Aber schon erscheint das nächste Problem. Seid dem das nun alles so läuft,wie wir das gerne hätten, geht nun das Infinite Ajax nicht mehr. Komme da aber an keine Fehlermeldung dran da er mir :

1468921972_3912cd8….js:2 GET http://localhost/shop/widgets/Listing/ajaxListing?p=2&mode=next&c=6 404 (Not Found)

Ich weiß das dieses Problem scheinbar schon öfters aufgetreten ist, wenn man etwas am Produklistinglayout veändert aber hier noch mal meine zwei Klassen:

registerController('Frontend', 'UserDataController');
			
        return true;
    }
}

Modules()->Admin()->sGetUserData();
        $this->View()->assign('plugin_benutzerDaten_userData', $userdata);
		$eingeloggt = Shopware()->Modules()->Admin()->sCheckUser();
		$this->View()->assign('plugin_benutzerDaten_userEingeloggt', $eingeloggt);

	}
	
	public function priceDetailAction() {
		
		
		$this->View()->assign('sArticles', $this->Request()->getParam('sArticles'));	
		$this->View()->assign('sArticle', $this->Request()->getParam('sArticle'));	
		$this->View()->assign('sCategory', $this->Request()->getParam('sCategory'));
		$this->View()->assign('sPage', $this->Request()->getParam('sPage'));
		
	}
	
}

Wieso findet der dieses Widgt Listing nun nicht mehr? Ich denke dass ich da irgendwie auf ein Event zugreifen muss, das geschiet ja im Moment nicht, oder?

Problem hat sich erledigt, ich hab es jetzt mal im späteren Shopsystem getestet, da funktioniert es wunderbar. Wenn ich doch nur wüsste, wo sich der Fehler in der lokalen  Testumgebung eingeschlichen hat.

 

Vielen Dank für die Mithilfe!