Produkt Bild ausgrauen - Produkt - Single Page

  • Hallo alle zusammen!,

    ich suche eine Idee oder Lösung wie ich folgendes realisieren könnte.

    Ich möchte direkt auf der Produktseite das Produktbild komplett der Größe lang „ausgrauen“ mit Schrift „Ausverkauft“ wenn eben der Produktbestand / Lagervestand null ist.

    „Also ein sozusagendes Overlay integrieren“?!

    Hat dazu einer einen Tipp!?

    Gruß, talkuvit

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren


  • Ich möchte direkt auf der Produktseite das Produktbild komplett der Größe lang „ausgrauen“ mit Schrift „Ausverkauft“ wenn eben der Produktbestand / Lagervestand null ist.

    [size=14]grayscale(wert) – Graustufe[/SIZE]
    Mit dem grayscale()-Filter kann ein Bild in Graustufen dargestellt werden. Ein Wert von 1 entspricht 100%.

    PHP
    .grayscale {
       -webkit-filter: grayscale(1);
       filter: grayscale(1);
    }

    Wenn man mit PHP und der gd.lib ein Bild in schwarzweisß konvertieren möchte (zum beispiel, weil man für einen Overlay)

    Soll ein Bild in Schwarz/Weiß angezeigt werden, setzte man den Befehl imagefilter($image, IMG_FILTER_GRAYSCALE) ein.
    https://www.php.net/manual/de/function.imagefilter.php

    Der Rest deiner Frage ist typische Lagerverwaltung für die es vermutlich für Woocommerce passende Plugins gibt.

    Mit offenen Augen träumen

  • Die von @r23 vorgeschlagene CSS Klasse könnte man in Abhängigkeit vom Lagerbestand über den Filter 'woocommerce_single_product_image_gallery_classes' hinzufügen.

    WordPress ist "frei" wie in Freiheit es zu nutzen, aber nicht im Sinne von Freibier. Wer also glaubt man bekommt rund um WordPress alles kostenlos, der irrt. Hilfe ist ein Geschenk für das man sich bedankt, dafür gibt es den 'Gefällt mir' Button. Wer das nicht kann und sich selbst nicht zu helfen weiss, muss sich bezahlte Unterstützung suchen.

  • hey ich habe jetzt folgendes zusammen gebaut:


    ist in der function.php:

    PHP
    add_action( 'woocommerce_single_product_image_gallery_classes', function() {
       global $product;
       if ( !$product->is_in_stock() ) {
           echo '<span class="sold-out-overlay-single">AUSVERKAUFT</span>';
       }
    });

    css in der style.css:

    PHP
    .sold-out-overlay-single {
       -webkit-filter: grayscale(1);
       filter: grayscale(1);
    }

    leider erscheint nur eine Weiße Fläche nun und das Bild wird nicht ausgegraut.

  • Ohne Link zur Seite kann man das nicht beurteilen.

    WordPress ist "frei" wie in Freiheit es zu nutzen, aber nicht im Sinne von Freibier. Wer also glaubt man bekommt rund um WordPress alles kostenlos, der irrt. Hilfe ist ein Geschenk für das man sich bedankt, dafür gibt es den 'Gefällt mir' Button. Wer das nicht kann und sich selbst nicht zu helfen weiss, muss sich bezahlte Unterstützung suchen.

  • Und 'woocommerce_single_product_image_gallery_classes' ist ein Filter Hook, kein Action Hook.

    WordPress ist "frei" wie in Freiheit es zu nutzen, aber nicht im Sinne von Freibier. Wer also glaubt man bekommt rund um WordPress alles kostenlos, der irrt. Hilfe ist ein Geschenk für das man sich bedankt, dafür gibt es den 'Gefällt mir' Button. Wer das nicht kann und sich selbst nicht zu helfen weiss, muss sich bezahlte Unterstützung suchen.

  • ich habe mich jetzt nochmal erkundigt und ein script gefunden was in der Pruduct-Single Seite ein OVERLAY erzeugt
    und funktioniert bei einzelnen Produkten.

    PHP
    // Single Produkt Images -  fügt Produktbildern ein Overlay hinzu, wenn dies nicht verfügbar sind, bei den Produktsingle Ansicht
    
    
    add_action( 'self_hook_woocommerce_single_product_images', function() {
       global $product;
       if ( !$product->is_in_stock() ) {
           echo '<span class="sold-out-overlay-single">AUSVERKAUFT</span>';
       }
    });

    Habe ich aber Produktvarianten, wird der OVERLAY nicht mehr dargestellt.

    Weis jemand wie ich das Script abändern muss per Code ?

    gruß, talkuvit

  • self_hook_woocommerce_single_product_images ist kein offizieller WooCommerce Hook. Wahrscheinlich hast Du dafür einen Template Overload durchgeführt. Helfen kann man dabei nur wenn man alle Informationen hat. Bleibe so weit möglich bei den offiziellen Hooks.

    Bilder von Variationen werden per jQuery ausgetauscht. Wird eine Variation ausgewählt, wird der jQuery Trigger 'woocommerce_variation_has_changed' abgefeuert. Hier könntest Du eingreifen.

    Das wäre aber nicht notwendig, wenn Du den von mir empfohlenen Hook richtig verwendet und die CSS Regeln von @r23 angepasst hättest:

    Code
    add_filter( 'woocommerce_single_product_image_gallery_classes', 'mmx_sold_out_image_gray_out' );
    function mmx_sold_out_image_gray_out( $classes ) {
        global $product;
        if ( ! $product->is_in_stock() ) {
            $classes[] = 'grayscale';
        }
        return $classes;
    }
    Code
    .grayscale img {
       -webkit-filter: grayscale(1);
       filter: grayscale(1);
    }

    Bei Variationen funktioniert das aber nur wenn die Lagerverwaltung auf Produktebene stattfindet. Ansonsten muss man einen anderen Ansatz wählen.

    WordPress ist "frei" wie in Freiheit es zu nutzen, aber nicht im Sinne von Freibier. Wer also glaubt man bekommt rund um WordPress alles kostenlos, der irrt. Hilfe ist ein Geschenk für das man sich bedankt, dafür gibt es den 'Gefällt mir' Button. Wer das nicht kann und sich selbst nicht zu helfen weiss, muss sich bezahlte Unterstützung suchen.

  • Danke für deine umfassende Hilfe und Tips.

    Dein Script funktioniert !!!

    Nur sehr Schade das es nicht in der Lagerverwaltung der entsprechenden Varianten funktioniert.
    Somit ist es für eine Vorhaben nicht zu gebrauchen :(

    Was für einen anderen Ansatz muss ich denn wählen um das Script für Lagerbestand der Varianten nutzen zu können?

    ich habe einen Ansatz gefunden mit Varianten - AUSBLENDEN

    PHP
    //grey out out of stock products
    function grey_out_variations_when_out_of_stock( $grey_out, $variation ) {
        if ( ! $variation->is_in_stock() )
            return false;
        return true;
    }

    können wir das

    PHP
    if ( ! $variation->is_in_stock() )


    hört sich doch schon mal zum gebrauchen an oder?

    Einmal editiert, zuletzt von talkuvit (27. Oktober 2019 um 14:45)

  • Den Ansatz hatte ich genannt: der jQuery Trigger. Man braucht also eine weitere Funktion:

    Der Ansatz mit einer anonymen Funktion im WordPress Footer soll die Funktionsweise verdeutlichen. In einer Produktivumgebung sollte man das natürlich so nicht machen! (Hint: Caching Plugins)

    WordPress ist "frei" wie in Freiheit es zu nutzen, aber nicht im Sinne von Freibier. Wer also glaubt man bekommt rund um WordPress alles kostenlos, der irrt. Hilfe ist ein Geschenk für das man sich bedankt, dafür gibt es den 'Gefällt mir' Button. Wer das nicht kann und sich selbst nicht zu helfen weiss, muss sich bezahlte Unterstützung suchen.

  • Bis jetzt haben wir Deinen Wunsch mit dem Schriftzug 'Ausverkauft' noch nicht berücksichtigt. Das könntest Du mit folgender CSS Regel umsetzen:

    WordPress ist "frei" wie in Freiheit es zu nutzen, aber nicht im Sinne von Freibier. Wer also glaubt man bekommt rund um WordPress alles kostenlos, der irrt. Hilfe ist ein Geschenk für das man sich bedankt, dafür gibt es den 'Gefällt mir' Button. Wer das nicht kann und sich selbst nicht zu helfen weiss, muss sich bezahlte Unterstützung suchen.

  • Danke das du einen CSS Code als Beispiel mit in den Beitrag hinzugefügt hast.
    Dann kann ich mir individuell nach meinen Bedürfnissen ja anpassen.

    Schön das wir hier so das Problem (Anfrage) lösen konnten.
    Ich hoffe das Leute die mal das gleich oder ein ähnliches Problem haben diesen Thread nutzen können um zu einer Lösung zu finden.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!