geschrieben von Ceridwen Lentz
am 28. Februar 2017 - 12:07

Für die SCHRAMM Werkstätten GmbH hat netz98 ein E-Commerce-Projekt auf Magento-Basis 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 www.schrammwerkstaetten.de letztlich wichtiger als der Onlineshop: Marketing vor Direktvertrieb. Darum hat netz98 die Magento 2 Community Edition kurzerhand zum richtigen

The post netz98 verwandelt Magento für SCHRAMM Werkstätten in ein CMS appeared first on Regalsprecher.

geschrieben von
am 27. Februar 2017 - 20:35
This entry is part 2 of 2 in the series Pestle. Earlier posts include Pestle 1.1.1 Released. This is the most recent post in the series. We can neither confirm nor deny that we’re filled with a positive emotion that PR folks typically call excitement or happiness that pestle 1.1.2 is now available. Existing pestle users should be able to run pestle.phar selfupdate and pestle will update itself. If you’re new to pestle the GitHub README has the low-down on why you’ll want it, and how to install it. If you run into any problems getting started please let us […]
geschrieben von Dmytro Cheshun
am 27. Februar 2017 - 14:24

Magento uses notification messages to improve user experience. You can simply add any message using the Message Manager to notify users whether the result of an action is successful or not.

In this blog post we will cover one type of the notifications – Admin System Messages. This type of notifications will be shown in a pop-up block and will be present in the admin panel as a reminder for an admin user until a special condition is met. These notifications can vary from messages about invalidated indexes to vulnerability issues. Adding custom system messages can be helpful and we are going to show you how to do it in few simple steps.

To add a custom system message you need to:

  1. Register a new message in the message list;
  2. Create a model class for the new message, which implements few necessary methods for further message handling.

The "\Magento\Framework\Notification\MessageList" class is responsible for…

geschrieben von Sebastian
am 25. Februar 2017 - 18:19

Magento Community Edition Version 1.9.0.1

Der Beitrag Magento CE 1.9.0.1 erschien zuerst auf Mag-tutorials.de.

geschrieben von
am 24. Februar 2017 - 23:00
UI Component Item `source` Nodes are Redundant:

I finally got an answer out of Magento engineering on those nodes and their best guess is as good as ours. i.e., they’re redundant/not-used.

There’s a few interesting points to make here for folks just learning to program, and just getting settled into the industry.

The first is software projects often grown beyond what any individual can understand, even (or especially) if that person works at the company responsible for that software. This is why programmers clammer for best-practices and consistency in their framework code. The ability to quickly trace out why something works a particular way is more important than any particular implementation, and inconsistent or over complex systems make that impossible.

The second is, when you find something that doesn’t work right, you’ll…

geschrieben von Sebastian
am 23. Februar 2017 - 9:42

Aufenthalt in Leipzig zur #MM17DE Bis zum 01.05.2017 steht allen Teilnehmern der Meet Magento Deutschland für die Buchung eines Hotelzimmers in der Konferenzlocation pentahotel Leipzig ein Abrufkontingent unter dem Stichwort „Meet Magento“ zur Verfügung. Die Kosten für die Einzelbelegung betragen 99,00€ (Sonntag) und 119,00€ (Montag). Im Zimmerpreis ist ein reichhaltiges Frühstücksbuffet enthalten. Reservieren kannst du […]

Der Beitrag Meet Magento DE 2017: Aufenthalt, Call for Papers und Award erschien zuerst auf Mag-tutorials.de.

geschrieben von
am 23. Februar 2017 - 1:37

Although there’s no documentation stating this, based on system behavior it seems like the

Package/Module/Setup/InstallSchema.php

class files are sort of required by a Magento module.

I say sort of required because you can run a module without them. You can use that module to add features to Magento. However, a version number for that module will not be added to the setup_module table unless the InstallSchema class is present.

I discovered this when I tried adding an UpgradeSchema class to a module that didn’t have an InstallSchema. The UpgradeSchema still ran, but calling $context->getVersion()

public function upgrade( SchemaSetupInterface $setup, ModuleContextInterface $context ) { $setup->startSetup(); $version = '[' . $context->getVersion() . ']'; file_put_contents('/tmp/schema.log',$version . "\n",FILE_APPEND); $setup->endSetup(); }

returned an empty string, as…

geschrieben von
am 21. Februar 2017 - 19:44
This entry is part 1 of 1 in the series Pestle. This is the first post in the series. Hot on the heels of pestle 1.1, I’ve just released the inevitable pestle 1.1.1. Pestle users should be able to pestle selfupdate and be good to go. Things in this release include An updated, and reorganized command list A magento2:generate:ui:add_to_layout, which adds a uiComponent node to a layout update XML file A magento2:generate:controller_edit_acl command, which changes an admin controller’s configuration ACL rule A magento2:generate:full_module command, which generates a shell script that can generate a “full” module. The magento2:generate:full_module command it probably […]
geschrieben von
am 21. Februar 2017 - 18:06

While PHP production environments have long made use of extra systems like memcache, varnish, and redis, most successful PHP projects also let developers and technically savvy folks drop an archive of files on a server, point the web server at those files, configure the application to point to a traditional RDMS/database, and have a working application.

After a year or so of life with the Magento 2 non-beta-beta, it’s becoming clearer that this isn’t a priority for Magento’s engineering team. The first run experience remains dismal, and the company’s efforts seem focused on tools for Silicon Vally professionals, such as Docker.

For my on work, I’m still installing Magento directly on my OS X/macOS workstation. With out of the box performance of the file based cache being what it is, I’ve started using redis as Magento’s…

geschrieben von Ralf Lieser
am 21. Februar 2017 - 12:44

Omnichannel ganz aus Kundensicht zu gestalten, damit der Kunde nach einem positiven Einkaufserlebnis wiederkommt – das ist das Ziel von Omnichannel-Händlern. Daneben müssen natürlich auch die Verkaufszahlen stimmen und Prozesskosten möglichst niedrig bleiben. All das regelt sich nicht von alleine – sondern bestenfalls mit einer geeigneten Software, wie zum Beispiel dem Magento Commerce Order Management.

The post 5 Einsatzzwecke des Magento Commerce Order Management appeared first on Regalsprecher.

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

Last week: Coin Changer

This week it did not work out for me, I did the kata only once in PHP and that was not enough to get any particular insights. I’ll have to repeat it again some time soon! But on to the next one:

Eighth Kata: Functions Pipeline

The task: build a function pipe() that takes any number of callables as arguments and returns a new callable.
The returned callable passes any arguments to the first callable, then the result of that to the next callable, and so on, and will return the final result.
So the processing order is left to right.

Example:

// first apply strtolower(), then apply ucwords second. $f = pipe('strtolower', 'ucwords'); $f('FOO BAR') === ucwords(strtolower('FOO BAR'));

Optional follow up exercise:

implement a function compose(), which behaves just like pipe()…

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

Letzte Woche: Münzwechsler

Diese Woche hat es bei mir nicht hingehauen, ich habe die Kata nur einmal in PHP gemacht und das war nicht ausreichend für irgendwelche Einsichten. Ich werde sie demnächst noch mal wiederholen müssen. Aber jetzt erst mal zur nächsten:

Achte Kata: Functions Pipeline

Schreibe eine Funktion pipe(), die eine beliebige Zahl von Funktionen (callables) als Argumente akzeptiert und eine neue Funktion zurückgibt.
Die zurückgegebene Funktion übergibt alle Argumente an die erste Funktion, das Ergebnis an die zweite, und so weiter, und gibt das letzte Ergebnis zurück.

Die Funktionen werden also von links nach rechts verarbeitet.

Beispiel: // erst strtolower() anwenden, dann ucwords $f = pipe('strtolower', 'ucwords'); $f('FOO BAR') === ucwords(strtolower('FOO BAR')); Optionale Zusatz-…
geschrieben von Sonja Riesterer
am 17. Februar 2017 - 10:50

In etwa zwei Wochen ist es wieder Zeit für einen der Höhepunkte in unserem Veranstaltungskalender. Nein, damit ist nicht Karneval gemeint, auch wenn wir dafür nach Köln fahren. Stattdessen geht es um die MageUnconference. Wir unterstützen das Event auch in diesem Jahr wieder als Hauptsponsor und werden mit dem gesamten Team vor Ort sein.

Was ist die MageUnconference?

Wie schon in den letzten beiden Jahren treffen sich ein Wochenende lang Magento-Interessierte. Anders als bei einem Hackathon wird nicht programmiert. Anders als bei einer Konferenz gibt es auch keinen vorab geplanten Vortragsplan. Stattdessen werden an beiden Veranstaltungstagen morgens Themen vorgeschlagen, passende Vortragende aus den Teilnehmern erkoren und dann von allen darüber abgestimmt, welche Themen sie am meisten interessieren. Daraus ergibt sich dann der Plan des jeweiligen Tages.

geschrieben von
am 17. Februar 2017 - 1:00

Do you remember how four years ago everything needed to be responsive? Well, in the next two years, the best performing sites are going to be Progressive Web Apps (PWA).

So what makes a site a Progressive Web App?

It’s actually a combination of technologies and approach to implementation that results in a set of qualities. As defined by Google, they are:

  • Progressive - Works for everyone, features enable if they’re compatible with device.
  • Responsive - Caters to a wide range of device sizes.
  • Connectivity independent - Saves content for later to maintain functionality if offline or on poor quality connection
  • App-like - Feels like an app to the user with app-style interactions, navigation and shell.
  • Fresh - Loads in latest content when it can
  • Safe - Everything is over HTTPS for security.
  • Discoverable…
geschrieben von
am 16. Februar 2017 - 17:47

Tangentially Magento related: Magento uses the lusitanian/oauth composer package to handle some oAuth related tasks. In addition to the usual “create the cryptic Authorization: headers” code you’d expect to find in an oAuth library, there’s also these two folders of code

https://github.com/Lusitanian/PHPoAuthLib/tree/master/src/OAuth/OAuth1/Service

https://github.com/Lusitanian/PHPoAuthLib/tree/master/src/OAuth/OAuth2/Service

Each service class listed here attempts to capture each individual oAuth API’s unique take on how to authenticate, authorize, and call an API endpoint for a particular third party service.

Whenever someone like me quips that “oAuth is a tire fire…

geschrieben von Covos
am 16. Februar 2017 - 10:36
Ab Magento Version 1.9 werden die Bestellbestätigungs-eMails nicht mehr per Event verschickt (also nach erfolgreicher Bestellung) sondern über eine Mail-Queue, die über den Cron angestoßen wird. In vielen Fällen wird die Bestellbestätigung also nur alle 15 Minuten verschickt. Ausgerechnet bei … Weiterlesen →
geschrieben von
am 15. Februar 2017 - 23:40

In a typical adminhtml UI Form Component, each individual form element has a corresponding view model object. For text input fields, these view models come from the constructor function returned by the Magento_Ui/js/form/element/abstract RequireJS module.

The view model’s value property, an Knockout observable object, contains the field’s value.

This value property is set with the uiElement’s links feature.

#File: vendor/magento/module-ui/view/base/web/js/form/element/abstract.js defaults: { /* ... */ links: { value: '${ $.provider }:${ $.dataScope }' } }

The links default will set observable values on an object at the time of instantiation by pulling items from the uiRegistry. The above configuration sets the value property. The key it uses to pull values from the uiRegistry is created by the ES6 Template Literal String ${ $.provider }:${ $.dataScope }. The .provider property comes from UI Component…

geschrieben von Fabian Schmengler
am 15. Februar 2017 - 23:03
This is my weekly Kata post. Read the first one to learn what it is all about.

Last week: Roman Numerals

I liked that kata. I started with different approaches that did not work and found a simple one in the end, aided by the tests.

My first tries ended at something like this:


Expected :'IX'
Actual :'VIV'

As soon as it occured to me to treat “IV”, “IX” and so on as single digits, it was dead simple.

When I implemented the reverse, I noticed that it would be easier to check for two character “digits” like “IV” first, then for single characters. Instead of using the same list of (arabic,roman) tupels for both tasks, I decided to explicitly write both as constants $romanDigitsByValue and $romanDigitsByLength. This is a minor duplication of knowledge but I made that sacrifice to make the code more obvious. As long as these…

geschrieben von Fabian Schmengler
am 15. Februar 2017 - 23:03
Dies ist mein wöchentlicher Kata Post. Lies den ersten um zu erfahren, worum es hier geht.

Letzte Woche: Römische Zahlen

Die Kata war aufschlussreich. Ich habe mit verschiedenen Ansätzen begonnen, die nicht funktionierten und fand schließlich, mit Hilfe der richtigen Tests eine einfache Lösung.

Meine ersten Versuche endeten mit Ergebnissen wie diesem:

Expected :'IX'
Actual :'VIV'

Sobald ich auf den Trichter kam, “IV”, “IX” usw. wie einzelne Ziffern zu behandeln, war die Lösung einfach.

Als ich die Umkehrfunktion implementierte, stellte ich fest dass es in dem Fall einfacher ist, zuerst die “Ziffern” mit zwei Zeichen wie “IV” zu prüfen, dann die mit einem Zeichen. Anstatt also die selbe Liste von (arabic,roman) Tupeln für beide Aufgaben zu nutzen und unterschiedlich zu sortieren, entschied ich mich für zwei explizite Konstanten $…

geschrieben von
am 15. Februar 2017 - 20:37
This entry is part 13 of 13 in the series Magento 2 UI Components. Earlier posts include Magento 2: Introducing UI Components, Magento 2: Simplest UI Component, Magento 2: Simplest UI Knockout Component, Magento 2: Simplest XSD Valid UI Component, Magento 2: ES6 Template Literals, Magento 2: uiClass Data Features, Magento 2: UI Component Data Sources, Magento 2: UI Component Retrospective, Observables, uiElement Objects, and Variable Tracking, Magento 2: uiElement Features and Checkout Application, Magento 2: Remaining uiElement Defaults, and Magento 2: Knockout.js Template Primer. This is the most recent post in the series. The quick version: I’ve just released […]