Beispiel Plugin - Verlinkung ändern

Guten Tag,

seit ein paar Tagen befasse ich mich mit Shopware 5.x.x und bin nun bei der Plugin Entwicklung. Das Beispielplugin SloganOfTheDay funktioniert auch soweit. Allerdings wollte ich den Anzeigeort ändern und ich finde nicht heraus, wie ich das hinbekomme.

Die Anzeige ist   standardmäßig auf der indexseite -index.tpl. Ich möchte die Anzeige aber auf eine neue Einkaufswelt beschränken.

Über Tipps oder Lösungsvorschläge wäre ich sehr dankbar

 

Gruß Noname

Aus dem Bauch raus ohne Anspruch auf Gewähr :slight_smile:

Im Template mit 

{if $hasEmotion}

{/if}

kapseln? 

Edit: habe das “neue” überlesen - müsste dann ggf. noch über ein Freitext gesteuert werden - also IF auf Freitext erweitern.

Danke für die schnelle Antwort.

Versuche nun herauszufinden, was mit der Antwort gemeint ist aber das ist gar nicht so einfach…

Ich habe ein neues Template erstellt wo ich die Navigation abgeändert habe, soll die Abfrage in ideses Template oder ist das Template unter “Bare” gemeint?

Auch wüsste ich nun nicht in welchem Zusammenhang Freitextfelder zu dem Plugin stehen. Freitextfelder sind doch in Artikeln und Artikel habe ich keine. Nur eine Einkaufswelt welche ein wenig Inhalt beinhaltet.

Es scheint ja so zu sein, dass das Plugin in der header.tpl im Block Frontend_index_logo eingebunden wird und die Einkaufswelten zu dem Block frontend_index_breadcrumb gehören.

Sofern ich das nun richtig interpretiere was mir hier die index.tpl anzeigt.

 

PS: habe in der index.tpl des Plugins den Block auf “frontend_index_breadcrumb” geändert. Ich hätte gedacht, dass das Plugin sprich der Slogan nun auf allen Einkaufswelten angezeigt wird. Leider war dem nicht so :frowning:

Ich empfehle Dir die Doku zu Shopware, da werden alle Fragen erklärt, z.B. das man nie im BARE etwas ändert. Mein Fehler war das “Theme” - das Plugin bringt ja eine eigen Template-Datei mit, welches das Theme erweitert. Dort also den Bereich kapseln.
Zweitens stehen “Freitextfelder” auch in anderen Bereichen zur Verfügung, z.B. Kategorien - mindestens “6” bis SW 5.1.x und mehr ab 5.2.x
Da eine “Einkaufswelt” einer “Kategorie” zugewiesen ist, könnte man also ein Freitext zu dieser Kategorie mit einem Wert belegen, und in der Template-Datei von diesem Plugin auf dieses Freitext abfragen. Das wäre der einfache Weg über das Theme/Template.

Mit mehr Aufwand kann man auch im Plugin den Controller, die Action und dann die Kategorie-ID abfragen, und damit entscheiden, ob etwas angezeigt wird, oder nicht, wäre mir aber zu umständlich  Wearing-Sunglasses
 

Ok das habe ich soweit verstanden. Den Tipp ein Freitextfeld zur Pluginausgabe zu nutzen findet man aber nicht in der Doku ^^

Wenn ich nun den Wert abfrage, in welchem Block muss denn die Ausgabe stattfinden? Teste gerade verschiedene Blöcke durch aber der richtige war noch nicht dabei.

Ich hab jetzt gerade keine Zeit, um mir das Beispiel-Plugin anzugucken.
Es hängt davon ab, ob es die Startseite ist, oder die Einkaufswelt einer betimmten Kategorie.
Als Basis für eine Kategorie wäre zunächst mal die frontend/listing/index.tpl im BARE anzugucken.  Die erweitert die frontend/index/index.tpl - das wäre dann die nächste Anlaufstelle.
Aus dem Plugin heraus kannst Du ja nun frei Blöcke erweitern/überschreiben. Der passende ist der, wo Du es letztlich in der Ausgabe haben möchtest :slight_smile:
Innerhalb des Einkaufsweltenbereichs werden die Inhalte dann eh mit Javascript über widgets nachgeladen, Das wäre dann aber ein ganz neue Baustelle.
 

Bisher konnte ich den richtigen Block noch nicht ausfindig machen. Was mir aber aufällt ist, dass sehr häufig nach &hasEmotion abgefragt wird. In der Doku finde ich nichts entsprechendes was der Wert überhaupt zu bedeuten hat…?

Das Freitextfeld habe ich nun in der ensprechenden Kategorie hinterlegt. Allerdings kann ich ja erst abfragen, wenn ich den richtigen Block finde -_-

Achja mein Beispielplugin ist folgendes : http://community.shopware.com/Shopware-4-Grundlagen-der-Plugin-Entwicklung_detail_971.html

@Noname schrieb:

Bisher konnte ich den richtigen Block noch nicht ausfindig machen. Was mir aber aufällt ist, dass sehr häufig nach &hasEmotion abgefragt wird. In der Doku finde ich nichts entsprechendes was der Wert überhaupt zu bedeuten hat…?

Das Freitextfeld habe ich nun in der ensprechenden Kategorie hinterlegt. Allerdings kann ich ja erst abfragen, wenn ich den richtigen Block finde -_-

Achja mein Beispielplugin ist folgendes : http://community.shopware.com/Shopware-4-Grundlagen-der-Plugin-Entwicklung_detail_971.html

Hallo,

und der erwartest jetzt wirklich, das eine Anleitung von Shopware 4 noch in Shopware 5 gültig ist? Die richtige Anleitung für ein Beispielplugin wäre wohl eher diese hier: Plugin quick Startup Guide . hasEmotion steht eigentlich nur für die Prüfung, ob es sich um ein Kategorie - Listing oder eine Einkaufswelt handelt.

Beste Grüße

Sebastian

Da musst Du oben im Bereich „developers“ mal auf die Suche gehen. Das Beispiel bezieht sich auf das alte Template-System von SW4 - das hat sich ja grundlegend mit SW5 und den Themes geändert. Unter „developers“ gibt es irgendwo auch eine Anleitung, was in Plugins angepasst werden muss. Das Beispiel so kann nicht ohne Anpassung mit SW5 funktionieren. Also grob „Update von SW4 auf SW5“ im Designer-Bereich *tippe ich jetzt mal*

„hasEmotion“ ist schlicht eine Template-Variable die gesetzt wird, wenn eine Einkaufswelt „Emotion“ aufgerufen wurde.

Hatte irgendwo gelesen, dass die Plugins weiterhin funktionieren und im Beispiel von SloganOfTheDay ist das ja auch der Fall. Zumindest wenn es im Header ausgegeben wird.

Also müsste ich meine Abfrage nach der Freitextfeld ID nach dem hasEmotion einbringen…

Ich werde nun mal ein aktuelles Plugin Beispiel für doe 5. Version integrieren und es nochmal mit unterschiedlichen Blöcken probieren. Irgendwann wird schon eine Anzeige kommen ^^

Wobei es seltsam ist das anscheinend nirgendwo dokumentiert ist, wo der Block für den Inhalt einer Kategorie ist.

 { **block** name= **"frontend\_index\_breadcrumb\_content"** }

 { **block** name= **'frontend\_index\_content'** }

 { **block** name= **"frontend\_listing\_listing\_content"** }

sind es zumindest nicht.

Mühsam ernährt sich das Eichhörnchen :slight_smile:

Habe mir eine Test - Kategorie ohne Einkaufswelt angelegt und mir den Quellcode angesehen.

Wie sonic schon meinte muss ich in der Datei index.tpl im listing pfad suchen. Dort scheint der Block

 { **block** name= **"frontend\_listing\_index\_text"** }

zu funktionieren. Also habe ich eine neue tpl Datei in meinem eigenen Theme erstellt, den Inhalt der gefundenen tpl Datei kopiert und um einen eigenen Block erweitert.

_{\* Category headline \*}_ { **block** name= **"frontend\_listing\_index\_text"** } { **if**! **$** hasEmotion} { **include** file= **'frontend/listing/text.tpl'** } {/ **if** } {/ **block** } _{\*Mein Block\*}_ { **if**! **$** hasEmotion **and $** sCategoryContent.id == 2543463 } { **block** name= **"Test"** } {/ **block** } {/ **if** }

In dem Plugin habe ich den Block entsprechend umbenannt:

 { **block** name= **"Test"** prepend}

Der Inhalt wird nun auch richtig ausgegeben. Allerdings enthält die Standardseite noch einen Filter und eine Sortierung. Den Filter kann ich deaktivieren… die Sortierung nur nicht -_-