Die Funktion loadBasketArticels() in sBasket.php erweitern?

Hallo,

ich versuche die Funktion loadBasketArticels() zu erweitern:

/**
 * @return array
 */
private function loadBasketArticles()
{
    $sql = "
    SELECT
        s_order_basket.*,
        COALESCE (NULLIF(ad.packunit, ''), mad.packunit) AS packunit,
        a.main_detail_id AS mainDetailId,
        ad.id AS articleDetailId,
        ad.minpurchase,
        a.taxID,
        ad.instock AS instock,
        ad.suppliernumber,
        ad.maxpurchase,
        ad.purchasesteps,
        ad.purchaseunit,
        COALESCE (ad.unitID, mad.unitID) AS unitID,
        a.laststock,
        ad.shippingtime,
        ad.releasedate,
        ad.releasedate AS sReleaseDate,
        COALESCE (ad.ean, mad.ean) AS ean,
        ad.stockmin,
        s_order_basket_attributes.attribute1 as ob_attr1,
        s_order_basket_attributes.attribute2 as ob_attr2,
        s_order_basket_attributes.attribute3 as ob_attr3,
        s_order_basket_attributes.attribute4 as ob_attr4,
        s_order_basket_attributes.attribute5 as ob_attr5,
        s_order_basket_attributes.attribute6 as ob_attr6
    FROM s_order_basket
    LEFT JOIN s_articles_details AS ad ON ad.ordernumber = s_order_basket.ordernumber
    LEFT JOIN s_articles a ON (a.id = ad.articleID)
    LEFT JOIN s_articles_details AS mad ON mad.id = a.main_detail_id
    LEFT JOIN s_order_basket_attributes ON s_order_basket.id = s_order_basket_attributes.basketID
    WHERE sessionID=?
    ORDER BY id ASC, datum DESC
    ";
    $sql = $this->eventManager->filter(
        'Shopware_Modules_Basket_GetBasket_FilterSQL',
        $sql,
        ['subject' => $this]
    );
    $getArticles = $this->db->fetchAll($sql, [$this->session->get('sessionId')]);
    return $getArticles;
}

Genauer gesagt möchte ich in der Funktion das Freitextfeld sArticle.attr19, dass in einem Artikel hängt, übergeben.

Wie gehe ich da am besten vor? Da es sich um eine Core-Datei und private Funktion handelt, lässt die sich ja so ohne weiteres nicht überschreiben.

Ich habe überlegt es mit einem JOIN zu machen um das attr19 ins Array zu bekommen.

Könnte mir da ein Event oder Hook weiter helfen? Hat jemand ein ähnliches Problem? Ein Beispiel wäre toll!

1000 Dank!

Die SQL Abfrage kannst du doch über das Shopware_Modules_Basket_GetBasket_FilterSQL event ändern und anpassen?! Wo genau hast du Schwierigkeiten?

Viele Grüße

Moin!

danke für die schnelle Antwort! :wink:

Um den Hintergrund zu erklären. Wir nutzen ein PlugIn, was Attribute aus der loadBasketArticles() ausliest und an eine Schnitstelle übergibt. Beispielsweise die EAN. Die wird auch gezogen. 

Blöderweise ist das PlugIn verschlüsselt und ich kann mir die Logik dort nicht anschauen. Der Entwickler sagte mir aber, dass wenn ich die Funktion um das attr19 erweitern würde ich auch dieses Freitextfeld an die Schnitstelle übergeben kann.

Wie ändere ich das Event  Shopware_Modules_Basket_GetBasket_FilterSQL? Muss ich ein ein zusätzliches PlugIn schreiben?

Danke!

Siehe: Shopware events

Viele Grüße