Sprachenindividueller Variantenlink

Hey Shopware-Gemeinde, eine Frage: 

wir haben ein kleines Plugin was uns eine Variante als Bild mit hinterlegtem Link in den Einkaufswelten anzeigen lässt. Der Link wird dabei über folgende Variable erzeugt: $sArticle.linkVariantDetails

Leider gibt die Variable jedoch immer die deutsche Detailsseite aus. Als wenn der Kunde auf der Home ENG wählt und in der Einkaufswelt dann auf das entsprechende Bild klickt wird er zur deutschen Variante gebracht. Weiss jemand wie ich die Variable Sprachenindividuel ausgeben kann? 

Im Endeffekt geht es doch nur darum im Browser den korrekten Link anzuhängen… Kann mir jemand helfen? 

Danke!! VG Fabian 

Also habt ihr ein eigenes Einkaufswelt erstellt. Wie befüllt ihr denn die Variable $sArticle ?

Viele Grüße

Ein eigenes Widget für die Einkaufswelt ja genau. Hab folgendes in der Bootstrap gefunden:

// Detail-Page Link
            $query = Shopware()->Db()->executeQuery('
                SELECT path
                FROM s_core_rewrite_urls
                WHERE org_path LIKE "' . str_replace('shopware.php?', '', $data['linkDetails']) . '" AND main=1
            ');

            $result = $query->fetchColumn();

            $data['linkVariantDetails'] = !empty($result) ? '/' . $result . '?number=' . $data['ordernumber'] : $data['linkDetails'];

            $aPicturesVariants = Shopware()->Modules()->Articles()->sGetArticlePictures($data['articleID'], false, 0, $data['ordernumber']);
            if (count($aPicturesVariants)) {
                $data['secondImage'] = $aPicturesVariants[0];
            }

 

Ähh ja. Das ist ja auch total falsch. Es gibt dafür extra Methoden, die dir die Daten des Artikels zur Verfügung stellen. Den Link direkt aus einer DB-Tabelle zu holen, ist eine ganz schlechte Idee. Dadurch erhälst du keine Übersetzungen.

Schau dir mal das StorefrontBundle an. Dort gibt es einen ProductService. Damit kannst du dir die Daten eines Artikels laden. Danach kannst du es mit dem LegacyStructConverter noch für das Template aufbereiten.

Den Code oben kannst du dann gleich mal wegschmeißen :wink:

Viele Grüße

1 „Gefällt mir“

Sag das nicht, wir haben dafür bezahlt  Undecided

Danke für den Hinweis schonmal. Noch eine Frage … ich weiss nun das der Code nicht sauber ist, aber es gibt keine einfache Übergangslösung oder? Das implementieren mit den Productservices wird ja doch etwas zeit in Anspruch nehmen! 

VG 

Niemand noch eine Idee? Danke! 

@simkli‍

Ich präzisiere nochmals … momentan wird ein Link nach dem folgenden Schema erstellt: 

// Detail-Page Link
            $query = Shopware()->Db()->executeQuery('
                SELECT path
                FROM s_core_rewrite_urls
                WHERE org_path LIKE "' . str_replace('shopware.php?', '', $data['linkDetails']) . '" AND main=1
            ');

            $result = $query->fetchColumn();

            $data['linkVariantDetails'] = !empty($result) ? '/' . $result . '?number=' . $data['ordernumber'] : $data['linkDetails'];

also zum Beispiel „/Schuhe/191/Rome?number=SW10191.82“

kann ich den Code so anpassen, dass er nur noch folgendes ausgibt: 

„191/Rome?number=SW10191.82“ 

Dann würde der Link einfah an den bestehenden hinten drangehängt werden und es gäbe keine Probleme mit der Sprache … Wenigstens als Übergangslösung 

Kannst du mal folgende Zeile 

$data['linkVariantDetails'] = !empty($result) ? '/' . $result . '?number=' . $data['ordernumber'] : $data['linkDetails'];

durch diese ersetzen:

$data['linkVariantDetails'] = !empty($result) ? $data['linkDetails']. '?number=' . $data['ordernumber'] : $data['linkDetails'];

Dann sollte der gesamte Link in linkVariantDetails drin stehen.

 

Ich vermute der Code macht folgendes: Falls es sich um eine Variante handelt, dann verlinke direkt auf die Variante. Schöner fände ich, wenn man einfach abfrägt, ob die Artikelnummer nicht der Hauptartikelnummer entspricht und ggf. dann das ?number= anhängt.

Viele Grüße

1 „Gefällt mir“

@simkli‍

Hi Simkli, nochmals danke für deine schnelle Antwort. Auf den ersten Blick hat es auch funktioniert. Leider ging im Anschluss der Konfigurator leider nicht mehr …  mh 

Meinst du das das erzeugen des Links in der Form: 

“191/Rome?number=SW10191.82”

statt

“/Schuhe/191/Rome?number=SW10191.82”

möglich ist? 

 

Danke dir! VG