Verschiedene Produkt-Layouts für WooCommerce?

| |

Das Problem:

Es wurde ein Shop für einen Kunden geplant. Der Einsatz von WooCommerce wurde dafür vorgesehen. Allerdings benötigen wir für eine bestimmte Shop Kategorie ein abweichendes Produktlayout als für die anderen Kategorien.

Standardmäßig kann man aber kein anderes Layout für eine bestimmte Kategorie verwenden.

Aus diesem Grund wurde also eine Lösung benötigt, die für eine vorher definierte Kategorie ein anderes Layout verwendet, als das Default.

Eigene Templatefiles benutzen

Bevor definiert werden kann, welches Template geladen werden soll, muss dieses auch erst mal vorhanden sein. Das Bearbeiten von Corefiles ist nicht update sicher, deswegen kopiert man das Template das man umschreiben möchte in seinen eigenen Themepfad und behält dabei die Filestruktur bei.

Beispiel:

Aus:

/wp-content/plugins/woocommerce/templates/single-product.php

wird:

/wp-content/themes/yourtheme/woocommerce/single-product.php

Nachdem alle benötigten Dateien update sicher in das eigene Template Verzeichnis kopiert worden sind. Kann man die single-product.php auch ohne größere Schäden zu verursachen bearbeiten.

Modifizieren der single.php

Standardmäßig findet sich folgender Codeschnipsel in der single-product.php in Zeile 35, wenn die Datei nicht weiter bearbeitet wurde:

<?php while ( have_posts() ) : the_post(); ?>
<?php wc_get_template_part( 'content', 'single-product' ); ?>
<?php endwhile; // end of the loop. ?>

Hier befindet sich die Anweisung den Template Part „single-product“ auszugeben, solange Posts vorhanden sind. Alles klar soweit. Hier ist also auch genau der Punkt, an dem ich ansetze, um eine andere Template Datei zu laden.

if ( has_term( 'quads', 'product_cat' ) ) {
    woocommerce_get_template_part( 'content', 'single-product-quads' );
} else {
    woocommerce_get_template_part( 'content', 'single-product' );
}

Prüfen der Funktionalität

Wenn man jetzt prüft ob das oben genannte Vorgehen funktioniert, sieht man folgendes:

Das Template wurde geladen, aber es wird nichts angezeigt. Der Grund, der dahinter steckt, ist relativ simpel.
Die Zeile woocommerce_get_template_part( ‚content‘, ’single-product-quads‘ ); definiert, dass die Datei content-single-product-quads.php geladen werden soll. Die ist aber schlichtweg einfach noch nicht vorhanden.

Deswegen wird diese Datei als Erstes im Woocommerce Verzeichnis des eigenen Templates erstellt. Ich habe dazu die content-single-product.php kopiert und umbenannt, da ich auf dieser Struktur aufbauen möchte. Lädt man die Datei dann auf den Server, sieht die vorläufige Anzeige so aus:

Benjamin

Ich arbeite mit Computern seit ich vier Jahre alt bin. Angefangen mit den C64 über den Amiga, zum PC10 und weitergemacht beim x486er bis zum neumodischen PC..SEO und Onlinemarketing sind nunmehr seit über 10 Jahren meine Passion. Immer wenn ich bei meiner Arbeit auf eine “Bremse” stoße und ich erst hart recherchieren muss, notiere ich mir die Workflows und denke mir, das könnte auch nützlich für Dich sein. Aus diesem Grund gibt es diesen Blog.

Meld Dich doch einfach bei mir

Vorheriger

Vier MySQL Querys, die dir das Leben leichter machen

Progressive Web App Entwicklung [Teil 1]

Nächster