Nicht lieferbare / Ausverkaufte Artikel nicht als Cross Selling anzeigen

Thema wurde von tannenhof_imshausen, 11. September 2024 erstellt.

  1. tannenhof_imshausen
    tannenhof_imshausen Erfahrener Benutzer
    Registriert seit:
    26. Oktober 2022
    Beiträge:
    119
    Danke erhalten:
    36
    Danke vergeben:
    49
    Artikel mit Lagerbestand 0 werden derzeit als Cross-Selling-Artikel angezeigt, siehe z.B. https://shop.tannenhof-imshausen.de/bio-knoblauch/ljubascha-knoblauch-kg.html

    Wie kann ich erreichen, dass Artikel, die (derzeit) ausverkauft sind, nicht bei den Cross-Selling-Artikeln gelistet werden?

    Hintergrund: Ich verkaufe hauptsächlich verschiedene Knoblauch-Sorten, und wenn eine Sorte ausverkauft ist, dauert es bis zur neuen Ernte im nächsten Jahr, bis sie wieder lieferbar ist. Solange soll diese Sorte nicht als Cross-Selling-Artikel angezeigt werden.

    Am liebsten wäre mir eine Lösung, bei der ich den Lieferstatus angeben kann bzw. anhand der Lieferzeit die Anzeige steuern kann.
    Also z.B. wenn Lieferzeit > 90 Tage dann nicht als Cross-Selling-Artikel anzeigen.
    Lagerbestand 0 reicht nicht, weil die Sorte kann ja auch kurz vor der Ernte stehen.

    Besten Dank!
     
  2. Kai Schoelzke
    Kai Schoelzke Beta-Held
    Registriert seit:
    30. März 2016
    Beiträge:
    4.076
    Danke erhalten:
    646
    Danke vergeben:
    307
  3. Anonymous
    Anonymous Erfahrener Benutzer
    Registriert seit:
    5. Mai 2022
    Beiträge:
    2.335
    Danke erhalten:
    1.019
    Danke vergeben:
    389
    Du erstellst eine Datei product_info_cross_selling.html mit diesem Inhalt und speicherst sie im Cloudshop im Theme html/custom

    Das Javascript sucht nach der angegebenen Lieferzeit. In deinem Shop hast du immer "Lieferbar ab ..." bei den aktuell nicht lieferbaren Artikeln. Das habe ich in dem Code auch so verwendet. Wenn jemand einen anderen Lieferzeittext hat, dann muss dieser im Code an entsprechender Stelle verändert werden.

    Code:
    {load_language_text section="cross_selling"}
    
    {if $module_content != ''}
        {block name="product_info_cross_selling"}
            {block name="product_info_cross_selling_title"}
                <h2>{$txt.heading_text}</h2>
            {/block}
    
            {block name="product_info_cross_selling_list"}
                {$module_content}
            {/block}
    
            <script>
            document.addEventListener("DOMContentLoaded", function() {
                // Alle Produkt-Container auswählen
                var productContainers = document.querySelectorAll('.product-container');
    
                productContainers.forEach(function(container) {
                    // Die Lieferzeit-Information innerhalb des Containers finden
                    var shippingInfo = container.querySelector('.shipping-info-short');
                 
                    if (shippingInfo) {
                        var shippingText = shippingInfo.textContent.trim();
    
                        // Falls die Lieferzeit "Lieferbar ab" ist, den Container ausblenden
                        if (shippingText.includes('Lieferbar ab')) {
                            container.style.display = 'none';
                        }
                    }
                });
            });
            </script>
        {/block}
    {/if}
     
  4. tannenhof_imshausen
    tannenhof_imshausen Erfahrener Benutzer
    Registriert seit:
    26. Oktober 2022
    Beiträge:
    119
    Danke erhalten:
    36
    Danke vergeben:
    49
    So, neulich kam ich endlich dazu, es einzubauen, und es funktioniert hervorragend. Herzlichen Dank @Michaela Klaiber!

    Nun bin ich noch darauf gestoßen, dass bei den Produkten im Bereich "Kunden kauften auch" (intern also_purchased bzw. related_products) leider keine Lieferzeit angezeigt wird und ich deshalb die nicht lieferbaren Produkte dort auch nicht ausblenden kann. :(

    Die Datei GXMainComponents/View/ThemeContentViews/listing/AlsoPurchasedThemeContentView.inc.php ist zuständig, beim Vergleich mit GXMainComponents/View/ThemeContentViews/listing/CrossSellingThemeContentView.inc.php
    konnte ich jedoch nicht herausfinden, wie ich die Lieferzeit in der ersten Datei einbinden kann. Die Erweiterung von $swiperData
    um
    PHP:
     'showProductRibbons'     => $showProductRibbons
    hat funktioniert, was mir beweist, dass ich an der richtigen Stelle bin.

    Irgendwelche Tipps?