Neu Bilder vom Parent beim Child

3jojojo

Gut bekanntes Mitglied
20. Januar 2016
692
21
Guten Morgen
Hat jemand eine gute Idee wie man die Bilder eines Vaterartikels auch bei einem Child Artikel anzeigen kann?

Hintergrund ist das ich sehr viele Artikel habe wo es unterschiedliche Farben gibt. Der Vaterartikel hat dann dazu ein Emotion Bild (zum Beispiel wie die Jeans jemand trägt) diese würde ich nun gern zusätzlich bei den Kinderartikeln anzeigen.

Mir fehlt aber der Ansatz. Als Artikelbilder direkt angeben will ich die Bilder nicht.
 

david

Administrator
Mitarbeiter
16. Juli 2010
2.301
166
Denke du kommst um eine eigene Plugin-Lösung nicht herum, sofern du die Bilder nicht direkt in der Wawi vererben möchtest.
 

3jojojo

Gut bekanntes Mitglied
20. Januar 2016
692
21
keiner eine einfach quick and dirty idee für die template datei.

Die Child Artikel kennen doch auch die Vater_Funktionsattribute also Artikel->VaterFunktionsAttribute meine ich. Kommt man so nicht auch an das Bild?
 

david

Administrator
Mitarbeiter
16. Juli 2010
2.301
166
Mehr als {$Artikel->kVaterArtikel} und den vererbten Eigenschaften hast du am Kindartikel nicht, daher nicht allein über Smarty tpl lösbar.
 

FPrüfer

Moderator
Mitarbeiter
19. Februar 2016
1.567
374
Halle
Hallo,
eine Lösung per Plugin ist sicherlich der korrekteste Weg. Unser Shop kann aber eine ganze Menge und somit gibt es auch eine Lösung die komplett auf Javascript basiert und damit einfach insTemplate integriert werden kann.
Der Ansatz dabei ist, den Artikelcontent des Vaterartikels beim Child per AJAX nachzuladen, dort die Bildinformationen zu extrahieren und diese in die Gallery des aktuellen Child-Artikels einzufügen. Das klingt kompliziert, sind aber nur ein paar Zeilen Code. Das einzige Problem ist hier der Overhead, der durch das Nachladen der Vater-Artikeldaten entsteht.
In der custom.js des eigenen Child-Templates könnte man das so realisieren:
JavaScript:
(function($) {
    function loadParentImage2Gallery() {
        // Parameter (Parent- und Child-ID) aus dem Produktformular holen
        var io   = $.evo.io();
        var args = io.getFormValues('buy_form');

        if (args.a && args.VariKindArtikel && !document.parentImagePushed) {
            // Flag für das Laden des Parent-Image setzen...
            document.parentImagePushed = true;
            // ...und Parent-Content per AJAX holen
            var url  = '/navi.php?a=' + args.a;
            $.ajax(url, {data: 'isAjax'}).done(function(html) {
                // Bilddaten aus dem Content extrahieren...
                var $images = $(html).find('#gallery a[itemprop="image"] img');

                if ($images.length) {
                    // ...und an die Einträge der aktuellen Gallery anhängen
                    var objImage = $images.data('list');
                    var imgItems = $.evo.article().gallery.getStack();
                    imgItems.push(objImage);
                    $.evo.article().gallery.setItems(imgItems);
                    $.evo.article().gallery.render();
                }
            })
        }
    }

    function initParentImage2Gallery() {
        // Wenn eine neue Variante gewählt wird, dann muss das Flag für das Parent-Image zurückgesetzt werden
        $('.variations .variation').click(function() {
            document.parentImagePushed = false;
        });
        $('.variations .form-control').change(function() {
            document.parentImagePushed = false;
        });
    }

    $(document).ready(function() {
        // Einfügen des Parent-Image beim direkten Aufruf des Child-Artikels...
        initParentImage2Gallery();
        loadParentImage2Gallery();
    });

    $(document).on('evo:contentLoaded', function() {
        // ...und auch beim Nachladen per AJAX
        initParentImage2Gallery();
        loadParentImage2Gallery();
    });
})(jQuery);
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
4.880
867
Berlin
Aber wie er schon sagt, über ein Plugin wäre es besser, du hast ja schon von mir das Plugin für die Templateunterstützung, da könnte man das gut hinzufügen denke ich.
 

m.preisner

Aktives Mitglied
13. Februar 2017
26
1
Was ich mich hierbei frage: Wieso muss denn zwingend, beim Wählen einer Variation, das Child geladen werden? Wäre eine Übergabe der Variable ( ID Child o.ä. ) nicht ausreichend um es in den Warenkorb zu legen?

Vorallem weil ich auch die Artikelbeschreibungen für die einzelnen Varkombis anlegen, speichern und laden muss, obwohl die, bei mir, immer identisch sind.

Gibts hierzu eine Lösung?
 
Zuletzt bearbeitet:

laweb

Aktives Mitglied
10. Februar 2017
6
0
@FPrüfer
Vielen Dank für den Code. Funktioniert super. Das einizige Problem ist, dass bei Child Articles die kein Bild haben noch diese Platzhalterbild (Kamera auf grauem Background) haben. Kennst du eine Lösung um das auszublenden? Denn Leider wird dieser Platzhalter dann auch im Warenkorb und ähnlichen Sachen verwendet. Danke!

Marco
 

Anhänge

  • child-articles.JPG
    child-articles.JPG
    12,9 KB · Aufrufe: 20

FPrüfer

Moderator
Mitarbeiter
19. Februar 2016
1.567
374
Halle
Da müsste man jetzt aus objImage in einer Schleife noch die Elemente rausfiltern, die als src einen Verweis auf das Platzhalterbiild (/gfx/keinBild.gif) haben.
Die Anzeige des Platzhalters im Warenkorb wirst du damit aber nicht verhindern, da bei Variationskombinationen ja jedes Child ein eigener Artikel ist.
 

snPerranporth

Aktives Mitglied
6. März 2017
25
25
Hallo, auch ich wünsche mir, dass die Bilder des Vaterartikels beim Child nachgeladen werden.

Ich habe den obigen Code in die Custom des Child Templates per Copy Paste eingefügt. Aber leider tut sich bei mir nichts. Was mache ich falsch?
 
Zuletzt bearbeitet:

snPerranporth

Aktives Mitglied
6. März 2017
25
25
Hallo, Danke, dass du dich mit meiner Rückfrage beschäftigst.

Die custom wird geladen. Die Ausgabe lautet wie folgt:
JavaScript:
(function($) {
    function loadParentImage2Gallery() {
        var io = $.evo.io();
        var args = io.getFormValues('buy_form');
        if (args.a && args.VariKindArtikel && !document.parentImagePushed) {
            document.parentImagePushed = true;
            var url = '/navi.php?a=' + args.a;
            $.ajax(url, {
                data: 'isAjax'
            }).done(function(html) {
                var $images = $(html).find('#gallery a[itemprop="image"] img');
                if ($images.length) {
                    var objImage = $images.data('list');
                    var imgItems = $.evo.article().gallery.getStack();
                    imgItems.push(objImage);
                    $.evo.article().gallery.setItems(imgItems);
                    $.evo.article().gallery.render();
                }
            })
        }
    }
    function initParentImage2Gallery() {
        $('.variations .variation').click(function() {
            document.parentImagePushed = false;
        });
        $('.variations .form-control').change(function() {
            document.parentImagePushed = false;
        });
    }
    $(document).ready(function() {
        console.log("ParentImages2Gallery wird ausgefuehrt");
        initParentImage2Gallery();
        loadParentImage2Gallery();
    });
    $(document).on('evo:contentLoaded', function() {
        initParentImage2Gallery();
        loadParentImage2Gallery();
    });
}
)(jQuery);

Oder gilt der Code nur für das Hauptbild? Das wird angezeigt, ist aber auch im Kind hinterlegt.
 

snPerranporth

Aktives Mitglied
6. März 2017
25
25
Weil ich mich hier nicht blamieren wollte, habe ich mein Anliegen per PN geklärt.

Da ich ein Template nutze, musste der Code leicht angepasst werden. Mit folgender Änderung klappt der Code von 2017 (!) dann aber auch bei mir. :)
Zitat von FPrüfer:
PHP:
PHP:
...
// Bilddaten aus dem Content extrahieren...
var $images = $(html).find('#gallery a img');
...


Und für diejenigen, die wie ich dem Child lediglich ein Hauptbild hinterlegen, welches mit dem Parent identisch ist und daher nicht nachgeladen werden soll, der ändere wie folgt:

Zitat von FPrüfer:
Wenn das "Hauptbild" einfach nur das erste Bild ist, dann sollte es reichen, die Schleife:
JavaScript:
for (var i = 0; i < $images.length; i++) {
    var objImage = $($images[i]).data('list');
    imgItems.push(objImage);
}
statt von 0 einfach von 1 laufen zu lassen. Dann werden immer nur alle Bilder ab dem Zweiten übernommen



So kann man das ganze also noch etwas anpassen. Vielleicht hilft es jemandem.
Vielen lieben Dank an FPrüfer für die tolle Hilfe und die Geduld mit mir als Nicht-Programmierer! ;)
 
Ähnliche Themen
Titel Forum Antworten Datum
Neu Bilder Import bricht ab JTL-Ameise - Fehler und Bugs 1
Neu Artikel Beschreibung Bilder responsive gestalten ? Allgemeine Fragen zu JTL-Shop 8
Gelöst 5.1.0 - VarKombi Bilder werden nicht angezeigt JTL-Shop - Fehler und Bugs 1
Neu Variantions Kombination - Bilder werden im Shop nicht angezeigt JTL-Wawi - Ideen, Lob und Kritik 11
Neu Wie ersetze ich Bilder, sodass sie auch angezeigt werden? Allgemeine Fragen zu JTL-Shop 3
Neu Bilder in Signatur werden nicht überall angezeigt Servicedesk (Beta) 4
Neu Massenhafte Zuweisung Bilder zu neuem Shop Installation von JTL-Wawi 3
Neu Google Page Speed Insights - Bilder in Next-Gen-Formaten anzeigen User helfen Usern 0
Neu Fehler beim Onlineshop-Abgleich (Bilder Synchronisation) Onlineshop-Anbindung 0
Neu Bilder in SW5 verschwinden nach Anlegen von VarKombis Shopware-Connector 2
Neu OPC - importierte Bilder in Blueprints haben weißen Hintergrund JTL-Shop - Fehler und Bugs 0
Neu Bilder unscharf Allgemeine Fragen zu JTL-Shop 0
Migration auf Shop 5 -> Preview-Bilder der Blogs (News) fehlen Upgrade JTL-Shop4 auf JTL-Shop5 3
Neu JTL Shop 5 WebP Bilder werden nicht erzeugt Betrieb / Pflege von JTL-Shop 0
Neu Upload Bilder nicht mehr möglich Onlineshop-Anbindung 3
Neu Bilder werden beim Abgleich gelöscht seit 6 Tagen WooCommerce-Connector 0
Neu OPC "Bilder-Slider" fehlerhafter Pfad JTL-Shop - Fehler und Bugs 1
Neu JTL Shop 5 - "normaler Slider" vs. "Bilder-Slider" im OnPage Composer Allgemeine Fragen zu JTL-Shop 1
Neu SW5 - Nach Connector Update - Bilder werden Artikel nicht zugewiesen Shopware-Connector 19
Neu Shop5 NOVA - Galerieansicht Bilder vergrößern Templates für JTL-Shop 2
Neu Bilder von SalesOrderPosition Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 0
Neu Bilder auf Woocommerce werden nicht dargestellt. WooCommerce-Connector 2
Neu Bilder werden von Amazon nicht richtig erkannt. Amazon-Anbindung - Fehler und Bugs 0
Neu Nach Update auf 1.5.46.4 Bilder Sync-Problem mit Woocommerce WooCommerce-Connector 3
Neu Shop zeigt keine Bilder an WooCommerce-Connector 7
Neu Variationsartikel Bilder lassen sich nicht ersetzen User helfen Usern - Fragen zu JTL-Wawi 2
Bilder und Text über Link laden Einrichtung JTL-Shop5 3
Neu Bilder werden mit falschem Namen von JTL zu Gambio übertragen Gambio-Connector 2
Neu Bilder werden von Gambio nicht an JTL WAWI übertragen Gambio-Connector 1
Bilder in News und Header löschen - Fehler noch existent Einrichtung JTL-Shop5 3
Neu Bilder von Dropbox in Wawi importieren JTL-Ameise - Fehler und Bugs 2
Neu Ameise - Nach Import Konfigurationsartikeln keine Bilder User helfen Usern - Fragen zu JTL-Wawi 0
Neu Bilder der Var. Kombis werden nicht übertragen? Shopware-Connector 2
Neu Bilder müssen immer wieder neu generiert werden Allgemeine Fragen zu JTL-Shop 1
Neu Import einer CSV datei vom Dropshipper Schnittstellen Import / Export 1
Neu Registerkarten vom OnPage Composer zentrieren Templates für JTL-Shop 2
Neu Stücklisten Artikel taucht 2 oder 3x im Auftrag auf, obwohl nur 1x vom Kunden bestellt JTL-Wawi - Fehler und Bugs 20
Neu Automatischer Upload vom JTL FTP Server Allgemeine Fragen zu JTL-Shop 0
Neu Wie kann ich Bestellungen vom 16.07 - 22.07 nochmals in die Wawi importieren Shopware-Connector 4
Neu JTL bekommt keine Attribute vom Woocommerce WooCommerce-Connector 0
Neu Pickliste erstellen am Tagesnde für umlagerung vom Lager in Ladenlokal User helfen Usern - Fragen zu JTL-Wawi 2
Neu Anmeldung Wawi nicht möglich Unbehandelte Ausnahme #22DB60A428487D2C vom Typ System.ArgumentNullException in Int32 FindEntry(TKey) System.ArgumentNull User helfen Usern - Fragen zu JTL-Wawi 2
In Diskussion Lieferant vom Vaterartikel übernehmen JTL-Workflows - Ideen, Lob und Kritik 4
Neu Vielleicht kann mich ja jemand vom Schlauch zerren, auf dem ich stehe....Wawi 1.5.45.1 Formulare - Mahnungsvorlage speichern JTL-Wawi - Fehler und Bugs 0
Neu Bestand vom Standardlager abzüglich der zu packenden Menge auf Packliste Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 0
Neu ForceSSL nur vom WAN (nicht LAN) User helfen Usern - Fragen zu JTL-Wawi 0
Neu PHP 8 / PayPal Plugin / Fatal error: Cannot use "parent" when current class scope has no parent JTL-Shop - Fehler und Bugs 2

Ähnliche Themen