geschrieben von Ralf Lieser
am 6. April 2017 - 12:54

Mit gewaltigem Spektakel begann der zweite Tag der Imagine 2017. Jamie Clarke, CEO von, reist das Publikum mit sich. Mark Lavelle, CEO von Magento, nutzt das Momentum auf der Bühne und zeigt die Errungenschaften von Magento in den letzten Monaten. Was war noch?   Imagine 2017 – die Keynote in Bildern   “ order_by=“sortorder“

The post Magento Imagine 2017 – spannende Eindrücke vom 2. Tag appeared first on Regalsprecher.

geschrieben von Fabian Schmengler
am 6. April 2017 - 9:11

With PHP 7 you can choose to write much more type-safe code than before, thanks to scalar type hints and return types.

function repeat(string $text, int $times) : string;

But what about arrays? There’s still only the generic “array” type hint, you cannot specify what’s in the array. For the IDE, you can add PhpDoc comments:

/** * @return User[] */ function allUsers() : array;

Now IDEs like PhpStorm can help with code completion for items in the returned array. But we cannot benefit from any checks at runtime, like with real type hints.

For arguments, there is a partial workaround, using variadic arguments. Take the following function

/** * @param User[] $users */ function deleteUsers(array $users);

With variadic arguments we can rewrite it to

function deleteUsers(User ...$users);

Usage also changes, to deleteUsers(...$users); In this call, the argument $users will be “unpacked” into single…

geschrieben von Fabian Schmengler
am 6. April 2017 - 9:11

Mit PHP 7 kann man sich dazu entscheiden, typsichereren Code zu schreiben als zuvor, dank skalaren Type Hints und Rückgabetypen.

function repeat(string $text, int $times) : string;

Aber was ist mit Arrays? Es gibt immer noch nur den generischen “array” Type Hint, man kann nicht spezifizieren was das Array enthält. Für die IDE kann man PhpDoc Kommentare hinzufügen:

/** * @return User[] */ function allUsers() : array;

Jetzt können IDEs wie PhpStorm mit Code-Vervollständigung für Elemente des zurückgegebenen Arrays helfen. Aber wir können nicht von Prüfungen zur Laufzeit profitieren, wie mit echten Type Hints.

Für Argumente gibt es einen partiellen Workaround mit variadischen Argumenten. Nehmen wir die folgende Funktion:

/** * @param User[] $users */ function deleteUsers(array $users);

Mit variadischen Argumenten können wir sie umschreiben zu:

function deleteUsers(User ...$users);

Die Benutzung ändert sich auch, zu…

geschrieben von Ralf Lieser
am 5. April 2017 - 13:48

In eigener Sache:   Auf der Magento Imagine werden jedes Jahr die erfolgreichsten und innovativsten Projekte vorgestellt und in verschiedenen Kategorien ausgezeichnet. Darunter in diesem Jahr auch netz98 und die B2B-Plattform für LIEBHERR. Mit der dem Magento B2B Innovation Award wird Liebherr für seine innovative Service Plattform geehrt, die netz98 konzipiert, designt und umgesetzt hat.   Mit

The post Magento B2B Innovation Award appeared first on Regalsprecher.

geschrieben von Katarina Dijakovic
am 5. April 2017 - 12:33

As designers, we’re often faced with a lot of questions about our process. We never just dive into design and bask in the glory of amazing typography and brilliant color schemes because without the phases that precede it – it just wouldn’t even begin to be possible.

Beam me up, designer

The worst feedback you can give to a designer is commenting how pretty the design is. We don’t aim for pretty, can’t learn from it and our clients aren’t always satisfied with just pretty. In the end, if our clients’ customers don’t see the use in the pretty that we’ve created – the webshop will fail at some point.

Our process includes mechanisms that minimise that risk and allow us to make informed decisions for a successful webshop. Before the actual design phase, we go through planning and wireframing.

At this point we answer some of the questions that even we can’t answer just by being designers. We have best practice knowledge and experience…

geschrieben von Ralf Lieser
am 4. April 2017 - 14:58

Was haben Serena Williams, E-Commerce und Las Vegas gemeinsam? Die Magento Imagine 2017! Wir berichten exklusiv vom ersten Tag des wichtigsten Magento Events im Jahr, das auch dieses Mal wieder in Las Vegas stattfindet. Heuer haben wir gleich mehrere Autoren des Regalsprechers vor Ort. Seid gespannt, was Sie zu berichten haben.    Daten sind der

The post Magento Imagine 2017 – das war der erste Tag appeared first on Regalsprecher.

geschrieben von Hrvoje Ivancic
am 4. April 2017 - 13:35

In the previous article I wrote on how to register a Fastly account and install & configure Fastly module for Magento 2 in order to improve your store performance.

In this article I’m going to talk about how to fine tune Fastly’s service performance by configuring Origin shielding and timeout settings.

Origin shielding

Origin shielding is Fastly’s service feature which reduces the load on your origin server by routing all requests to a specfic Point of Presence (POP) which you have designated as a shield node to your origin.

How shielding works

With shielding enabled, when the first request for content arrives at one of the POP’s, for e.g…

geschrieben von Fabian Schmengler
am 4. April 2017 - 10:00
This is my weekly Kata post. Read the first one to learn what it is all about.

Last week: Ugly Trivia Game

To the Kata description
Scroll down to this weeks Kata description

As planned, I did the PHP version of this refactoring Kata over the week in multiple steps. First I needed test data for the “golden master”, the black box test

1. Step: Generate Test Data

The only input for the “Game runner” are random numbers (rand()), so I seeded the RNG with srand() to make them deterministic. Output is directly echo‘d, so I captured output with ob_start() and ob_get_clean().

Then I ran the program several times with different inputs (seed numbers), and created a data provider from the results.

2. Step: Output Stream

To get rid of the output buffering hack, I passed a stream resource…

geschrieben von Fabian Schmengler
am 4. April 2017 - 10:00
Dies ist mein wöchentlicher Kata Post. Lies den ersten um zu erfahren, worum es hier geht.

Heute nur auf Englisch

The post TDD Kata 13 – Boolean Expression Engine appeared first on

geschrieben von
am 1. April 2017 - 20:40

Whether you’re using your IDE, a debugging extension, or calling get_class and new ReflectionClass yourself, PHP (or any language’s) ability to examine itself at runtime is a vital tool for debugging a program.

Most bugs come down to “this variable does not have what I thought it had in it”, or “the thing in this variable behaves differently than I thought it did”. Being able to dump out the contents of a variable exactly when the bug happens during program execution is the quickest way to get to the bottom of any problem.

If you’re a seasoned debugger, the virtual types in Magento'2 di.xml system might throw you for a loop. You define a virtual type like this

<virtualType name="pageConfigRenderPool" type="Magento\Framework\View\Layout\ReaderPool"> <arguments> <argument name="readers" xsi:type="array"…
geschrieben von
am 1. April 2017 - 19:12

We’ve just released pestle 1.3.1, the investable .0.1 release following 1.3.0. The release fixes a few bugs with the generated DDL code for text and decimal based columns. Full details available in the issue that reported the problem.

If you’re at today’s Magento Imagine hackathon (or any day’s hackathon really), and if your project needs a module or common module code, please give pestle a try. Besides getting you up and running with your boilerplate faster, real world use plus bug reports is the only thing that’s ever made software better.

geschrieben von zallgood
am 31. März 2017 - 23:01
Creating a custom widget in Magento 2

It’s not common that you need a custom widget in Magento 2. They offer a fairly wide array of well-made widgets with easy-to-use customization. However, sometimes you need to change the functionality of a widget or increase the selection of customization options, and in order to do this you need to create your own. In this article we will be looking at how to create a widget that extends the functionality of a core widget. We will be extending functionality of the “Catalog Products List” widget so that we can change how the products are ordered.

Create the extension

Before we can create a widget, we need somewhere to put it. For this, we need a vendor folder in app\code and a module folder in the vendor folder. For the sake of this article, I will be using app\code\ClassyLlama\SortedProductsWidget. In the module folder we need two files: registration.php and etc\module.xml.


<?php \…
geschrieben von
am 30. März 2017 - 23:29

So what is a Magento 2 theme? To understand that, we’ll first need to talk about the Magento_Theme module.

The Magento_Theme module contains page layout XML files that define the basic containers for every Magento page layout.

This allows other Magento modules to use layout handle XML files to

  • Add frontend assets (JavaScript, CSS, Less) via the head element
  • Add new blocks and containers via layout handle XML files
  • Via blocks, add x-magento-init and data-mage-init javascript apps/widgets
  • Perform other actions (<move></move>, etc.) via layout handle XML files

By itself, all of the above is enough to build a Magento 2 site. Also, thanks to Magento’s infamous flexibility, it would also be possible “theme” – that is, change the appearance of – a Magento system strictly using modules.

However, Magento module programming is not a skill that’s…

geschrieben von Christian Münch
am 30. März 2017 - 21:30

Like promised in a tweet we deployed the stable version of n98-magerun2 before the start of Magento Imagine 2017. The new release contains five new commands and some bugfixes.

Features List EAV attributes

My colleague Jürgen Thelen ported two Magerun 1 commands to V2. One of it is “eav:attribute:list” which can give you a list of all your EAV attibutes.

n98-magerun2.phar eav:attribute:list

The output is a list of attributes which can filtered by entity type.

n98-magerun2.phar eav:attribute:list –add-source –add-backend –filter-type=customer

Clear your asset cache

The second command ported by Jürgen is to clear static assets.


geschrieben von
am 29. März 2017 - 22:40
This entry is part 6 of 6 in the series Pestle. Earlier posts include Pestle 1.1.1 Released, Pestle 1.1.2 Released, Magento 2 Setup Migration Scripts, Pestle 1.2.1 Released, and Sending Text Messages with PHP, pestle, and Nexmo. This is the most recent post in the series. A new release of pestle, my PHP command line framework with a full compliment of Magento 2 code generation commands, is available for download. New users will find all they need in the GitHub Existing users can just run selfupdate pestle.phar selfupdate and they’ll be good to go. Issues finished and pull requests […]
geschrieben von Fabian Schmengler
am 29. März 2017 - 16:52
This is my weekly Kata post. Read the first one to learn what it is all about.

Last week: Reversed Binary Numbers

To the Kata description

I started with a straightforward solution in PHP, using built-in functions:

function revert(int $input) : int { return (int)bindec(strrev(decbin($input))); }

That was quick (good, because I had little time), but boring. So the next time, I decided to go for a solution with bitwise operations. The result:

function revert(int $input) : int { $result = 0; $exponent = bitLength($input); do { --$exponent; $lastBitValue = $input & 1; $result += $lastBitValue * 2**$exponent; } while ($input>>=1); return $result; } function bitLength(int $input) : int { $result = 0; do { ++$result; } while ($input>>=1…
geschrieben von Fabian Schmengler
am 29. März 2017 - 16:52
Dies ist mein wöchentlicher Kata Post. Lies den ersten um zu erfahren, worum es hier geht.

Heute nur auf Englisch

The post TDD Kata 12 – Ugly Trivia Game appeared first on

geschrieben von Daniel Becker
am 28. März 2017 - 16:10

Für die SCHRAMM Werkstätten GmbH hat netz98 ein E-Commerce-Projekt auf Basis der Magento 2 Community Edition realisiert, bei dem der Content die zentrale Rolle spielt. Denn bei SCHRAMM, einem Hersteller von Luxusbetten mit extrem hochwertigen Taschenfederkern-Matratzen, ist der Content auf letztlich wichtiger als der Onlineshop: Marketing vor Direktvertrieb.   Darum hat netz98 die Magento

The post Magento 2 kann auch CMS – Interview mit SCHRAMM und netz98 appeared first on Regalsprecher.

geschrieben von
am 28. März 2017 - 2:00

We're an ecommerce agency that specialises in Magento. Over the years, we've released a range of open-source commercial and free (as-in-beer) Magento extensions. Knowing that 10,000s of stores and 100,000s of their customers have benefited from our code is a satisfying part of being a developer and a member of a community. However, from today, we will no longer be providing extensions on a commercial basis. Any extensions we do release will continue to be open-source and only listed on and GitHub.

Like all agencies, our priority is to create performant, tailored solutions for our clients that they can benefit from. Over the years, we've also been able to capitalise on our insights and personal development time by releasing innovative solutions like Shipping Rules,

geschrieben von
am 27. März 2017 - 2:00

We're now counting down the days until Magento Imagine 2017 kicks off at the Wynn in Las Vegas. It's a legendary event that has proven to be an incredibly inspiring and informative while also managing to be a whole lot of fun.

The most popular highlight for attendees at Imagine is the people there. It's a very collaborative environment.I'm looking forward to spending time with old friends catching up on both the professional and personal side.

Beating the Competition with Cognitive Commerce

It'll be my 5th time at Imagine and I'm proud to say that this time around I have the privilege of presenting at a breakout session on Wednesday 5th at 11AM in La Tache.

I will be talking on Artificial Intelligence, and machine learning in particular. How it’s going to revolutionise every sector is the talk of the tech industry. So what is it, what do you need to know and how can you use it as a tool to get an edge? My session will look at some of the…