Neu Bilder vom Parent beim Child

3jojojo

Gut bekanntes Mitglied
20. Januar 2016
693
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.303
167
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
693
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.303
167
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.652
408
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.897
874
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.652
408
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-Slider auf Startseite JTL Shop 5 Punktnavigation / Pfeilnavigation Betrieb / Pflege von JTL-Shop 0
In Bearbeitung Bilder synchronisation Allgemeine Fragen zu JTL-POS 1
Beantwortet Workflow - Varko Kind-Artikel mit Stücklistenzuordnung ohne Bilder in weitere Kategorie verschieben JTL-Workflows - Ideen, Lob und Kritik 3
Neu Kann man in JTL 5 verlinkte Shopable-Bilder einstellen? Allgemeine Fragen zu JTL-Shop 0
Neu JTL-WaWi - Variationen mit eigenen Bilder Beschreibungen ? User helfen Usern - Fragen zu JTL-Wawi 12
Neu Kategorie Bilder Drucken List & Label auf Preisliste Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 0
Google-PageSpeed meckert wegen PNG-Bilder obwohl WEBP-Bilder aktiviert sind Einrichtung JTL-Shop5 0
Neu Einzelne Bilder nicht ersetzen User helfen Usern - Fragen zu JTL-Wawi 0
Neu Shop 5: AdminPanel Fehlerbehebung Bilder: Wo kann ich nachschauen welche Bilder betroffen sind????????????? Allgemeine Fragen zu JTL-Shop 2
Bilder auf eigenen Seiten werden nicht mehr angezeigt Upgrade JTL-Shop4 auf JTL-Shop5 0
Neu Google Shopping Feed - Bilder festlegen User helfen Usern - Fragen zu JTL-Wawi 0
Neu Ebay Bilder und Beschreibungen werden im Browser nicht angezeigt. eBay-Anbindung - Fehler und Bugs 1
Neu Zusätzliche Bilder importieren User helfen Usern - Fragen zu JTL-Wawi 3
Neu Shopware 5 Bilder werden nicht aktualisiert bzw. falsche zugeordnet Shopware-Connector 2
Neu smartyvariable aus Artikel Bilder cPfadgross in custom.js verwenden? Technische Fragen zu Plugins und Templates 1
Neu Wie kann ich webp Bilder hinterlegen? User helfen Usern - Fragen zu JTL-Wawi 2
JTL Shop 5: Listenansicht ohne Bilder möglich? Einrichtung JTL-Shop5 0
OPC (onpage composer) fehlerhaftes Pfad für hochgeladene Bilder Einrichtung JTL-Shop5 1
Gelöst Bilder aus Auktionsvorlage werden willkürlich nicht übertragen eBay-Anbindung - Fehler und Bugs 15
Leere webp Bilder Einrichtung JTL-Shop5 1
Neu Kategorie Bilder Gambio-Connector 0
Neu Artikelupload - es fehlen immer wieder Bilder Shopify-Connector 4
Neu mehr als 12 Bilder im Evo Template möglich? eBay-Designvorlagen - Ideen, Lob und Kritik 1
Neu Wie Bilder und Formatierungen in Amazon-Artikelbeschreibungen integrieren Amazon-Lister - Ideen, Lob und Kritik 2
Neu Artikel ohne Bilder finden User helfen Usern - Fragen zu JTL-Wawi 2
Neu Bilder Übersicht wird nicht geladen JTL-Shop - Fehler und Bugs 7
Neu Einzelne Bilder für Plattform deaktivieren Schnittstellen Import / Export 0
Neu Zugriff auf versendete Emails vom System? Betrieb / Pflege von JTL-Shop 12
Neu Sale Sticker / Ribbon - Berechnung vom UVP Allgemeine Fragen zu JTL-Shop 2
In Bearbeitung [LÖSUNG Android 11] TSE Modul bei Neustart vom Tablet Dauerschleife beim Verbinden. JTL-POS - Fehler und Bugs 3
Neu Automatische, also permanente Vererbung vom Vater auf die Kindartikel User helfen Usern - Fragen zu JTL-Wawi 2
Beantwortet Picken vom Wareneingang erlauben in der 1.6 JTL-WMS / JTL-Packtisch+ - Ideen, Lob und Kritik 2
Verwiesen an Support 3400 Fehler im Logbuch vom Shop 5 JTL-Shop - Fehler und Bugs 2
Neu Fehlermeldungen vom Versanddienstleister via Workflow als Vorlage ausdruckbar? JTL-ShippingLabels - Ideen, Lob und Kritik 0
Neu Kundengruppen werden vom Connector nicht mehr in die Wawi übertragen JTL-Wawi - Fehler und Bugs 0
Neu Artikel vom Shop auf meiner Webseite anteasern Allgemeine Fragen zu JTL-Shop 3
Neu Youtube Videos auf Startseite vom Onlineshop sind nicht verfügbar JTL-Shop - Fehler und Bugs 2
In Diskussion Erweiterte Eigenschaft für ASIN reinholen vom Amazon JTL-Workflows - Ideen, Lob und Kritik 0

Ähnliche Themen