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!
Im Standard gibt es da nichts, du kannst aber Mal z.B. @Dominik Späte oder @HolgerNils (xycons.de) kontaktieren, die können dir bestimmt was bauen.
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}
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?