Veröffentlicht am

Woocommerce – Variationen im Warenkorb ändern

Im Zuge der Erweiterung eines Shops wünschte der Kunde auch, dass man variable Produkte direkt vom Warenkorb aus ändern kann. Sprich, dass die Variantenauswahl nicht nur auf der Produktdetailseite funktioniert, sondern auch im Warenkorb.

Hier gibt es nun jede Menge Plugins, die aufgrund strenger Restriktionen auf Kundenseite aber von vornherein aus dem Rennen waren.

Lange Rede, kurzer Sinn, der Warenkorb musste über die Session manipuliert werden. Hierfür wählte ich den Hook:

woocommerce_cart_loaded_from_session

Innerhalb der Funktion weise ich das gesamte Cart-Array einem leeren Array zu und zwar Item für Item. Die anzupassenden Werte ändere ich innerhalb dieses Loops und speichere das Array dann zurück.

add_action('woocommerce_cart_loaded_from_session', 'update_variations');
function update_variations() {
//array to collect updated items
$new_cart_items = [];

//loop through current cart item and reassign them to the new array
    foreach (WC()->cart->get_cart() as $cart_item_key => $cart_item) {      
      $new_cart_items[$cart_item_key] = WC()->cart->cart_contents[$cart_item_key];

      // add the new variation to the product (i get all values from session, where i saved them step before)
      $new_cart_items[$cart_item_key]['variation_id'] = WC()->session->get( 'variation_id' ); 
      $new_cart_items[$cart_item_key]['variation'][WC()->session->get( 'variation')] = WC()->session->get( 'variation_value' );    
     
     // IMPORTANT: empty the data_hash to avoid product to be deleted 
     $new_cart_items[$cart_item_key]['data_hash'] = "";
    }
}
Und wer noch einen Denkansatz braucht, wie man das Formular für die Variationen erstellt, der sollte daran denken, dass alle Variationen custom post types sind und das Produkt bzw. die Produkt-ID als post_parent enthalten.
Veröffentlicht am

Mac Mini (late 2012) von externer SSD starten

Ich habe mich hinreißen lassen und, weil es eben ein Schnäppchen war, einen gebrauchten Mac Mini (i5, 2,5 GHz, 8 MB RAM, 500 GB HDD) gekauft.
Nach all den Jahren mit SSD war es doch ein kleiner Schock, wie sich die langsame HDD auf mein Gemüt auswirkt. Vor allem das erste Laden von Programmen glich einer emotionalen Folter.

Nachdem ich einen einzigen passenden Erfahrungsbericht im Netz fand, kaufte ich kurzerhand eine externe SSD, formatierte sie entsprechend mit dem Journaled File System und installierte das Mojave darauf.
Alles in der Hoffnung, dass das Gerät danach einen Geschwindigkeitsrekord – naja – wenigstens versucht.

Klar hätte man auch eine interne SSD verwenden können, nur war mir der Umbau selbst zu heikel, ganz zu schweigen von dem fehlenden Werkzeug. Und der Einbau bei Drittanbietern kostete mir schlicht zuviel Geld. (SSD + Einbau waren meist knapp unter 200 €)

Und?

Und schon beim Starten merkt man, wie unfassbar viel diese SSD bringt. Wohlgemerkt extern über USB 3.0 angeschlossen, d.h. sie entfaltet ihre volle Wirkung nicht mal, stellt mich aber 100% zufrieden.
Ich hab derzeit nur das MacBook Air 2016 zum Vergleich, aber höchstens in Nuancen ist das etwas fixer als der Mac Mini. Und der hat letztlich nur 450,00 € gekostet – inkl. der externen SSD.

Veröffentlicht am

Eventbinding in Angular – Erklärung

Um im Template auf Events wie z.B click() oder mouseover() reagieren zu können, muss man sich mit dem Eventbinding auseinandersetzen, also dem Binden von Events an eine Komponente.
Ich selbst hatte beim Lernen von Angular oft Probleme, mir die Funktionsweisen genau vorzustellen, zumal ich vorher auf eine völlig andere Weise entwickelte und auch der Workflow erst in Fleisch und Blut übergehen musste.
Tatsächlich musste ich lernen „in Angular zu denken“.
Eventbinding in Angular – Erklärung weiterlesen

Veröffentlicht am

Angular und das Binding

Wenn man aus der „einfachen“ Javascriptwelt kommt, dann kommen Begriffe, die bei Angular sehr wichtig sind, eher selten vor. Damit diese Begriffe schnell in Fleisch und Blut übergehen, möchte ich hier immer mal wieder solche aufführen, die mir anfangs immer längeres Nachdenken abtrotzen und nun wie selbstverständlich meinen Entwickleralltag bereichern.
Angular und das Binding weiterlesen

Veröffentlicht am

Angular: ERROR Error: Uncaught (in promise): Error: StaticInjectorError […]StaticInjectorError[…] NullInjectorError: No provider for String!

Nachdem über einen Service ein Listenabruf von WP Posts über den HttpClient eingerichtet wurde, tauchte die im Titel angerissen Fehlermeldung auf, wobei der entscheidenen Hinweis jener ist:

Angular: ERROR Error: Uncaught (in promise): Error: StaticInjectorError […]StaticInjectorError[…] NullInjectorError: No provider for String! weiterlesen

Veröffentlicht am

Plugin für den Export von Jobs in die Stellenbörse der Arbeitsagentur

Für einen Kunden aus dem Bereich Recruiting habe ich, gemeinsam mit der Agentur Format78, ein Plugin umgesetzt, welches alle relevanten Daten eines Jobs der Stellenbörse der Arbeitsagentur erfasst, speichert und – in einer Schleife durch alle betroffenen Jobs – eine XML-Datei erstellt, die gegen das entsprechende HRBAXML Schema validiert ist.
Plugin für den Export von Jobs in die Stellenbörse der Arbeitsagentur weiterlesen