PHP -> Template : WO ?

Hallo, habe unheimliche Probleme, in der Struktur von SW durchzublicken. Mein Problem ist folgendes: Wo und wie kann ich eigene PHP/ MySQL-Abfragen erstellen, damit sie Updatesicher sind ? Wie bekomme ich diese ins Template zugewiesen, damit ich auf die Variablen / das Ergebnis meiner Abfragen zugreifen kann ? Es gibt so viele Infos im Developer Bereich, dass mir schon der Kopf qualmt. Komme nicht weiter, suche mich dumm und dämlich. Bin diese Template Programmierung nicht gewohnt, will die zukünftigen Projekte aber mit SW umsetzen und meinen aktuellen Shop auch. Nur muss ich dafür irgendwie den Überblick bekommen. Kann mir jemand helfen ? CSS und Less ist jetzt gelöst, aber wo ich die Datenbankabfragen machen kann, da blicke ich nicht durch. Würde mich über Hilfe wirklich freuen. Gruß HEPI

Hi, hast du den QuickStart-Guide schon entdeckt? Ich denke, der könnte dir schonmal sehr weiterhelfen: https://developers.shopware.com/develop … ick-start/ Da wird als Beispiel ein Zufallsslogan aus einem Array gezogen - du kannst das Beispiel leicht so abändern, dass der Slogan bspw. aus der DB kommt. Du kannst eigentlich überall in deinem Code mit “Shopware()->Db()” auf die Datenbankverbindung zugreifen - das ist erstmal die schnellste Möglichkeit. Natürlich haben wir auch ein ORM oder den DBAL-QueryBuilder - aber Shopware()->Db() ist für Einsteiger sicher erstmal am verständlichsten. Besten Gruß, Daniel

Ja, die Seite kommt mir bekannt vor :slight_smile: Setze mich gleich dran und hoffe, der Plan geht auf. DANKE.

Hier findest du noch Lektüre und Beispiele: sonstiges-f58/faq-haufig-gestellte-fragen-t24425.html#p109837 Viele Grüße

[quote=“Aquatuning GmbH”]Hier findest du noch Lektüre und Beispiele: sonstiges-f58/faq-haufig-gestellte-fragen-t24425.html#p109837 Viele Grüße[/quote] Super - vielen Dank. Aber da ist auch wieder der Punkt, der mich etwas irritiert. Die Beispiele sind für Version 4. Sind diese identisch mit 5, bis auf die Benennung der Ordner ( https://developers.shopware.com/designe … tup-guide/ ) ?

So, bin schon wieder einen Schritt weiter. Danke schon Mal für die Hilfen. ABER: Ich möchte ein Template erstellen. Meine Kategorien haben 3 Ebenen. Ebene 2 soll das Template zugeordnet werden, dass dann die Kategoriebilder aus Ebene 3 zeigt. Normal würde ich es so machen: SELECT c.id, m.`name`, m.path FROM s\_categories AS c INNER JOIN s\_media AS m ON c.mediaID = m.id WHERE c.parent = '13' Danach einfach das Ergebnis entsprechend Darstellen. Die 13 würde ich im Template rausbekommen mit $sCategoryContent.id . Aber wie geht es weiter ? Sorry, es ist für mich mega Kompliziert. Es hat noch nicht klick gemacht. Ein paar Beispiel (Tutorials) habe ich schon Schritt für Schritt abgearbeitet. Aber trotzdem fehlt mir das Verständnis. Bestimmt habe ich jetzt wieder einen Denkfehler. Aber muss auch sagen, dass es mega kompliziert ist. Alles ist verschachtelt, man kann nicht einfach sagen: Jetzt zeige mir alle Child-Kategorien von dieser Parentkategorie. Danke schon jetzt für die Antworten. Gruß HEPI

So langsam ist es eine nervige Angelegenheit. Der Quick-Start von Daniel hat mir sehr weiter geholfen. Habe es erstellt und es funktioniert. Dann habe ich die getSlogan einfach abgeändert und eine DB-Abfrage eingebaut. Funktioniert. ABER : er holt mir nur den ersten Eintrag aus der DB. Muss echt sagen, das alles hier hat für mich nichts mehr mit „normalem“ Programmieren zu tun. Es ist alles anders. Selbst die Basics funktionieren hier nicht. Gibt es keine ordentliche Anleitung, wo drinnen steht, wie man an die verschiedenen - Herrgott, was weiß ich wie man die nennt … Ich will einfach (wie in dem linken Klappbaum der Kategorie), die Kategorien auf Ebene 3 auslesen, wenn ich auf ebene 2 bin. Warum ist das in diesem Shopware so kompliziert ? Ich kann die aktuelle CateogieId auslesen. Aber nicht die, die darunter sind. Die DB-Abfrage ist ein Kinderspiel. Aber die Umsetzung mit SW ist ein Albtraum …

Hi, es ist nicht so kompliziert, es ist eine durchaus übliche parent Kategoriestruktur mit einer denormalisierten Hierarchie in der path Spalte. Du kannst doch relativ einfach alle Kategorien unter einer Kategorie auslesen, dafür gibt es doch die parentId. Wenn die nicht reicht, nimmst du halt den Path mit einem LIKE. In deinem Beispielquery oben ist ein InnerJoin drin. Den würde ich erstmal testweise rausschmeisen. Bevor du dich also mit dem Rest beschäftigst, teste deinen Query in beispielsweise phpmyadmin. So schwer ist das in der Regel alles gar nicht - aber letztlich ist es ja auch ein Shop und kein Gästebuch, eine gewisse Komplexität in bspw der Datenstruktur muss man da schon akzeptieren. Wie gesagt: biege erstmal den SQL Query zurecht, dann kommen wir hier sicher weiter :wink: Gesendet von meinem SM-N910F mit Tapatalk

Hallo Daniel, die DB-Stuktur ist nicht das Problem und die Query funktioniert. Diese gibt mir zwei Ergebnisse aus. Aber egal wie ich es angehe, in SW wird nur das erste Ergebnis genommen. Das kann nur heißen, dass meine Abfrage für SW falsch ist: $subcat = Shopware()-\>Db()-\>fetchRow("SELECT c.id, m.`name`, m.path FROM s\_categories AS c INNER JOIN s\_media AS m ON c.mediaID = m.id WHERE c.parent = '13'"); $sub = $subcat['id']." : ".$subcat['name']." -\> ".$subcat['path']; return $sub; Habe es mit while probiert, aber dann bricht SW mit error ab … Mein Ziel erreiche ich, indem ich das Ergebnisse aus der DB-Abfrage in ein Array schreibe und dieses dann an das Template übergeben. Wenn ich es dann richtig verstanden habe, wird im Template mit einer foreach-Schleife das Array gelesen. Aber erstmal muss ich das Array hinkriegen :shock:

Hi, fetchAll ist die Lösung :sunglasses: Gesendet von meinem SM-N910F mit Tapatalk

1 Like

SUPER - vielen herzlichen Dank. Hat jetzt alles funktioniert wie gewollt und die Basis ist geschaffen. Jetzt Arbeiten danach geht es weiter. Wenn man so Hilfe bekommt, macht es auch Spaß. Nochmals Danke an Daniel und an Aquatuning :slight_smile: