Neu Bilder vom Parent beim Child

3jojojo

Sehr aktives Mitglied
20. Januar 2016
765
34
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.309
169
Denke du kommst um eine eigene Plugin-Lösung nicht herum, sofern du die Bilder nicht direkt in der Wawi vererben möchtest.
 

3jojojo

Sehr aktives Mitglied
20. Januar 2016
765
34
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.309
169
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.878
518
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
6.638
1.582
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
27
2
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: 22

FPrüfer

Moderator
Mitarbeiter
19. Februar 2016
1.878
518
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
31
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
31
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
31
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 beim Umstieg von unicorn auf SCX Bilder aktivieren Otto.de - Anbindung (SCX) 0
Neu Kategorie Bilder werden im Webshop nicht angezeigt User helfen Usern - Fragen zu JTL-Wawi 0
Neu Bilder von Merkmalen werden nicht angezeigt Gelöste Themen in diesem Bereich 5
Versuch Bilder aus Ebay für Kaufland zu übernehmen JTL-Wawi 1.8 0
Bilder Upload und Fehlermeldung WooCommerce-Connector 0
Neu Bilder werden Falsch im Shop angezeigt. WooCommerce-Connector 0
Neu Bilder öffnen sich in mobiler Version fehlerhaft. Allgemeine Fragen zu JTL-Shop 0
Neu Bilder für Kindartikel Gelöste Themen in diesem Bereich 4
Neu Bilder unter "Mehr dieser Waregruppe" und "Kunden, die diesen Artikel gekauft haben, kauften auch" fehlen eBay-Designvorlagen - Fehler und Bugs 0
Neu Amazon Lister übergibt nur das Hauptbild an Amazon, weiter Bilder werden nicht übertragen Amazon-Lister - Fehler und Bugs 0
Neu Wie kann ich Alt-Texte für Bilder an Shopify senden? Shopify-Connector 2
Neu Connector überträgt keine Bilder Shopify-Connector 1
Neu webp-Bilder werden nicht mehr generiert JTL-Shop - Fehler und Bugs 0
Neu Einstellung: "Bilder des Vaterartikels un der folgenden Variationswerte übernehmen" und der Shopware Server "explodiert" Shopware-Connector 10
Neu Bilder werden teilweise in verschiedenen Browser falsch dargestellt Gelöste Themen in diesem Bereich 3
Neu Bilder in Chrome zerquetscht angezeigt.. Gelöste Themen in diesem Bereich 16
Neu Neuer Verkauskanal: Bilder inaktiv User helfen Usern - Fragen zu JTL-Wawi 2
Neu Shop Bilder-Anzeige in Firefox fehlerhaft Allgemeine Fragen zu JTL-Shop 0
Neu Shop Bilder-Anzeige in Firefox fehlerhaft Allgemeine Fragen zu JTL-Shop 6
Neu Plattform als Darstellungsbedingungen für Bilder oder Text Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 0
Custom css für Galerie-Bilder Einrichtung JTL-Shop5 3
Alle Bilder eines Ausgabeweges löschen JTL-Wawi 1.7 0
Neu JTL-POS installation vom Playstore Einrichtung / Updates von JTL-POS 2
Neu JTL-POS installation vom Playstore Installation von JTL-Wawi 0
Neu Varianten vom Vaterartikel berechnen lassen User helfen Usern - Fragen zu JTL-Wawi 3
Fehlermeldung nach Speichern vom Auftrag in der Wawi JTL-Wawi 1.6 5
Neu Strukturierte Daten für VarKombis/Varianten nach Google Ankündigung vom 20.02.2024 JTL-Shop - Ideen, Lob und Kritik 0
Wawi 1.8.11.2 startet nicht mehr nach Win 11 Update vom 14.02. ??? JTL-Wawi 1.8 13
Neu Unbehandelte Ausnahme #959190594F6282F vom Typ System WooCommerce-Connector 1
Neu Nach Installation eines neuen SQL Servers klappt die Verbindung vom Benutzer-PC zum Server-PC nicht mehr. Installation von JTL-Wawi 5
Neu Kinderartikel per Ameise vom Vater lösen Arbeitsabläufe in JTL-Wawi 6
Neu PAngV (PreisAngabenVerordnung) vom 28.05.2022 mit JTL-Wawi und JTL-Shop - bzgl. "Läuft JTL Wawi stabil?" Smalltalk 1
Neu Kein Update vom Sendungsstatus JTL-Track&Trace - Ideen, Lob und Kritik 1
Neu keine Zahlung vom Kunden -- Auftrag stornieren oder löschen? Gelöste Themen in diesem Bereich 3
Neu Amazon -> EU-Lieferung mit UstID vom Kunden Amazon-Anbindung - Fehler und Bugs 0
Neu JTL WaWi hosting vom ecomdata is offline! User helfen Usern - Fragen zu JTL-Wawi 2
Neu FBA vom Lieferanten direkt an Amazon- Bestellung / Umlagerung Arbeitsabläufe in JTL-Wawi 0
Neu Fulfillment Dienstleistung direkt vom Kartonagenhersteller Smartbox Pro Dienstleistung, Jobs und Ähnliches 1
Neu Dropshipping inkl. Anbindung an JTL WAWI direkt vom Hersteller - 700 Artikel Versandverpackungen Dienstleistung, Jobs und Ähnliches 0
Neu Amazon-Artikel nachträglich als Parent zusammenfassen? User helfen Usern - Fragen zu JTL-Wawi 9

Ähnliche Themen