<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Entwicklungshilfe NRW</title>
	<atom:link href="https://entwicklungshilfe.nrw/feed/" rel="self" type="application/rss+xml" />
	<link>https://entwicklungshilfe.nrw/</link>
	<description>PHP-Schulungen für effektive Webentwicklung, praxisorientierte Workshops und Seminare für besseres Webdevelopment</description>
	<lastBuildDate>Wed, 08 Jan 2020 10:20:17 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.1</generator>

<image>
	<url>https://entwicklungshilfe.nrw/wp-content/uploads/2026/02/cropped-favicon-32x32.png</url>
	<title>Entwicklungshilfe NRW</title>
	<link>https://entwicklungshilfe.nrw/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>M2E Pro &#8211; Konfiguration in Magento 1.9 für EBAY</title>
		<link>https://entwicklungshilfe.nrw/blog/2017/10/02/m2e-pro-konfiguration-in-magento-1-fuer-ebay/</link>
					<comments>https://entwicklungshilfe.nrw/blog/2017/10/02/m2e-pro-konfiguration-in-magento-1-fuer-ebay/#respond</comments>
		
		<dc:creator><![CDATA[Mone Wildenberg]]></dc:creator>
		<pubDate>Mon, 02 Oct 2017 20:21:07 +0000</pubDate>
				<category><![CDATA[Magento]]></category>
		<guid isPermaLink="false">http://www.entwicklungshilfe.nrw/blog/?p=728</guid>

					<description><![CDATA[<p>Mal eben den Verkauf von Produkten auf Ebay starten mit dem M2E Pro Modul&#8230; &#8211; ganz so einfach ist es nicht. Wenn man sich allerdings an eine Grundanleitung hält, kommt man schnell zum Ziel. Konfiguration Angebot/Listing erstellen Produkt-Upload auf Ebay Konfiguration für Ebay Konfiguration und Connection zum Ebay-account Als erstes übernimmt M2E die Daten aus [&#8230;]</p>
<p>Der Beitrag <a href="https://entwicklungshilfe.nrw/blog/2017/10/02/m2e-pro-konfiguration-in-magento-1-fuer-ebay/">M2E Pro &#8211; Konfiguration in Magento 1.9 für EBAY</a> erschien zuerst auf <a href="https://entwicklungshilfe.nrw">Entwicklungshilfe NRW</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h1>Mal eben den Verkauf von Produkten auf Ebay starten mit dem M2E Pro Modul&#8230;</h1>
<p>&#8211; ganz so einfach ist es nicht. Wenn man sich allerdings an eine Grundanleitung hält, kommt man schnell zum Ziel.</p>
<ul>
<li>Konfiguration</li>
<li>Angebot/Listing erstellen</li>
<li>Produkt-Upload auf Ebay</li>
</ul>
<h2><strong>Konfiguration für Ebay</strong></h2>
<p>Konfiguration und Connection zum Ebay-account</p>
<p>Als erstes übernimmt M2E die Daten aus Magento. Wenn alle Angaben korrekt sind können diese bestätigt werden und sind übernommen. Über Production-Live-Envoirment gelangt man dann zu einer Eingabemaske in der man sich mit Ihrem Ebay-Account. Unter Umständen sind noch weiteren Angaben nötig.</p>
<p><img fetchpriority="high" decoding="async" class="alignleft wp-image-741 size-full" src="https://entwicklungshilfe.nrw/wp-content/uploads/2017/09/m2e-ebay-magento-e1569252970595.png" alt="" width="481" height="303" srcset="https://entwicklungshilfe.nrw/wp-content/uploads/2017/09/m2e-ebay-magento-e1569252970595.png 481w, https://entwicklungshilfe.nrw/wp-content/uploads/2017/09/m2e-ebay-magento-e1569252970595-300x189.png 300w, https://entwicklungshilfe.nrw/wp-content/uploads/2017/09/m2e-ebay-magento-e1569252970595-230x145.png 230w, https://entwicklungshilfe.nrw/wp-content/uploads/2017/09/m2e-ebay-magento-e1569252970595-350x220.png 350w, https://entwicklungshilfe.nrw/wp-content/uploads/2017/09/m2e-ebay-magento-e1569252970595-480x302.png 480w" sizes="(max-width: 481px) 100vw, 481px" /></p>
<p>Wie auch empfohlen, wählt man zunächst den &#8220;simple mode&#8220;. Im Nachhinein kann noch auf den M2E Pro Mode gewechselt werden.</p>
<p><img decoding="async" class="alignleft wp-image-740 size-full" src="https://entwicklungshilfe.nrw/wp-content/uploads/2017/09/m2e-ebay-magento-sign-in.png" alt="" width="473" height="395" srcset="https://entwicklungshilfe.nrw/wp-content/uploads/2017/09/m2e-ebay-magento-sign-in.png 473w, https://entwicklungshilfe.nrw/wp-content/uploads/2017/09/m2e-ebay-magento-sign-in-300x251.png 300w" sizes="(max-width: 473px) 100vw, 473px" /></p>
<p>M2E sollte jetzt mit dem Ebay-account verbunden sein.</p>
<h2><strong>Angebot/Listing erstellen für Ebay</strong></h2>
<p>Sie klicken in Ihrem Backend-Menu auf den Reiter &#8220;Ebay&#8220; und wählen den Punkt &#8220;Angebote&#8220;. Drücken Sie auf &#8220;Angeot hinzufügen&#8220;. Es öffnet sich nun eine neue Seite mit drei Punkten zu verschiedenen Einstellungen. Diese Einstellungen sind eher Ebay-spezifisch und dem entsprechend sehr individuell. Sie füllen also alles genau so aus wie es für Ihren Bedarf notwendig ist.</p>
<p><img decoding="async" class="alignleft wp-image-747 size-full" src="https://entwicklungshilfe.nrw/wp-content/uploads/2017/09/m2e-magento-listing-amazon-2.png" alt="" width="1004" height="230" srcset="https://entwicklungshilfe.nrw/wp-content/uploads/2017/09/m2e-magento-listing-amazon-2.png 1004w, https://entwicklungshilfe.nrw/wp-content/uploads/2017/09/m2e-magento-listing-amazon-2-300x69.png 300w, https://entwicklungshilfe.nrw/wp-content/uploads/2017/09/m2e-magento-listing-amazon-2-300x69@2x.png 600w" sizes="(max-width: 1004px) 100vw, 1004px" /></p>
<p>Nach dem Bestätigen der Einstellungen kommen Sie zur Auswahl Ihrer Produkte für das Listing. Sie können die Produkte aus der Produktliste oder aus der Kategorieliste wählen. Drücken Sie auf &#8220;weiter&#8220; und wählen die Produkte die Sie in Ihrem Listing haben möchten.</p>
<p>Im nächsten Fenster können Sie aussuchen ob Sie die ausgewählten alle in die gleiche Ebaykategorie einfügen möchten oder in verschiedene. Jenach bedarf wählen Sie hier und gelangen dann zur Auswahl der Kategorien.</p>
<p><img loading="lazy" decoding="async" class="alignleft wp-image-748 size-full" src="https://entwicklungshilfe.nrw/wp-content/uploads/2017/09/m2e-magento-listing-amazon-3.png" alt="" width="612" height="274" srcset="https://entwicklungshilfe.nrw/wp-content/uploads/2017/09/m2e-magento-listing-amazon-3.png 612w, https://entwicklungshilfe.nrw/wp-content/uploads/2017/09/m2e-magento-listing-amazon-3-300x134.png 300w, https://entwicklungshilfe.nrw/wp-content/uploads/2017/09/m2e-magento-listing-amazon-3-300x134@2x.png 600w" sizes="auto, (max-width: 612px) 100vw, 612px" /></p>
<p>Auf den folgenden Seiten fügt man verschiedene Merkmale für die Produkte hinzu. Diese sind auch wieder Individueller Art und ist nach Bedarf auszufüllen.</p>
<p>Sie haben nun alles ausgewählten Produkte in Ihr Listing hinzugefügt.</p>
<h2><strong>Produkt-Upload auf Ebay</strong></h2>
<p>Sie klicken in Ihrem Backend-Menu auf den Reiter &#8220;Ebay&#8220; und wählen den Punkt &#8220;Angebote&#8220;. Alle Voreinstellungen für den Upload auf Ebay haben Sie schon im Listing konfiguriert. Drücken Sie nun auf das Listing in der Tabelle um die Seite mit allen im Listing enthaltenden Produkten zu sehen. Sie können nun einzelne Produkte auswählen oder alle auf einmal um Sie hochzuladen. Nach Ihrer Auswahl wählen sie im oberen Teil der Tabelle&nbsp; im Drop-Down-Menu den Punkt &#8220;Artikel bei Ebay einstellen&#8220; und drücken &#8220;absenden&#8220;.</p>
<p><img loading="lazy" decoding="async" class="alignleft wp-image-756 size-full" src="https://entwicklungshilfe.nrw/wp-content/uploads/2017/09/m2e-magento-listing-ebay.png" alt="" width="736" height="244" srcset="https://entwicklungshilfe.nrw/wp-content/uploads/2017/09/m2e-magento-listing-ebay.png 736w, https://entwicklungshilfe.nrw/wp-content/uploads/2017/09/m2e-magento-listing-ebay-300x99.png 300w, https://entwicklungshilfe.nrw/wp-content/uploads/2017/09/m2e-magento-listing-ebay-300x99@2x.png 600w" sizes="auto, (max-width: 736px) 100vw, 736px" /></p>
<p>Es erscheint ein Ladebalken und eine Success-Message. Sie haben nun Ihre ersten Produkte auf Ebay hochgeladen.</p>
<p><strong>&nbsp;</strong>Führen Sie diesen aus nach dem Sie in den Ordner Ihres Magentorojektes gewechselt haben.</p>
<p>Der Beitrag <a href="https://entwicklungshilfe.nrw/blog/2017/10/02/m2e-pro-konfiguration-in-magento-1-fuer-ebay/">M2E Pro &#8211; Konfiguration in Magento 1.9 für EBAY</a> erschien zuerst auf <a href="https://entwicklungshilfe.nrw">Entwicklungshilfe NRW</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://entwicklungshilfe.nrw/blog/2017/10/02/m2e-pro-konfiguration-in-magento-1-fuer-ebay/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>M2E Pro in Magento 1 für Amazon &#8211; Konfiguration</title>
		<link>https://entwicklungshilfe.nrw/blog/2017/09/24/m2e-pro-konfiguration-magento-1-fuer-amazon/</link>
					<comments>https://entwicklungshilfe.nrw/blog/2017/09/24/m2e-pro-konfiguration-magento-1-fuer-amazon/#respond</comments>
		
		<dc:creator><![CDATA[Mone Wildenberg]]></dc:creator>
		<pubDate>Sun, 24 Sep 2017 20:54:32 +0000</pubDate>
				<category><![CDATA[Magento]]></category>
		<category><![CDATA[M2E]]></category>
		<guid isPermaLink="false">http://www.entwicklungshilfe.nrw/blog/?p=724</guid>

					<description><![CDATA[<p>Konfiguration Angebot/Listing erstellen Produkt-Upload auf Amazon Problembehandlung und Tipps Konfiguration für Amazon 1) Lizenz einrichten Bei Erstaufruf des „Amazon“-Reiter fordert M2E eine Lizenz einzurichten. Dort gibt man die geforderten Angaben ein und bestätigt. 2) Amazon als Verkaufskanal aktivieren und konfigurieren Amazon als Verkaufskanal aktivieren: Am Einfachsten geht es, die Einstellungen wie unten im Bild zu [&#8230;]</p>
<p>Der Beitrag <a href="https://entwicklungshilfe.nrw/blog/2017/09/24/m2e-pro-konfiguration-magento-1-fuer-amazon/">M2E Pro in Magento 1 für Amazon &#8211; Konfiguration</a> erschien zuerst auf <a href="https://entwicklungshilfe.nrw">Entwicklungshilfe NRW</a>.</p>
]]></description>
										<content:encoded><![CDATA[<ul>
<li>Konfiguration</li>
<li>Angebot/Listing erstellen</li>
<li>Produkt-Upload auf Amazon</li>
<li>Problembehandlung und Tipps</li>
</ul>
<h1><strong>Konfiguration für Amazon</strong></h1>
<h2>1) Lizenz einrichten</h2>
<p>Bei Erstaufruf des „Amazon“-Reiter fordert M2E eine Lizenz einzurichten. Dort gibt man die geforderten Angaben ein und bestätigt.</p>
<p><img loading="lazy" decoding="async" class="alignleft wp-image-744 size-full" src="https://entwicklungshilfe.nrw/wp-content/uploads/2017/09/m2e-lizenz-magento.png" alt="m2e Amazon Lizenz Magento" width="1004" height="290" srcset="https://entwicklungshilfe.nrw/wp-content/uploads/2017/09/m2e-lizenz-magento.png 1004w, https://entwicklungshilfe.nrw/wp-content/uploads/2017/09/m2e-lizenz-magento-300x87.png 300w, https://entwicklungshilfe.nrw/wp-content/uploads/2017/09/m2e-lizenz-magento-300x87@2x.png 600w" sizes="auto, (max-width: 1004px) 100vw, 1004px" /></p>
<h2>2) Amazon als Verkaufskanal aktivieren und konfigurieren</h2>
<h3>Amazon als Verkaufskanal aktivieren:</h3>
<p>Am Einfachsten geht es, die Einstellungen wie unten im Bild zu übernehmen. Das wichtigste ist, Amazon als Default-Chanel zu wählen. Es öffnet sich ein Configuration-Wizard nach der Bestätigung. Dann startet die M2E Konfiguration.</p>
<p><img loading="lazy" decoding="async" class="alignleft wp-image-743 size-full" src="https://entwicklungshilfe.nrw/wp-content/uploads/2017/09/m2e-konfiguraiton-magento.png" alt="m2e Konfiguration Magento" width="626" height="347" srcset="https://entwicklungshilfe.nrw/wp-content/uploads/2017/09/m2e-konfiguraiton-magento.png 626w, https://entwicklungshilfe.nrw/wp-content/uploads/2017/09/m2e-konfiguraiton-magento-300x166.png 300w, https://entwicklungshilfe.nrw/wp-content/uploads/2017/09/m2e-konfiguraiton-magento-300x166@2x.png 600w" sizes="auto, (max-width: 626px) 100vw, 626px" /></p>
<h3>Konfiguration von M2E :</h3>
<p>Im Marketplace-Setup werden die Länder gewählt in denen die Produkte verkauft werden sollen. Über das Drücken auf weiter erscheint ein Ladebalken und ein weiterer Block, der zum Account-Setup führt.</p>
<p><img loading="lazy" decoding="async" class="alignleft wp-image-737 size-full" src="https://entwicklungshilfe.nrw/wp-content/uploads/2017/09/m2e-amazon-magento.png" alt="m2e Amazon Magento" width="527" height="400" srcset="https://entwicklungshilfe.nrw/wp-content/uploads/2017/09/m2e-amazon-magento.png 527w, https://entwicklungshilfe.nrw/wp-content/uploads/2017/09/m2e-amazon-magento-300x228.png 300w" sizes="auto, (max-width: 527px) 100vw, 527px" /></p>
<h2>3) Verbinden des M2E mit dem Amazon-Account</h2>
<p>Im Reiter „Allgemeines“ und wählen man eine Bezeichnung für das Konto. Unter dem Punkt „Access Details“ wählen man den Marktplatz aus und drücken dann auf Zugangsdaten abfragen. Es öffnet sich, in einem neuen Fenster die Eingabemaske der Amaton-Seller-Central. Dort melden man sich mit den Zugangsdaten des Amazon-Accounts an.</p>
<p>Im darauf folgenden Fenster sollten alle nötigen Angeben schon vorausgefüllt sein. Man wählt die zweite Option und drückt weiter.</p>
<p>Im nächsten Fenster akzeptieren man die AGBs und kommt dann auf die Seite wo man die Verkäufer-ID und die Authorization-Token bekommt. Beides kopieren man und geht zurück zu den Settings im Magento-Backend. Unter dem Punkt Access-Details nun ID und Token eintragen. Man kann nun unter den übrigen Reitern weitere Einstellungen vornehmen. Dort kann zum Beispiel der Umgang mit Listings die Außerhalb von M2E getätigt wurden bestimmen. Das sind spezifische Angaben die von Shop zu Shop unterschiedlich sein können. „Speichern und fortfahren“ drücken.</p>
<p>Es erscheint nach dem speichern im oberen Teil der Seite eine grüne Fläche mit der Information, dass der Amazon-Account erfolgreich mit M2E verbunden wurde.</p>
<p><img loading="lazy" decoding="async" class="alignleft wp-image-738 size-full" src="https://entwicklungshilfe.nrw/wp-content/uploads/2017/09/m2e-amzon-magento-1.png" alt="m2e Amazon Magento" width="490" height="373" srcset="https://entwicklungshilfe.nrw/wp-content/uploads/2017/09/m2e-amzon-magento-1.png 490w, https://entwicklungshilfe.nrw/wp-content/uploads/2017/09/m2e-amzon-magento-1-300x228.png 300w" sizes="auto, (max-width: 490px) 100vw, 490px" /></p>
<h1><strong>Angebot/Listing erstellen für Amazon</strong></h1>
<p><strong>Listings machen im Grunde zwei Dinge &#8211; </strong>sie legen zu einen fest welche Produkte auf Amazon geführt werden und welche Einstellungen beim Amazon vorgenommen werden soll. Dies geschieht mit Hilfe von Rahmenbedingungen/Policies, dazu weiter unten mehr. Produkte können händisch in ein Listing hinzugeführt werden oder automatisiert, sobald ein neues Produkt angelegt wird. Ein Listing ist eine Schablone mit der eine bestimmte Art/Kategorie von Produkt unter den immer selben Umständen in Amazon erscheint.</p>
<h3>Vorgehen:</h3>
<p>Man drückt im Magento-Backend auf den Reiter „Amazon“ und wählt den Punkt „Angebote“. Es erscheint eine neue Seite. Oben rechts auf „Angebot hinzufügen“ klicken. Dort kann man nun Settings für das Listing konfigurieren. Die Einstellungen hier sind wieder individuell und variieren, je nachdem wie der Produktupload bei Amazon gestaltet werden soll. Felder die ausgefüllt werden müssen sind mit einem roten Sternchen markiert. Wichtige Felder sind unter dem Punkt „Selling Settings“ bzw. „Verkaufseinstellung“. Die Rahmenbedingungen/Policie müssen hinzugefügt werden, wenn noch keine Vorhanden sind. Dies kann über Policies hinzfügen direkt erledigt werden.</p>
<p><img loading="lazy" decoding="async" class="alignleft wp-image-755 size-full" src="https://entwicklungshilfe.nrw/wp-content/uploads/2017/09/m2e-magento-listing-amazon.png" alt="m2e Magento Listing" width="1040" height="514" srcset="https://entwicklungshilfe.nrw/wp-content/uploads/2017/09/m2e-magento-listing-amazon.png 1040w, https://entwicklungshilfe.nrw/wp-content/uploads/2017/09/m2e-magento-listing-amazon-300x148.png 300w, https://entwicklungshilfe.nrw/wp-content/uploads/2017/09/m2e-magento-listing-amazon-1024x506.png 1024w, https://entwicklungshilfe.nrw/wp-content/uploads/2017/09/m2e-magento-listing-amazon-300x148@2x.png 600w" sizes="auto, (max-width: 1040px) 100vw, 1040px" /></p>
<p><em>Selling Format Policy:</em></p>
<p>Mengenangaben und Preise bestimmen für die Anzeige auf Amazon. Mehr dazu auf:</p>
<p><a href="https://docs.m2epro.com/display/AmazonMagentoV6X/Selling+Format+Policy">https://docs.m2epro.com/display/AmazonMagentoV6X/Selling+Format+Policy</a></p>
<p><em>Synchronization Policy:</em></p>
<p>Hier werden die Einstellungen für den automatischen Upload auf Amazon vorgenommen wenn ein neues Produkt anlegt wird. Dies funktioniert laut M2E aber noch nicht Reibungslos. Daher ist empfohlen weitestgehend die Default-Einstellungen beizubehalten und nur mit rotem Sternchen gekennzeichnete Felder auszufüllen. Mehr dazu auf:</p>
<p><a href="https://docs.m2epro.com/display/AmazonMagentoV6X/Synchronization+Policy">https://docs.m2epro.com/display/AmazonMagentoV6X/Synchronization+Policy</a></p>
<p>Vorweg: EAN und ISBN sind internationale Identifikationsnummern, ASIN ist eine Amazon-Artikelnummer die Amazon aus der EAN/ISBN bildet.</p>
<p>Nun fährt man fort mit dem Punkt „Sucheinstellungen“. Im besten Fall wird EAN, ISBN oder ASIN angegeben. Diese haben eine eindeutige Produktzuweisung und existieren nicht nochmal für ein anderes Produkt. Mit der Hilfe dieser Nummern kann man sich, wenn das gleiche Produkt schon von einem anderen Seller auf Amazon gelistet ist, das händische heraussuchen dieser Produkte sparen. Es funktioniert automatisch. Andernfalls wird M2E später beim Produkt-Upload auf Amazon die Möglichkeit geben Produkte aus dem Amazon-Produkt-Pool zu wählen. Noch nicht bei Amazon gelistete Produkte <u>müssen</u> eine EAN oder GTIN haben oder man hat die Möglichkeit bei Amazon um Freistellung zu bitten.</p>
<p>Auch hier alles je nach Bedarf ausfüllen und dann wartet der „nächste Schritt“.</p>
<p>Als Nächstes kann man angeben wie die Auswahl der Produkte angeordnet sein soll. Als Liste ohne Gruppierung oder geordnet nach Kategorien. Im Anschluss wird die Liste der Produkte dargestellt. Dort wählt man die Produkte aus, um diese dem Listing hinzuzufügen.</p>
<p><img loading="lazy" decoding="async" class="alignleft wp-image-746 size-full" src="https://entwicklungshilfe.nrw/wp-content/uploads/2017/09/m2e-magento-listing-amazon-1.png" alt="m2e Magento Listing Amazon" width="1004" height="138" srcset="https://entwicklungshilfe.nrw/wp-content/uploads/2017/09/m2e-magento-listing-amazon-1.png 1004w, https://entwicklungshilfe.nrw/wp-content/uploads/2017/09/m2e-magento-listing-amazon-1-300x41.png 300w, https://entwicklungshilfe.nrw/wp-content/uploads/2017/09/m2e-magento-listing-amazon-1-300x41@2x.png 600w" sizes="auto, (max-width: 1004px) 100vw, 1004px" /></p>
<p>So hat man das erste Listing erzeugt. Dieses findet man nun im Backend des Shops unter Amazon-&gt;Angebote/Listing.</p>
<h1><strong>Produkt-Upload auf Amazon</strong></h1>
<h2>1) Produkt-Upload mit EAN, ISBN oder ASIN</h2>
<p>Zunächst folgt der Upload wenn man unter „Sucheinstellungen“ eine EAN, ISBN oder ASIN angegeben hat. Wenn man nun auf das Listing klickt öffnet es sich mit allen Produkten dieses Listings. Auf Amazon erscheinen dann die spezifisch ausgewählten Produkte. Nach der Auswahl findet man in der Tabelle ein Drop-Down-Menu „Schritte“, dort den Punkt „Artikel einstellen“ und daneben den Button „Absenden“. Es erscheint im oberen Teil des Backends und in der Produkttabelle die Nachricht, dass der Upload-Prozess gestartet ist.</p>
<p><img loading="lazy" decoding="async" class="alignleft wp-image-749 size-full" src="https://entwicklungshilfe.nrw/wp-content/uploads/2017/09/m2e-magento-listing-amazon-4.png" alt="m2e Amazon Listing Magento" width="1003" height="178" srcset="https://entwicklungshilfe.nrw/wp-content/uploads/2017/09/m2e-magento-listing-amazon-4.png 1003w, https://entwicklungshilfe.nrw/wp-content/uploads/2017/09/m2e-magento-listing-amazon-4-300x53.png 300w, https://entwicklungshilfe.nrw/wp-content/uploads/2017/09/m2e-magento-listing-amazon-4-300x53@2x.png 600w" sizes="auto, (max-width: 1003px) 100vw, 1003px" /></p>
<p>Dieser dauert einen Augenblick. Bei einem erfolgreichen Upload änder sich in der Status in der gleichnamigen Spalte des Listings von „nicht eingestellt“ auf „eingestellt“.</p>
<p><img loading="lazy" decoding="async" class="alignleft wp-image-750 size-full" src="https://entwicklungshilfe.nrw/wp-content/uploads/2017/09/m2e-magento-listing-amazon-5.png" alt="" width="1004" height="154" srcset="https://entwicklungshilfe.nrw/wp-content/uploads/2017/09/m2e-magento-listing-amazon-5.png 1004w, https://entwicklungshilfe.nrw/wp-content/uploads/2017/09/m2e-magento-listing-amazon-5-300x46.png 300w, https://entwicklungshilfe.nrw/wp-content/uploads/2017/09/m2e-magento-listing-amazon-5-300x46@2x.png 600w" sizes="auto, (max-width: 1004px) 100vw, 1004px" /></p>
<p>Nun sind erfolgreich Produkte aus dem Shop zu Amazon hinzugefügt. Dies kann man, um sicher zu gehen, im Amazon-Seller-Central nachprüfen.</p>
<h2>2) Produkt-Upload ohne EAN, ISBN oder ASIN</h2>
<p><strong>&nbsp;</strong>Wie schon erwähnt falls das Produkt noch nicht bei Amazon selbst gelistet ist, muss eine EAN angeben werden oder um Freistellung gebeten werden. Dies gilt ausschließlich für den Upload bei Amazon. Für Ebay wird die Notwendigkeit der EAN etwas freier gehalten.</p>
<p>Im Listing sucht man sich das gewünschte Produkt und drückt nun auf das Kleine grüne Kreuz in der Spalte „ASIN/ISBN“.</p>
<p><img loading="lazy" decoding="async" class="alignleft wp-image-751 size-full" src="https://entwicklungshilfe.nrw/wp-content/uploads/2017/09/m2e-magento-listing-amazon-6.png" alt="" width="1004" height="243" srcset="https://entwicklungshilfe.nrw/wp-content/uploads/2017/09/m2e-magento-listing-amazon-6.png 1004w, https://entwicklungshilfe.nrw/wp-content/uploads/2017/09/m2e-magento-listing-amazon-6-300x73.png 300w, https://entwicklungshilfe.nrw/wp-content/uploads/2017/09/m2e-magento-listing-amazon-6-300x73@2x.png 600w" sizes="auto, (max-width: 1004px) 100vw, 1004px" /></p>
<p>Es öffnet sich ein Fenster mit drei Optionen. Zu wählen&nbsp; ist „ASIN/ISBN manuell zuweisen“</p>
<p><img loading="lazy" decoding="async" class="alignleft wp-image-752 size-full" src="https://entwicklungshilfe.nrw/wp-content/uploads/2017/09/m2e-magento-listing-amazon-7.png" alt="" width="547" height="301" srcset="https://entwicklungshilfe.nrw/wp-content/uploads/2017/09/m2e-magento-listing-amazon-7.png 547w, https://entwicklungshilfe.nrw/wp-content/uploads/2017/09/m2e-magento-listing-amazon-7-300x165.png 300w" sizes="auto, (max-width: 547px) 100vw, 547px" /></p>
<p>Man kann nun in das Suchfeld oben im Fenster den Namen des Produktes eingeben. Wichtig ist, dass 100 % identische Produkte zu wählen. Hier muss man zusätzlich darauf achten, dass bei Kleidung auch die Farbe und Größe eine Rolle spielt. Diese haben jeweils andere EANs. Nachdem man sein Produkt unter den Vorschlägen gefunden hat, kann man diese „zuordnen“.</p>
<p><img loading="lazy" decoding="async" class="alignleft wp-image-753 size-full" src="https://entwicklungshilfe.nrw/wp-content/uploads/2017/09/m2e-magento-listing-amazon-8.png" alt="" width="637" height="500" srcset="https://entwicklungshilfe.nrw/wp-content/uploads/2017/09/m2e-magento-listing-amazon-8.png 637w, https://entwicklungshilfe.nrw/wp-content/uploads/2017/09/m2e-magento-listing-amazon-8-300x235.png 300w, https://entwicklungshilfe.nrw/wp-content/uploads/2017/09/m2e-magento-listing-amazon-8-300x235@2x.png 600w" sizes="auto, (max-width: 637px) 100vw, 637px" /></p>
<p>Nun sthet in der Spalte „ASIN/ISBN“ die Artikelnummer von dem ausgesuchten Produkt. Zum Nachkorrigieren&nbsp; drückt man auf das kleine rote Minus neben der Lupe. Das Produkt wird von der ASIN entkoppelt. Wenn die Auswahl stimmt kann nun mit dem Produkt-Uploads fortgefahren werden.</p>
<p><img loading="lazy" decoding="async" class="alignleft wp-image-754 size-full" src="https://entwicklungshilfe.nrw/wp-content/uploads/2017/09/m2e-magento-listing-amazon-9.png" alt="" width="1004" height="189" srcset="https://entwicklungshilfe.nrw/wp-content/uploads/2017/09/m2e-magento-listing-amazon-9.png 1004w, https://entwicklungshilfe.nrw/wp-content/uploads/2017/09/m2e-magento-listing-amazon-9-300x56.png 300w, https://entwicklungshilfe.nrw/wp-content/uploads/2017/09/m2e-magento-listing-amazon-9-300x56@2x.png 600w" sizes="auto, (max-width: 1004px) 100vw, 1004px" />Noch nicht alle Fragen beantwortet: das Lesen der M2E Dokumentation hilft in jedem Fall oder auch die webvisum GmbH aus Köln kann hier weiterhelfen.</p>
<p>Quelle Beitragsbild: commons.wikimedia.org/wiki/ File:Amazon_Espa%C3%B1a_por_dentro_(18).jpg</p>
<p>Der Beitrag <a href="https://entwicklungshilfe.nrw/blog/2017/09/24/m2e-pro-konfiguration-magento-1-fuer-amazon/">M2E Pro in Magento 1 für Amazon &#8211; Konfiguration</a> erschien zuerst auf <a href="https://entwicklungshilfe.nrw">Entwicklungshilfe NRW</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://entwicklungshilfe.nrw/blog/2017/09/24/m2e-pro-konfiguration-magento-1-fuer-amazon/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>M2E Pro &#8211; Installation &#038; Einführung Magento 1</title>
		<link>https://entwicklungshilfe.nrw/blog/2017/09/19/m2e-pro-installation-einfuehrung/</link>
					<comments>https://entwicklungshilfe.nrw/blog/2017/09/19/m2e-pro-installation-einfuehrung/#respond</comments>
		
		<dc:creator><![CDATA[Mone Wildenberg]]></dc:creator>
		<pubDate>Tue, 19 Sep 2017 20:16:54 +0000</pubDate>
				<category><![CDATA[Magento]]></category>
		<category><![CDATA[M2E]]></category>
		<category><![CDATA[Magento 1]]></category>
		<guid isPermaLink="false">http://www.entwicklungshilfe.nrw/blog/?p=729</guid>

					<description><![CDATA[<p>Einführung Installation Problembehandlung und Tipps Was kann M2E Pro &#8211; eine kurze Einführung Dies ist eine kurze Einführung in das M2E Pro Modul für Magento-Shops. Es bietet die Möglichkeit Produkte mit nur&#160; direkt über den Magento Webshop auf Amazon, eBay und Rakuten anzubieten. Das spart Zeit, da nicht mehr verschiedene Systeme gepflegt werden müssen. Im [&#8230;]</p>
<p>Der Beitrag <a href="https://entwicklungshilfe.nrw/blog/2017/09/19/m2e-pro-installation-einfuehrung/">M2E Pro &#8211; Installation &#038; Einführung Magento 1</a> erschien zuerst auf <a href="https://entwicklungshilfe.nrw">Entwicklungshilfe NRW</a>.</p>
]]></description>
										<content:encoded><![CDATA[<ul>
<li>Einführung</li>
<li>Installation</li>
<li>Problembehandlung und Tipps</li>
</ul>
<h1><strong>Was kann M2E Pro &#8211; eine kurze Einführung<br />
</strong></h1>
<p>Dies ist eine kurze Einführung in das M2E Pro Modul für Magento-Shops. Es bietet die Möglichkeit Produkte mit nur&nbsp; <u>direkt über</u> den Magento Webshop auf Amazon, eBay und Rakuten anzubieten. Das spart Zeit, da nicht mehr verschiedene Systeme gepflegt werden müssen. Im Vorhinein können Einstellungen vorgenommen werden unter welchen Bedingungen das Produkt auf der jeweiligen Plattform erscheinen soll, zum Beispiel plattformabhängige Preise und Quantität. Diese Einführung beschäftigt sich nur mit der Plattform Amazon und soll helfen möglichst schnell die ersten Produkte zu platzieren.</p>
<p>M2E Pro lässt nahezu keine Option aus und ist sehr flexibel. Dem entsprechend greifen viele Abhängigkeiten ineinander. Vor allem die Rahmenbedingungen/Policies, unter denen Produkte hochgeladen werden, können sich im Weg stehen. Deswegen ist es wichtig zu wissen, dass eine gewisse Einarbeitungszeit benötigt wird, um M2E Pro intuitiv bedienen zu können. Vieles wird auch mit Hilfe dieser Dokumentation nicht direkt klar sein. Als weitere Hilfestellung auch noch andere Hilfe- und Informationskanäle zu Rate gezogen werden.</p>
<p>Einige Beispiele:</p>
<ul>
<li>Offizielle M2E Pro Dokumentation – Hier wird alles sehr ausführlich erklärt. Ausschließlich auf englisch: <a href="https://docs.m2epro.com/display/M2Ehome/Home">https://docs.m2epro.com/display/M2Ehome/Home</a></li>
<li>Youtube – Dort gibt es viele Schritt-für-Schritt-Anleitungen. Hier ein gutes Video zur Konfiguration von M2E: <a href="https://www.youtube.com/watch?v=6jEgMhGLDKA">https://www.youtube.com/watch?v=6jEgMhGLDKA</a></li>
<li>Webvisum GmbH aus Köln, 0221 677834832 &#8211; wir haben schon für viele Kunden M2E Pro konfiguriert</li>
</ul>
<h1><strong>Installation von M2E Pro bei Magento 1<br />
</strong></h1>
<p>Man hat zwei Möglichkeiten M2E Pro zu installieren, einmal über den Magento Connect Manager und einmal manuell in dem das Modulverzeichnis in das Magentoprojekt verschoben wird. Von der Installation über den Magento Connect Manager rate ich ab. Das gilt auch für Updates dieses Moduls. Die Installation selber sollte von einem Magento-Developer vorgenommen werden da es zu Problemen kommen kann, die den Shop still legen.</p>
<h2>1) Magento-Extension-Key</h2>
<p>Als Erstes benötigt wird der Magento-Extension-Key:</p>
<p><a href="https://www.magentocommerce.com/magento-connect/ebay-amazon-rakuten-magento-integration-order-import-and-stock-level-synchronization.html">https://www.magentocommerce.com/magento-connect/ebay-amazon-rakuten-magento-integration-order-import-and-stock-level-synchronization.html</a></p>
<p>Dort etwas weiter nach unten scrollen, Reiter „M1 Extension Versions“.</p>
<p>Button „Install now“ drücken und einloggen, falls dies noch nicht geschehen ist. Jetzt einen weiteren Button „Get Extension-Key“ klicken, nachdem das darunterliegende Extension-License-Agreement akzeptiert wurde. Es erscheint ein Link zum Kopieren.</p>
<p>Dann folgenden Link klicken:</p>
<p><a href="http://freegento.com/ddl-magento-extension.php">http://freegento.com/ddl-magento-extension.php</a></p>
<p>In das Eingabefeld den kopierten Link einfügen und auf „Senden“ drücken. Es erscheint ein Download-Link. Der Download des Archivs startet..</p>
<h2>2) Einbinden des M2E Pro Moduls in den eigenen Magento 1 Shop</h2>
<p>Für User mit einem UnixBetriebssystem(Linux, Mac OSX):</p>
<p>Das heruntergeladene Archiv entpacken und in das Magento-Verzeichnis verschieben. Die Installation von M2E Pro erfolgt entweder ganz einfach mit der Maus per Drag-and-Drop oder über die Konsole.</p>
<h3>Per Drag-and-Drop:</h3>
<p>Entpackt wird das M2E Pro Modul mit einem Doppelklick (bei Linux mit Rechtsklick und auswählen der „extract-here“-Option). Nun öffnet man sich am Besten den Projektordner der Magentoinstallation direkt daneben.&nbsp; Nun den entpackten Inhalt markieren und mit gehaltener Alt-Taste (bei Linux die Ctrl-Taste) in die freie Fläche des Magentoverzeichnises ziehen. Ein kleines Plus steht neben der Maus. Unter Umständen sind danach die Ordner zusammen zu führen.</p>
<p><img loading="lazy" decoding="async" class="alignleft wp-image-742 size-full" src="https://entwicklungshilfe.nrw/wp-content/uploads/2017/09/m2e-installation-magento.png" alt="" width="671" height="367" srcset="https://entwicklungshilfe.nrw/wp-content/uploads/2017/09/m2e-installation-magento.png 671w, https://entwicklungshilfe.nrw/wp-content/uploads/2017/09/m2e-installation-magento-300x164.png 300w, https://entwicklungshilfe.nrw/wp-content/uploads/2017/09/m2e-installation-magento-300x164@2x.png 600w" sizes="auto, (max-width: 671px) 100vw, 671px" /></p>
<h3>Per Konsole:</h3>
<p>Die Konsole öffnen und in das Verzeichnis in dem das Archiv heruntergeladen wurde&nbsp;wechseln mit dem CD-Befehl(change directory). bsp „CD /Pfad/zu/meinen/Downloads“. Eingabetaste bestätigen.</p>
<p>Über die Eingabe von „ls -la“ in die Console erscheint eine Tabelle in der auch das M2E Pro Archiv sehen sollte.</p>
<p>Nun einen neuen Ordner erstellen, das M2E Pro Archiv in diesen Ordner verschieben und dort entpacken. Wir nennen unseren neuen Ordner „m2e_modul“. Hierzu sind folgenden Befehlen in der Console nötig:</p>
<p>mkdir m2e_modul</p>
<p>mv <em>heruntergeladenesArchiv.tar m2e_modul</em></p>
<p>Jetzt in den neuen Ordner m2e_modul wechseln und das heruntergeladene Archiv entpacken über:</p>
<p>cd m2e_modul</p>
<p>tar -xvf <em>heruntergeladenesArchiv.tar</em></p>
<p>rm -rf&nbsp; <em>heruntergeladenesArchiv.tar</em></p>
<p>Jetzt wird das entpackte Archiv in den Magentoordner verschoben:</p>
<p>cp -R * <em>Pfad/zu/meinem/Magento</em></p>
<p>Nun ist das M2E Pro Modul installiert. Im Magento-Backend sind nun zwei weitere Reiter. „Bei eBay verkaufen“ und „Amazon“ verfügbar.</p>
<p><img loading="lazy" decoding="async" class="alignleft wp-image-739 size-full" src="https://entwicklungshilfe.nrw/wp-content/uploads/2017/09/m2e-backend-magento.png" alt="" width="967" height="151" srcset="https://entwicklungshilfe.nrw/wp-content/uploads/2017/09/m2e-backend-magento.png 967w, https://entwicklungshilfe.nrw/wp-content/uploads/2017/09/m2e-backend-magento-300x47.png 300w, https://entwicklungshilfe.nrw/wp-content/uploads/2017/09/m2e-backend-magento-300x47@2x.png 600w" sizes="auto, (max-width: 967px) 100vw, 967px" /></p>
<p>Davon ausgehend, dass zunächst lokal gearbeitet wurde, müssen die Änderungen natürlich noch auf den Live-Server bzw. Preview Server geschoben werden. Dazu kann man entweder ein FTP-Programm nutzen oder via Versionsverwaltung arbeiten.</p>
<h1><strong>Problembehandlung bei M2E Pro<br />
</strong></h1>
<h2>1) WIe geht man generell mit Error Meldungen in M2E um</h2>
<p>Im Allgemeinen wirft M2E Pro immer eine Fehlernachricht sobald etwas schiefgelaufen ist. Dort seht auch meistens was zu tun ist oder wo nachzuschauen ist. Wenn Sie in Ihrem Backend-Menu den Punkt „Amazon → Protokolle“ wählen, kommen Sie auf eine Seite auf der Sie unter dem Reiter „Angebote“ einen Log finden. Dieser Log speichert alle Ihre Aktivitäten die Sie ausgeführt haben. In der Spalte „Beschreibung“ sollten Sie im Falle eines Errors immer zuerst nachschauen, denn auch da stehen brauchbare Tipps.</p>
<p><img loading="lazy" decoding="async" class="alignleft wp-image-745 size-full" src="https://entwicklungshilfe.nrw/wp-content/uploads/2017/09/m2e-log-magento.png" alt="" width="1004" height="299" srcset="https://entwicklungshilfe.nrw/wp-content/uploads/2017/09/m2e-log-magento.png 1004w, https://entwicklungshilfe.nrw/wp-content/uploads/2017/09/m2e-log-magento-300x89.png 300w, https://entwicklungshilfe.nrw/wp-content/uploads/2017/09/m2e-log-magento-300x89@2x.png 600w" sizes="auto, (max-width: 1004px) 100vw, 1004px" /></p>
<p>Ansonsten können Sie natürlich auch auf die oben in der Einleitung beschriebenen Hilfsmittel zurückgreifen.</p>
<h2>2) Mögliche Issues und Tipps für M2E Pro:</h2>
<p>Errors noch der Konfiguration:</p>
<p>Sollten Sie M2E-Version 6.4.7. installiert haben und es erscheinen noch vor der Konfiguration Php-Erros o.Ä. dann sollten Sie auf 6.4.8 oder höher Updaten. Dazu sollte man nicht den Magento Connect Manager nutzen. Sollten Sie noch nie mit M2E Pro gearbeitet haben und haben dem entsprechen auch keine Policies angelegt können Sie um sicher zu gehen einfach alle M2E-Dateien und Verzeichnisse löschen. Dazu nutzen Sie am besten den Konsolenbefehl:</p>
<p>cd <em>Pfad/zu/meinem/Magentoprojekt</em></p>
<p>find . -name &#8218;*M2e*&#8216; -exec rm -rf {} \</p>
<p>Der Beitrag <a href="https://entwicklungshilfe.nrw/blog/2017/09/19/m2e-pro-installation-einfuehrung/">M2E Pro &#8211; Installation &#038; Einführung Magento 1</a> erschien zuerst auf <a href="https://entwicklungshilfe.nrw">Entwicklungshilfe NRW</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://entwicklungshilfe.nrw/blog/2017/09/19/m2e-pro-installation-einfuehrung/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Recap Meet Magento 2017 &#8211; Leipzig</title>
		<link>https://entwicklungshilfe.nrw/blog/2017/05/25/recap-meet-magento-2017-leipzig/</link>
					<comments>https://entwicklungshilfe.nrw/blog/2017/05/25/recap-meet-magento-2017-leipzig/#respond</comments>
		
		<dc:creator><![CDATA[Andreas Mautz]]></dc:creator>
		<pubDate>Thu, 25 May 2017 14:15:29 +0000</pubDate>
				<category><![CDATA[Magento]]></category>
		<guid isPermaLink="false">http://www.entwicklungshilfe.nrw/blog/?p=667</guid>

					<description><![CDATA[<p>Das war sie, die größte Meet Magento und damit größte Magento Konferenz in ganz Deutschland. Vom 22. bis 23. Mai öffnete die elfte Meet Magento ihre Tore im Leipziger Pentahotel mit mehr als 800 Teilnehmen von Agenturen, Verkäufern, Entwicklern und Personen rund um das gefühlt mittlerweile beliebteste Shopsystem weltweit. Paul Boisvert startet die Meet Magento [&#8230;]</p>
<p>Der Beitrag <a href="https://entwicklungshilfe.nrw/blog/2017/05/25/recap-meet-magento-2017-leipzig/">Recap Meet Magento 2017 &#8211; Leipzig</a> erschien zuerst auf <a href="https://entwicklungshilfe.nrw">Entwicklungshilfe NRW</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Das war sie, die größte <a href="http://de.meet-magento.com/">Meet Magento</a> und damit größte Magento Konferenz in ganz Deutschland. Vom 22. bis 23. Mai öffnete die elfte Meet Magento ihre Tore im Leipziger Pentahotel mit mehr als 800 Teilnehmen von Agenturen, Verkäufern, Entwicklern und Personen rund um das gefühlt mittlerweile beliebteste Shopsystem weltweit.</p>
<h2>Paul Boisvert startet die Meet Magento mit der Keynote über Magento 2</h2>
<p>Nach einem leckeren, jedoch kurzen Frühstück begann der erste Tag der Meet Magento mit einer Keynote von Paul Boisvert, dem Head of Product Management bei Magento. Es stellte die Roadmap für Magento2 vor mit einigen interessanten neuen Features sowie der Advanced-CMS-Integration für die Magento Enterprise Edition und dem wichtigen Hinweis, dass jeglicher Support und dementsprechend auch Sicherheitspatches für Magento 1 ab November 2018 eingestellt wird [Das wurde mittlerweile zurückgeszogen, es soll ein <a href="https://magento.com/blog/magento-news/ongoing-magento-1-support">verlängertes EOL für Magento 1</a> geben]. Seiner Meinung &#8211; und der Stimme ich voll zu &#8211; sollten Shop-Betreiber langsam Magento 2 in Angriff nehmen und sich so für die Zukunft mit einer langfristig unterstützen Version von Magento sicher aufstellen. Deshalb sehe er den Fokus der diesjährigen Meet Magento klar auf Magento 2.</p>
<h2>Gute Desktop Version eines Shops besser als schlechter mobile first Ansatz</h2>
<p>Danach ging es für mich nach kurzem Talk mit alten Bekannten auf der Meet Magento in einen weiteren Vortrag von Jan Sperlich, der mir hochgelobt angekündigt wurde. Und ich muss sagen, ich wurde nicht enttäuscht. Die Kernaussage seiner Präsentation war: eine guter Desktop-Shop ist besser als eine schlechte mobile Website. Er präsentierte in einem Praxisbeispiel seines Unternehmens. Durch gezielte Optimierung der Onlinepräsenz (Desktop Website) und auch Optimierung der Darstellung auf mobilen Endgeräten (ohne dedizierte App) war es möglich, die Conversion Rate des besagten Shops signifikant zu erhöhen. Und zwar anders als mit einer separaten mobilen App. Das ließ den gesamten Saal feststellen, dass Responsive-Design anscheinend immer noch weit vor der Useability oder zumindest der Beliebtheit einer mobilen App liegen.</p>
<h2>Suche das wichtigste Feature in einem Shop</h2>
<p>Eher kurz fassen werde ich mich zu dem Talk von Dr. David Urbansky. Nach einer ausgiebigen Mittagspause mit lauter gesundem Zeugs und leckeren Wraps erzählte uns Dr. David Urbansky etwas über seine Theorie des wichtigsten Online-Shop Features überhaupt &#8211; der Suche.<br />
Seine Kernaussage war, dass die Suche mittlerweile das mit Abstand wichtigste Feature einer Website ist. Er präsentierte eine ca 15 Punkte-Liste welche simple und auch komplexe Funktionen einer Suche enthielt und auf den Prüfstand stellte (Synonymsuche, Fön/Haartrockner, etc.). Ein insgesamt eher komplexer Vortrag mit jedoch auch sehr verständlichen Argumenten und Tipps für die Integration einer guten Suchen in Magento 2. Die Umsetzung ist jedoch seiner Meinung nach (auch durch die Magento Suchimplementierung) verbesserungswürdig. Dem Stimme ich und nicht wenige Leute aus dem Saal zu.</p>
<h2>Nutzerfreundlichkeit für Suchmaschinenfreundlichkeit</h2>
<figure id="attachment_680" aria-describedby="caption-attachment-680" style="width: 1920px" class="wp-caption alignleft"><img loading="lazy" decoding="async" class="wp-image-680 size-full" src="https://entwicklungshilfe.nrw/wp-content/uploads/2017/06/IMG-20170522-WA0001.jpeg" alt="Meet Magento 2017 - Magento 2 im Fokus" width="1920" height="1080" srcset="https://entwicklungshilfe.nrw/wp-content/uploads/2017/06/IMG-20170522-WA0001.jpeg 1920w, https://entwicklungshilfe.nrw/wp-content/uploads/2017/06/IMG-20170522-WA0001-300x169.jpeg 300w, https://entwicklungshilfe.nrw/wp-content/uploads/2017/06/IMG-20170522-WA0001-1024x576.jpeg 1024w, https://entwicklungshilfe.nrw/wp-content/uploads/2017/06/IMG-20170522-WA0001-300x169@2x.jpeg 600w" sizes="auto, (max-width: 1920px) 100vw, 1920px" /><figcaption id="caption-attachment-680" class="wp-caption-text">Meet Magento 2017 &#8211; Magento 2 im Fokus</figcaption></figure>
<p>Der letzte Vortrag für mich an diesem Tag war ein meiner Meinung nach sehr interessanter Vortrag von Mario Jung mit der Kernaussage: Baue die Website für den User und nicht für Google/Bing/Yahoo.<br />
Er stellte eine Liste vor mit seinen 10 Tipps, wie man die Nutzerfreundlichkeit im Shop verbessert. Einige dieser Punkte sind sinnvoll und auch SEO-technisch relevant. Ein Vorschlag von Herr Jung, wie die Implementierung eines Chatbots zur Beantwortung von Kundenfragen halte ich jedoch für etwas gewagt. Den Rest seines Vortrags kann ich nur wärmstens empfehlen, denn er empfiehlt auch Testing, Strukturierung und andere sinnvolle Sachen die PHP/Javascript Programmierer gerne mal vergessen. Alles in allem stimmt seine 10 Punkte Liste und sollte bestimmt einigen Entwicklern helfen. Die Liste möchte ich euch nicht vorenthalten:</p>
<ol>
<li>Biete dem Kunden gewohnte Sachen. (Logo links oben, Cart rechts oben, etc)</li>
<li>Produktfilter und erweiterte Suche anbieten</li>
<li>Chatbot (Automatisiert oder mit Person dahinter)</li>
<li>Ladezeit so gering wie möglich halten</li>
<li>Nicht an aussagekräftigen und individuellen Bildern sparen</li>
<li>Professionelle Produktvideos stellen einen zukünftigen Trend dar</li>
<li>Linkbuilding bringt einen erhöhten Traffic</li>
<li>Arbeite mit Screaming-Tools</li>
<li>Nie aufhören zu testen! (A/B-Tests, Unit, whatever)</li>
<li>Frage andere (Kritik annehmen, eventuell sogar ein feature für Kritikannahme bauen)</li>
</ol>
<p>Nach einem bisschen Small Talk mit anderen Magento Entwicklern, sowie viel Kaffee und einem weiteren kleinen Vortrag ging es dann gegen 19 Uhr zur Aftershowparty. Wie jedes Jahr wurde auch diese Aftershowparty in der Moritzbastei abgehalten und bestach durch eine super Atmosphäre. Gesponsert von <a href="https://maxcluster.de/blog/2017/05/30/rueckblick-auf-die-meet-magento-de-2017/">maxcluster</a> gab es für alle reichlich zu Essen und zu Trinken so viel das Herz begehrte.</p>
<h2>Testautomatisierung und Sicherheit</h2>
<p>Der zweite Tag der Meet Magento begann für mich verspätet. Durch gefühlt 300 Talks mit Entwicklern, Agentur-Chefs und Organizern der Meet Magento wurde am Tag der Aftershowparty bis spät in die Nacht &#8222;genetzwerkt&#8220;. Nach dem die Verleihung des Meet Magento Awards bereits vorbei war, ging es für mich direkt weiter in einen Vortrag von <a href="https://twitter.com/fschmengler">Fabian Schmengler</a> über Test Automation in Magento. Er erläuterte verschiedene Methoden um seine Magento Extensions mit verschiedenen Tests zu prüfen. [Ich habe <a href="http://www.entwicklungshilfe.nrw/blog/frontend-testing-mit-codeception/">hier</a> mal über Codeception als Frontend Testframework gebloggt.] [Gratulation an dieser Stelle noch mal an <a href="https://twitter.com/riconeitzel/status/867094308175962113/">Rico Neitzel </a>für den Meet Magento People Award]<br />
Nach einer Mittagspause und reichlich Kaffee zur Beseitigung der Folgen des Vorabends ging es in einen Vortrag von Anna Völkl. Ihr Talk war zum Thema Sicherheit in Online-Shops bzw. die Verbesserung dieser. Sie zeigte einige jüngere Beispiele auf in denen bei großen Online-Shops kritische Sicherheitslücken gefunden wurden. Zudem erklärte sie Methoden und Maßnahmen zur Verbesserung der Security in Magento Shops und deren Extensions. Trotz softwaretechnischer Fokussierung waren auch Monitoring und Konfiguration des Servers Teil Ihres Talks.</p>
<p>Der letzte Vortrag dieses Tages für mich war von Nils Kattau und handelte von der Optimierung der Sales bzw. der Conversion in Online-Shops. Ein sehr interessanter Vortrag mit einigen Praxisbeispielen der jedoch den Rahmen dieses Posts bei weitem sprengen würde.</p>
<h2>Vorher leider den Hackathon verpasst</h2>
<p>Damit war die Meet Magento für mich auch für dieses Jahr schon vorbei. Schlimm genug dass ich es dieses Jahr wieder nicht auf den <a href="https://shop.firegento.com/">Magento Hackathon</a> geschafft habe. Dieser findet jedes 2-3 Tage vor der Meet Magento statt und sticht mit Community-Coding, viel Club-Mate und noch mehr &#8222;Netzwerken&#8220; heraus.</p>
<p>Der Beitrag <a href="https://entwicklungshilfe.nrw/blog/2017/05/25/recap-meet-magento-2017-leipzig/">Recap Meet Magento 2017 &#8211; Leipzig</a> erschien zuerst auf <a href="https://entwicklungshilfe.nrw">Entwicklungshilfe NRW</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://entwicklungshilfe.nrw/blog/2017/05/25/recap-meet-magento-2017-leipzig/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Entwicklungshilfe NRW schult Team von Online-Marktplatz</title>
		<link>https://entwicklungshilfe.nrw/blog/2016/09/27/entwicklungshilfe-nrw-schult-entwickler-team-von-online-marktplatz/</link>
					<comments>https://entwicklungshilfe.nrw/blog/2016/09/27/entwicklungshilfe-nrw-schult-entwickler-team-von-online-marktplatz/#comments</comments>
		
		<dc:creator><![CDATA[Andreas Mautz]]></dc:creator>
		<pubDate>Tue, 27 Sep 2016 11:18:22 +0000</pubDate>
				<category><![CDATA[Referenzen]]></category>
		<guid isPermaLink="false">http://www.entwicklungshilfe.nrw/blog/?p=623</guid>

					<description><![CDATA[<p>Vergangene Woche war Entwicklungshilfe NRW erfolgreich in Unterfranken im Einsatz. Der in Großwallstadt ansässige Online-Marktplatz für Kfz-Ersatzteile TEILeHABER GmbH hatte für seine Webdeveloper die PHP-Schulung Code Rocker gebucht, um einen ersten Schritt hin in Richtung automatisierter Testverfahren zu machen. Gerade im Webdevelopment erfordern die immer dynamischeren Marktentwicklungen und entsprechend hohen User-Erwartungen ein breites Weiterbildungsangebot für [&#8230;]</p>
<p>Der Beitrag <a href="https://entwicklungshilfe.nrw/blog/2016/09/27/entwicklungshilfe-nrw-schult-entwickler-team-von-online-marktplatz/">Entwicklungshilfe NRW schult Team von Online-Marktplatz</a> erschien zuerst auf <a href="https://entwicklungshilfe.nrw">Entwicklungshilfe NRW</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><strong>Vergangene Woche war Entwicklungshilfe NRW erfolgreich in Unterfranken im Einsatz. Der in Großwallstadt ansässige Online-Marktplatz für Kfz-Ersatzteile TEILeHABER GmbH hatte für seine Webdeveloper die PHP-Schulung Code Rocker gebucht, um einen ersten Schritt hin in Richtung automatisierter Testverfahren zu machen.</strong></p>
<p>Gerade im Webdevelopment erfordern die immer dynamischeren Marktentwicklungen und entsprechend hohen User-Erwartungen ein breites Weiterbildungsangebot für Webentwickler. In Metropolen wie Berlin, München und Köln oder Ballungsräumen wie dem Ruhrgebiet gibt es hierzu zahlreiche Möglichkeiten. Etwas anders sieht es hingegen in strukturschwachen Regionen bzw. abseits der großen Wirtschaftszentren aus. Selbst User Groups sind hier eher rar gesät.</p>
<p>&#8222;Wir sind hier in Großwallstadt schon etwas weit vom Schuss, wenn es um inhaltlich aktuelle Weiterbildungsmöglichkeiten für Webdeveloper geht&#8220;, sagt Philipp Packheiser, Geschäftsführer des Online-Marktplatzes für Kfz-Ersatzteile <a href="https://www.teilehaber.de/" target="_blank">TEILeHABER</a>. &#8222;Unsere Mitarbeiter müssten daher schon ins 50 Kilometer entfernte Frankfurt am Main fahren, um sich auf den neuesten Stand bringen zu lassen.&#8220; Ein Problem, dass sich in ähnlicher Weise auch den Auszubildenden des unterfränkischen Ausbildungsbetriebs stellt, da der Lehrplan der örtlichen Berufsschule aufgrund der eingangs umrissenen Situation naturgemäß immer ein wenig der Zeit hinterherhinkt. &#8222;So betrachtet kommt uns das Vor-Ort-Schulungsangebot von Entwicklungshilfe NRW da sehr entgegen&#8220;, so Packheiser weiter. &#8222;Denn wir halten es für absolut unabdingbar, dass sich unsere Entwickler regelmäßig mit modernen Technologien auseinandersetzen.&#8220;</p>
<h2>Einführung automatisierter Frontend-Tests</h2>
<p>Gesucht hatte das 2007 gegründete Unternehmen unter anderem nach Schulungen zu automatisierten Testings und war über einen Fachbeitrag von Roland Golla im PHP Magazin auf Entwicklungshilfe NRW aufmerksam geworden. Die Wahl fiel auf die <a href="http://www.entwicklungshilfe.nrw/code-rocker/">PHP-Schulung Code Rocker</a>, die eine Art Best-of aus dem gesamten Schulungsangebot ist und einen schnellen Einstieg ins Thema ermöglicht. Mit dem 22. September 2016 wurde dann ein Schulungstermin für zwei Fachinformatiker Anwendungsentwicklung, drei Azubis Anwendungsentwicklung und den Scrum Master von TEILeHABER vereinbart.</p>
<p>&#8222;Wenn man eine Plattform betreibt, auf der zig Millionen einzelne Artikel angeboten werden, dann kommt man mit manuellem Frontend-Testing natürlich nicht allzu weit&#8220;, sagt Golla, der als Dozent vor Ort beim Kunden war. &#8222;Beziehungsweise bindet man dadurch jede Menge Kapazitäten, die man besser woanders einsetzen kann.&#8220; Daher bestand das Ziel der ganztägigen, sehr individuell gehaltenen Schulung zum einen darin, einige wichtige neue Technologien und Tools vorzustellen sowie einen ersten automatisierten Test für den Shop umzusetzen, und zum anderen sollte der Workflow des jungen Teams optimiert werden, um damit die Weichen für <a href="https://de.wikipedia.org/wiki/Kontinuierliche_Integration" target="_blank">Continuous Integration</a> zu stellen.</p>
<h2>Tooling und Set-up signifikant verbessert</h2>
<p>Die Schwerpunkte lagen damit auf den Themen <a href="http://www.entwicklungshilfe.nrw/seminare/codeception/">Codeception Frontend Testing</a> und <a href="http://www.entwicklungshilfe.nrw/seminare/phpstorm-best-practice/">PhpStorm Best Practice</a>. Zudem wurde der <a href="https://phpmd.org/" target="_blank">PHP Mess Detector</a> vorgestellt und eingesetzt. Mit diesem lassen sich Probleme im bestehenden Code aufspüren, darunter etwa Flüchtigkeitsfehler. Alles sehr praxisnah und ganz am aktuellen Bedarf des Kunden orientiert. Die größtmögliche Praxisnähe ist ja seit jeher der Kerngedanke von Entwicklungshilfe NRW: Somit sollen die geschulten Teams in die Lage versetzt werden, das neue Wissen sofort praktisch ein- und umsetzen zu können.</p>
<p>&#8222;Der Tag ist echt super gelaufen&#8220;, befindet Golla. &#8222;Die Jungs haben sehr gut mitgemacht und das neue Wissen nur so aufgesaugt. Ich denke, dass ich dem Entwickler-Team von TEILeHABER schon mit diesem ersten Schritt entscheidend weiterhelfen konnte.&#8220; Seiner Einschätzung nach wurde das Tooling und Set-up des Teams dadurch signifikant verbessert. Eine Einschätzung, die Packheiser rundum teilt: &#8222;Wir sind mehr als zufrieden mit dem Ergebnis und können uns gut vorstellen, auch in Zukunft das Weiterbildungsangebot von Entwicklungshilfe NRW zu nutzen.&#8220;</p>
<p><em><a href="http://www.entwicklungshilfe.nrw/" target="_blank">Hier erfahrt ihr mehr über das PHP-Schulungsangebot von Entwicklungshilfe NRW.</a></em></p>
<p>Der Beitrag <a href="https://entwicklungshilfe.nrw/blog/2016/09/27/entwicklungshilfe-nrw-schult-entwickler-team-von-online-marktplatz/">Entwicklungshilfe NRW schult Team von Online-Marktplatz</a> erschien zuerst auf <a href="https://entwicklungshilfe.nrw">Entwicklungshilfe NRW</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://entwicklungshilfe.nrw/blog/2016/09/27/entwicklungshilfe-nrw-schult-entwickler-team-von-online-marktplatz/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Magento-Performance: Flaschenhälse</title>
		<link>https://entwicklungshilfe.nrw/blog/2016/05/13/magento-performance-flaschenhaelse/</link>
					<comments>https://entwicklungshilfe.nrw/blog/2016/05/13/magento-performance-flaschenhaelse/#comments</comments>
		
		<dc:creator><![CDATA[Andreas Mautz]]></dc:creator>
		<pubDate>Fri, 13 May 2016 10:00:41 +0000</pubDate>
				<category><![CDATA[Magento]]></category>
		<guid isPermaLink="false">http://www.entwicklungshilfe.nrw/blog/?p=560</guid>

					<description><![CDATA[<p>Magento-Performance steigern: Der Weg zur erfolgreichen Ladezeit-Optimierung In diesem Artikel befassen wir uns mit den mit der Ladezeit-Optimierung von Magento Shopsystemen. Magento ist ein umfangreiches Shopsystem und ist in bestimmten Konfigurationen anfällig für Performance-Probleme. Die fünf größten Fehler mit teils massiven Auswirkungen auf die Magento-Performance haben wir hier für euch aufgelistet und erklären mögliche Lösungen. [&#8230;]</p>
<p>Der Beitrag <a href="https://entwicklungshilfe.nrw/blog/2016/05/13/magento-performance-flaschenhaelse/">Magento-Performance: Flaschenhälse</a> erschien zuerst auf <a href="https://entwicklungshilfe.nrw">Entwicklungshilfe NRW</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Magento-Performance steigern: Der Weg zur erfolgreichen Ladezeit-Optimierung</h2>
<p>In diesem Artikel befassen wir uns mit den mit der Ladezeit-Optimierung von <a href="https://magento.com" target="_blank" rel="noopener noreferrer">Magento</a> Shopsystemen. Magento ist ein umfangreiches Shopsystem und ist in bestimmten Konfigurationen anfällig für Performance-Probleme. Die fünf größten Fehler mit teils massiven Auswirkungen auf die Magento-Performance haben wir hier für euch aufgelistet und erklären mögliche Lösungen.</p>
<h2>Die 5 häufigsten Fehler bei der Ladezeit-Optimierung</h2>
<p><strong>1) Ladezeit-Optimierung durch Verwendung der richtigen Festplatte</strong></p>
<p>Magento ist wie schon erwähnt ein umfangreiches System welches in der Ausführung &#8222;Community Edition&#8220; mehr als 15.000 Dateien beinhaltet. Das auf <a href="http://php.net/" target="_blank" rel="noopener noreferrer">PHP</a> basierende Shopsystem arbeitet mit zahlreichen Funktionen, welche die Festplatte massiv beanspruchen. Dazu gehören das Schreiben in Logfiles (access, system, exception log), das Anfordern von Files (require, file_get_contents) und das Laden von Daten aus der Datenbank. Der Einsatz einer SSD anstelle einer HDD lohnt sich beim professionellen Einsatz von Magento umso mehr, da die Magento-Performance drastisch verbessert wird.</p>
<p><img decoding="async" src="http://www.entwicklungshilfe.nrw/blog/wp-content/uploads/2016/05/hddssd.png" alt="HDD vs SSD" /></p>
<p><a href="https://blog.amasty.com/amasty-research-what-server-optimizations-for-magento-really-work/">Bildquelle: https://blog.amasty.com</a></p>
<p><strong>2) Ladezeit-Optimierung durch Verwendung eines Caches</strong></p>
<p>Magento benutzt wie die meisten großen System ein internes System zum Cachen von Daten, um die Ladezeit zu verkürzen. Es können verschiede Cache-Arten verwendet werden, welche nachfolgende Vorteile und Nachteile mit sich bringen. Wir werden dies anhand von 3 Beispielen kurz erläutern.</p>
<p><strong>2.1) APC / Memcached</strong></p>
<p>Diese beiden Cache-Arten benutzen den internen Speicher (RAM) des Servers zum Cachen der Daten von Magento. Der Nachteil dieser beiden Cache-Varianten ist, dass RAM zum Beispiel auf einem Shared Server nur in Maßen zur Verfügung steht und sparsam damit umgegangen werden muss. Der Vorteil ist dass diese Cache-Arten relativ schnell sind, da sie kleine Datenmengen aus dem RAM schnell ausliefern können.</p>
<p><strong>2.2) Der Datenbankcache</strong></p>
<p>Der Datenbankcache ist eine separate Cache-Art und kann unabhängig von den beiden anderen Cache-Arten benutzt werden. Dieser Cache ist zuständig für das Zwischenspeichern von öfter ausgeführten Queries die sich ansonsten mit minimalen Änderungen wiederholen würden. Magento speichert diese Art von Anfrage im RAM zwischen und führt diese dann aus ohne jedes mal erneut mehrere Datenbankabfragen an den Server zu stellen. Der Datenbankcache kann bei genügend vorhandenem RAM oder schnellem Festplattenspeicher zu einer signifikanten Optimierung der Ladezeit führen, da Magento mehrere Queries pro Seitenaufruf benötigt und diese eingespart werden können.</p>
<p><strong>2.3) Der Filecache</strong></p>
<p>Dieser Cache benutzt das interne Dateisystem zum Vorhalten der Daten. Die Vorzüge dieser Cache-Art ist, dass er in Kombination mit einer SSD sehr schnell ist und die üblichen RAM limits von APC / Memcache getrost ignorieren kann, da er lediglich ein wenig Festplattenkapazität voraussetzt. Der Nachteil jedoch ist, dass diese Art von Cache ohne eine SSD extrem langsam ist. Wie beim Datenbankcache wird der Filecache das gesamte System ohne eine SSD mehr ausbremsen als beschleunigen.</p>
<p><em>Seit der Version 5.5 von PHP wird Zends sogenannter OpCache (Opcode-Cache) mitgeliefert und standardmäßig installiert. Dieser Opcode-Cache ist schnell und kostengünstig in der RAM-Benutzung. Sollte PHP 5.5 oder höher auf dem Magento System installiert sein, empfiehlt es sich den von PHP mitgelieferten OpCache in Kombination mit dem Filecache zu benutzen, sofern eine SSD vorhanden ist.</em></p>
<p><strong>3) SQL Statements</strong></p>
<p>Ein nicht zu verachtender weiterer Punkt in der Liste der Performance-Flaschenhälse sind SQL Statements. Dabei geht es hier nicht um eine bestimmte Art von SQL Statements, sondern um deren Verwendung. Das folgende Beispiel ist ein Auszug aus einem Magento Modul welches 9 Produkte einer Kategorie per AJAX nachlädt und im späteren Verlauf verarbeitet und ausgibt.</p>
<pre class="lang:default decode:true " title="Model innerhalb der Schleife (Falsch)">foreach ($this-&gt;getProductIds() as $productId){
    $product = Mage::getModel('catalog/product')-&gt;load($productId);
    $this-&gt;processProduct($product);
}</pre>
<p>Wie im Code zu sehen ist, werden bei jedem Aufruf des PHP-Skripts die Produkt-IDs geladen und dann in einer foreach Schleife das jeweilige Produktmodel geladen. Das Problem dabei ist, dass jedes Produktmodel einzeln geladen wird und für jedes dieser Produkte mehrere Queries verwendet werden. Bei einer Anzahl von 500 Produkten sind wir somit bei sage und schreibe ca 2500-5000 SQL-Queries, je nachdem wie viele Attribute die besagten Produkte besitzen. Der richtige Weg unter Berücksichtigung der Magento-Performance und Logik sieht wie folgt aus:</p>
<pre class="lang:default decode:true " title="Model außerhalb der Schleife (Richtig)">$collection = Mage:getResourceModel('catalog/product_collection')
    -&gt;addFieldsToFilter('entity_id', array($this-&gt;getProductIds()))
    -&gt;addAttributeToSelect(array('name'));

foreach ($collection as $product){
    $this-&gt;processProduct($product);
}</pre>
<p>Hier wird die ganze Produktkollektion nur ein mal geladen. Nachdem die Filter hinzugefügt wurden, werden die Produkte dann mit einer Schleife über die $collection variable verarbeitet. In diesem Code werden maximal ein bis zwei Dutzend SQL queries verwendet, was sich spürbar auf die gesamte Ladezeit der Seite auswirkt.</p>
<p><a href="http://labs.octivi.com/10-worst-magento-practices/">Quelle Beispiel: http://labs.octivi.com/ (Bad SQL Queries)</a></p>
<p><strong>4) Ladezeit-Optimierung durch Verwendung vorgerenderter Bilder</strong></p>
<p>Magento wird in seiner Standard-Konfiguration mit zahlreichen Bilder ausgeliefert. Sobald ein Shopbetreiber seine Produkte und dazugehörige Bilder anlegt, ist man schnell bei ~20-30 Bildern pro Kategorieseite und noch mehr Bildern auf der Produktdetailseite angelangt. Je nach Berücksichtigung der durchschnittlichen Bildgröße, so um die ~0.5-2 Megabyte an Daten betragen dürfte. Auch Bilder welche in ihrer Dimension zu groß sind, sollten vor dem Verwenden verkleinert werden, um so wertvolle Bandbreite zu sparen und mobile Shopbesucher nicht mit größeren Datenvolumen zu belasten. Die richtige Größe der Bilder sowie deren Optimierung durch ein externes Werkzeug wie <a href="http://optipng.sourceforge.net/" target="_blank" rel="noopener noreferrer">optipng</a> bewirken eine schnellere Ladezeit der Seite durch weniger Datenvolumen und macht sich schnell auch im praktischen Testen bemerkbar.</p>
<figure id="attachment_521" aria-describedby="caption-attachment-521" style="width: 150px" class="wp-caption alignleft"><img loading="lazy" decoding="async" class="wp-image-521 size-thumbnail" src="https://entwicklungshilfe.nrw/wp-content/uploads/2016/03/transport-1208189_1920-150x150.jpg" alt="Bettwäsche Bild unkomprimiert (112 kilobytes)" width="150" height="150" srcset="https://entwicklungshilfe.nrw/wp-content/uploads/2016/03/transport-1208189_1920-150x150.jpg 150w, https://entwicklungshilfe.nrw/wp-content/uploads/2016/03/transport-1208189_1920-150x150@2x.jpg 300w" sizes="auto, (max-width: 150px) 100vw, 150px" /><figcaption id="caption-attachment-521" class="wp-caption-text"><br />Bettwäsche Bild unkomprimiert (112 Kilobyte)</figcaption></figure>
<figure id="attachment_521" aria-describedby="caption-attachment-521" style="width: 150px" class="wp-caption alignleft"><img loading="lazy" decoding="async" class="wp-image-521 size-thumbnail" src="https://entwicklungshilfe.nrw/wp-content/uploads/2016/03/transport-1208189_1920-150x150.jpg" alt="Bettwäsche Bild komprimiert via http://tinypng.org/ (42 kilobytes)" width="150" height="150" srcset="https://entwicklungshilfe.nrw/wp-content/uploads/2016/03/transport-1208189_1920-150x150.jpg 150w, https://entwicklungshilfe.nrw/wp-content/uploads/2016/03/transport-1208189_1920-150x150@2x.jpg 300w" sizes="auto, (max-width: 150px) 100vw, 150px" /><figcaption id="caption-attachment-521" class="wp-caption-text"><br />Bettwäsche Bild komprimiert via http://tinypng.org/ (42 Kilobyte)</figcaption></figure>
<p><strong>5) Steigerung der Magento-Performance durch Verwendung der neuesten PHP Version.</strong></p>
<p>PHP hat seit Version 5.5 einen enormen Geschwindigkeitszuwachs erhalten. Jetzt, mit Version 7.0, ist die Sprache auf der Magento sein Grundgerüst aufbaut sogar doppelt so schnell wie sein Vorgänger PHP 5.5 bzw 5.6 und somit um ein Vielfaches schneller als das <a href="http://w3techs.com/technologies/details/pl-php/all/all" target="_blank" rel="noopener noreferrer">immer noch weit verbreitete PHP 5.4</a>. Deshalb ist es empfehlenswert bei einer Magento-Installation, mindestens PHP in der Version 5.5 bzw 5.6 auf dem Server installiert zu haben. Der eingebaute Zend OpCache ab Version 5.5 beschleunigt einen frisch installierten Magento Shop um bis zu ~40% ohne jegliche Änderungen an der Konfiguration oder der Hardware. PHP Version 7.0 steigert diesen Geschwindigkeitszuwachs noch einmal um satte 100% durch die effektivere Handhabung von Arrays und großen Objekten, von welchen Magento durchweg exzessiven Gebrauch macht. Eine Magento-Installation mit PHP 7.0 lädt im Vergleich zu einer Magento installation mit PHP 5.4 um bis zu 1.6 Sekunden schneller.</p>
<p><img loading="lazy" decoding="async" class="alignnone" src="http://www.entwicklungshilfe.nrw/blog/wp-content/uploads/2016/05/magento1.9_php7_response_time-1.png" alt="Magento Antwortzeit mit PHP 7.0" width="24" height="24" /></p>
<p><a href="https://www.mgt-commerce.com/blog/php-7-the-next-big-thing-for-magento/">Bildquelle: https://www.mgt-commerce.com/blog/</a></p>
<h2>Fazit</h2>
<p>Durch Befolgen der genannten 5 Aspekte kann man ohne viel Aufwand bereits eine spürbare Steigerung der Magento-Performance erreichen. Natürlich gibt es weitere Punkte, welche die Geschwindigkeit einer Magento-Installation beschleunigen können. Wir haben uns hier jedoch auf die Punkte mit den prozentual größten Geschwindigkeitseinbußen bei Missachtung konzentriert.</p>
<p>Der Beitrag <a href="https://entwicklungshilfe.nrw/blog/2016/05/13/magento-performance-flaschenhaelse/">Magento-Performance: Flaschenhälse</a> erschien zuerst auf <a href="https://entwicklungshilfe.nrw">Entwicklungshilfe NRW</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://entwicklungshilfe.nrw/blog/2016/05/13/magento-performance-flaschenhaelse/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>JavaScript-Optimierung in Magento</title>
		<link>https://entwicklungshilfe.nrw/blog/2016/05/06/javascript-optimierung-magento/</link>
					<comments>https://entwicklungshilfe.nrw/blog/2016/05/06/javascript-optimierung-magento/#respond</comments>
		
		<dc:creator><![CDATA[Andreas Mautz]]></dc:creator>
		<pubDate>Fri, 06 May 2016 10:00:20 +0000</pubDate>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Magento]]></category>
		<guid isPermaLink="false">http://www.entwicklungshilfe.nrw/blog/?p=480</guid>

					<description><![CDATA[<p>Magento, eines der meist verbreitesten Shop-Systeme hat ein gravierendes und lange bekanntes Problem mit dem Umgang mit JavaScript &#8211; wir erklären euch unsere Probleme der JavaScript-Optimierung bei Magento. Einige Magento-Entwickler werden mit hoher Wahrscheinlichkeit schon einmal an dem Punkt angelangt sein, wo der Kunde entweder nach einer Verbesserung der Shop-Ladezeit gefragt hat, oder andere entsprechende [&#8230;]</p>
<p>Der Beitrag <a href="https://entwicklungshilfe.nrw/blog/2016/05/06/javascript-optimierung-magento/">JavaScript-Optimierung in Magento</a> erschien zuerst auf <a href="https://entwicklungshilfe.nrw">Entwicklungshilfe NRW</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><a href="https://magento.com" target="_blank" rel="noopener noreferrer">Magento</a>, eines der <a href="http://www.onlineshop-basics.de/ecommerce-studie/shopsoftware.php" target="_blank" rel="noopener noreferrer">meist</a> <a href="http://cometrics.co/statistics/magento-usage/" target="_blank" rel="noopener noreferrer">verbreitesten</a> Shop-Systeme hat ein gravierendes und lange bekanntes Problem mit dem Umgang mit JavaScript &#8211; wir erklären euch unsere Probleme der JavaScript-Optimierung bei Magento. Einige Magento-Entwickler werden mit hoher Wahrscheinlichkeit schon einmal an dem Punkt angelangt sein, wo der Kunde entweder nach einer Verbesserung der Shop-Ladezeit gefragt hat, oder andere entsprechende Maßnahmen zur Erhöhung seiner Performance oder Ähnlichem gefordert hat.</p>
<p>Eine Standard Magento Konfiguration wird bereits mit über 20 JavaScript-Dateien ausgeliefert. Somit ist für die meisten Entwickler schnell klar, dass die Reduzierung des JavaScripts oder dessen Zusammenführung in einer Datei anstatt 20 einen Geschwindigkeitsvorteil und eine bessere Performance bringen wird. Verbunden ist dies mit vergleichsweise wenig Aufwand im Gegenteil zu anderen Optimierungsmaßnahmen. Für solche Fälle bietet Magento standardmäßig die Funktion &#8222;JavaScript-Dateien kombinieren&#8220;, welche jedoch mehr Nachteile als Vorteile mit sich bringt. Die Nachteile werden wir in diesem Blogpost anhand von drei Beispielen detailliert erläutern.</p>
<h2>Die Ausgangssituation:</h2>
<p>Bei der Verwendung des von Magento bereitgestellten Features werden alle JavaScript-Dateien in einer Datei kombiniert, aus der Größe des Contents einen Hash generiert und als Datei abgespeichert. In unseren weiteren Beispielen benutzen wir anstatt der Hashes einfache Namen wie zum Beispiel &#8222;abc.js&#8220; und &#8222;xyz.js&#8220;. Die Magento-Entwickler haben bei der Implementierung ihres Features jedoch einige zum Teil gravierende Fehler nicht berücksichtigt.</p>
<h3>Fehler 1: Minimierte oder kombinierte JavaScript-Dateien können den ganzen Shop unbenutzbar machen!</h3>
<p>Sobald 2-3 minimierte JavaScript-Dateien in das bestehende Shopsystem integriert werden, treten bereits die ersten Probleme auf.<br />
Auch wenn der Entwickler auf die Idee kommen sollte Magentos JavaScript-Dateien zu komprimieren, wird es unter Umständen zu Fehlern kommen.<br />
Das Problem an der Sache ist der Coding-Style der Magento Entwickler. JavaScript ermöglicht es beendete Funktionen ohne Semikolon abzuschließen, wovon die Magento Entwickler sehr oft Gebrauch machen. Sollte nun ein Entwickler die Magento JavaScript-Dateien zur Performance- und/oder Ladezeitoptimierung komprimieren und die Kombinierfunktion einschalten, entstehen dadurch kritische Fehler.</p>
<p>Durch das Komprimieren der Dateien schrumpft der Dateiinhalt auf exakt eine Zeile. Sobald beispielsweise eine &#8222;var&#8220; Deklaration am Anfang der zweiten Datei steht und in der ersten Datei eine Funktion ohne abschließendes Semikolon beendet wurde (was in 95% der Fälle zutrifft), wird der Code fehlerhaft geparsed und beide Dateien verlieren Ihre eigentliche Funktionalität.</p>
<h3>Fehler 2: Kombinieren der JavaScript-Dateien birgt das Risiko, die Ladezeit der Seite zu erhöhen!</h3>
<p>Jetzt fragen sich sicherlich einige, wie dass denn überhaupt möglich ist wenn man doch anstatt 20 Dateien nur noch eine lädt und somit die HTTP-Requests in Folge der JavaScript-Optimierung massiv gesunken sind. Die Frage lässt sich durch ein einfaches Beispiel illustrieren. Nehmen wir an, auf der Startseite des Shops werden die JavaScript-Dateien &#8222;abc.js&#8220; und &#8222;xyz.js&#8220; geladen. Diese Dateien werden überall geladen. Nach dem Aktivieren der Kombination werden diese zu (Beispiel) &#8222;abcdef.js&#8220; kombiniert. Wenn der Nutzer die Startseite besucht wird die Datei einmal ausgeliefert und danach gecached. So weit, so gut. Sollte der Nutzer jedoch eine Produktseite besuchen, welche außer &#8222;abc.js&#8220; und &#8222;xyz.js&#8220; auch noch &#8222;foo.js&#8220; und &#8222;bar.js&#8220; benötigt, wird nochmals eine kombinierte Datei erstellt (Beispiel) &#8211; &#8222;ghijkl.js&#8220;. Da der Nutzer bereits die beiden ersten Dateien im Cache hat, muss der Browser jetzt unnötiger Weise trotzdem beide Dateien in Form von ghijkl.js ausliefern, welche auch &#8222;foo.js&#8220; und &#8222;bar.js&#8220; enthält.</p>
<h3>Fehler 3: Massiver Overhead ohne jeglichen Nutzen bei Verwendung von Protokollen wie SPDY oder HTTP/2</h3>
<p>Falls der Shopbetreiber bzw. dessen Entwickler einen Server betreiben, welcher die Protokolle SPDY oder dessen standardisierten Nachfolger HTTP/2 benutzt, ist die ganze Kombination von JavaScript-Dateien als JavaScript-Optimierung mehr Nachteil als Vorteil. Die HTTP/2 Spezifikation erlaubt es, parallel in nur einer einzigen HTTP-Request JavaScript-Dateien auszuliefern. Je nach Größe und Masse der einzubindenden JavaScript-Dateien kann dies beim Kombinieren zu erheblichen Leistungseinbußen führen. Angenommen ein großer Shop hat 40 JavaScript-Dateien, wobei einer dieser Dateien eine für JavaScript gigantische Größe von 700 Kilobytes hat. Diese Datei wird beim Kombinieren jedes mal gelesen und wieder in die kombinierte Datei geschrieben. Dieser Overhead ist bei der Verwendung von SPDY oder HTTP/2 unnötig und verursacht eine deutlich spür- und messbare Erhöhung der &#8222;Time To First Byte&#8220;, die Zeit die der Shop zum Senden des ersten Bytes an den User braucht.</p>
<h2>Testszenarien und Auswertungen der JavaScript-Optimierung</h2>
<p>Die hier gezeigten Ausschnitte des Testtools <a href="http://www.webpagetest.org/" target="_blank" rel="noopener noreferrer">Webpagetest</a> sollen lediglich der Illustration des Ladevorgangs dienen.<br />
Die Zeiten der einzelnen Dateien sind hier nicht wirklich relevant, da wir kein wiederhol- und überprüfbares Testsetup aufgesetzt haben. Das soll in einem späteren Thread aber folgen.</p>
<p><strong>Ladevorgang bei Verwendung von HTTP/1.1</strong></p>
<figure id="attachment_551" aria-describedby="caption-attachment-551" style="width: 476px" class="wp-caption alignleft"><img loading="lazy" decoding="async" class="wp-image-551 size-full" src="https://entwicklungshilfe.nrw/wp-content/uploads/2016/05/http1_unmerged.png" alt="ohne JavaScript-Optimierung" width="476" height="784" srcset="https://entwicklungshilfe.nrw/wp-content/uploads/2016/05/http1_unmerged.png 476w, https://entwicklungshilfe.nrw/wp-content/uploads/2016/05/http1_unmerged-182x300.png 182w, https://entwicklungshilfe.nrw/wp-content/uploads/2016/05/http1_unmerged-182x300@2x.png 364w" sizes="auto, (max-width: 476px) 100vw, 476px" /><figcaption id="caption-attachment-551" class="wp-caption-text">ohne JavaScript-Optimierung</figcaption></figure>
<p><strong>Ladevorgang bei Verwendung von HTTP/1.1 mit Kombinierungstool</strong></p>
<figure id="attachment_550" aria-describedby="caption-attachment-550" style="width: 756px" class="wp-caption alignleft"><img loading="lazy" decoding="async" class="wp-image-550 size-full" src="https://entwicklungshilfe.nrw/wp-content/uploads/2016/05/http1_merged.png" alt="JavaScript-Optimierung - einfaches Kombinieren" width="756" height="334" srcset="https://entwicklungshilfe.nrw/wp-content/uploads/2016/05/http1_merged.png 756w, https://entwicklungshilfe.nrw/wp-content/uploads/2016/05/http1_merged-300x133.png 300w, https://entwicklungshilfe.nrw/wp-content/uploads/2016/05/http1_merged-300x133@2x.png 600w" sizes="auto, (max-width: 756px) 100vw, 756px" /><figcaption id="caption-attachment-550" class="wp-caption-text">JavaScript-Optimierung &#8211; einfaches Kombinieren</figcaption></figure>
<p><strong>Ladevorgang bei Verwendung von HTTP/2</strong></p>
<figure id="attachment_543" aria-describedby="caption-attachment-543" style="width: 420px" class="wp-caption alignleft"><img loading="lazy" decoding="async" class="wp-image-543 size-full" src="https://entwicklungshilfe.nrw/wp-content/uploads/2016/05/nonmerged_http2.png" alt="JavaScript-Optimierung durch Verwendung von http/2" width="420" height="887" srcset="https://entwicklungshilfe.nrw/wp-content/uploads/2016/05/nonmerged_http2.png 420w, https://entwicklungshilfe.nrw/wp-content/uploads/2016/05/nonmerged_http2-142x300.png 142w, https://entwicklungshilfe.nrw/wp-content/uploads/2016/05/nonmerged_http2-142x300@2x.png 284w" sizes="auto, (max-width: 420px) 100vw, 420px" /><figcaption id="caption-attachment-543" class="wp-caption-text">JavaScript-Optimierung durch Verwendung von http/2</figcaption></figure>
<p><strong>Ladevorgang bei Verwendung von HTTP/2 mit Kombinierungstool</strong></p>
<figure id="attachment_546" aria-describedby="caption-attachment-546" style="width: 574px" class="wp-caption alignnone"><img loading="lazy" decoding="async" class="wp-image-546 size-full" src="https://entwicklungshilfe.nrw/wp-content/uploads/2016/05/merged_http2-1.png" alt="Kombinierte JavaScript-Dateien und http/2" width="574" height="53" srcset="https://entwicklungshilfe.nrw/wp-content/uploads/2016/05/merged_http2-1.png 574w, https://entwicklungshilfe.nrw/wp-content/uploads/2016/05/merged_http2-1-300x28.png 300w" sizes="auto, (max-width: 574px) 100vw, 574px" /><figcaption id="caption-attachment-546" class="wp-caption-text">Kombinierte JavaScript-Dateien und http/2</figcaption></figure>
<h2>Fazit</h2>
<p>Trotz eines eingebauten JavaScript-Kombinierungstools ist es nicht ohne Weiteres möglich, Magentos eingebaute Performance Tools wie &#8222;JavaScript-Dateien kombinieren&#8220; in einem produktivem Umfeld ohne ausgiebiges manuelles Testen zu benutzen. Es können schnell unverschuldet Fehler entstehen, welche die ganze Seite unbenutzbar machen. Des weiteren kann bei Benutzung von Magentos Funktion schnell eine Erhöhung der Seiten-Ladezeit anstatt der gewünschten Reduzierung eintreten.</p>
<p>Der Beitrag <a href="https://entwicklungshilfe.nrw/blog/2016/05/06/javascript-optimierung-magento/">JavaScript-Optimierung in Magento</a> erschien zuerst auf <a href="https://entwicklungshilfe.nrw">Entwicklungshilfe NRW</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://entwicklungshilfe.nrw/blog/2016/05/06/javascript-optimierung-magento/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>git-flow &#8211; das Branching-Modell</title>
		<link>https://entwicklungshilfe.nrw/blog/2016/04/29/git-flow-branching-model/</link>
					<comments>https://entwicklungshilfe.nrw/blog/2016/04/29/git-flow-branching-model/#respond</comments>
		
		<dc:creator><![CDATA[Andreas Mautz]]></dc:creator>
		<pubDate>Fri, 29 Apr 2016 10:00:41 +0000</pubDate>
				<category><![CDATA[Deployment]]></category>
		<category><![CDATA[Development]]></category>
		<guid isPermaLink="false">http://www.entwicklungshilfe.nrw/blog/?p=475</guid>

					<description><![CDATA[<p>In diesem Artikel befassen wir uns mit dem Aufsetzen und der Handhabung von Branches (Zweigen). Wir gehen davon aus, dass du als Leser genug Erfahrung mit der Installation und Handhabung von einfachen Git-Features wie commit, push, und pull hast. In der Welt der Versionskontrollsysteme ist Git mit Abstand eines der effektivsten und einfachsten Tools die [&#8230;]</p>
<p>Der Beitrag <a href="https://entwicklungshilfe.nrw/blog/2016/04/29/git-flow-branching-model/">git-flow &#8211; das Branching-Modell</a> erschien zuerst auf <a href="https://entwicklungshilfe.nrw">Entwicklungshilfe NRW</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>In diesem Artikel befassen wir uns mit dem Aufsetzen und der Handhabung von Branches (Zweigen). Wir gehen davon aus, dass du als Leser genug Erfahrung mit der Installation und Handhabung von einfachen Git-Features wie commit, push, und pull hast.</p>
<p>In der Welt der Versionskontrollsysteme ist <a href="https://git-scm.com/">Git</a> mit Abstand eines der effektivsten und einfachsten Tools die uns zur Verfügung stehen, um unseren Arbeitsalltag bzw. unseren Workflow zu optimieren. In diesem Artikel zeigen wir euch, wir ihr Git mit git-flow effektiver nutzt.</p>
<h1>Git Branching</h1>
<p>Wir gehen in unserem Beispiel davon aus, dass zwei neue Features für unser aktuelles Projekt geplant sind. Diese wollen wir, ohne uns als Entwickler gegenseitig auf die Füße zu treten, zeitgleich erledigen.</p>
<p>Dafür gibt es in Versionskontrollsysteme sogenannte Branches. Bei Git enthält jeder Branch eine eigene Kopie des jeweiligen Repositories zum Zeitpunkt der Erstellung des Branches. Den Verlauf einer Feature-Entwicklung im normalen Git-Workflow erklärt der nächste Absatz. Person A erstellt hier zum Beispiel eine Navigation speziell für Smartphones in unserem Projekt.</p>
<h2>Einfacher Workflow ohne Branching-Modell:</h2>
<p>Als erstes beziehen (clonen) wir das Git-Respository vom Server, um eine lokale Kopie des gesamten Projektes zu erhalten. In diesem wird nun auf dem Hauptbranch (Master) das Feature &#8222;Smartphone Navigation&#8220; nach und nach programmiert. Die Schritte schliessen jeweils mit commit und anschliessendem push der Änderungen an das globale Repository ab. Die Webseite auf dem Produktions-Server wird anschliessend mit einem pull aktualisiert.</p>
<p><b>Das Problem an diesem Beispiel ist Folgendes:</b><br />
Sobald eine weitere Person am selben Projekt arbeitet kann es zu Überschneidungen kommen. Angenommen Person A arbeitet an der Smartphone Navigation während Person B einen wichtigen Bugfix einspielt. Dadurch, dass Person B seinen Bugfix so schnell wie möglich auf der Live-Instanz des Projektes haben will, wird nach dem Hinzufügen des Bugfixes sofort der Master-Branch auf den neusten Stand gebracht. Das hat die Nebenwirkung zur Folge, dass auch Teile des Codes von Person A auf den Live-Server geladen werden und somit Probleme bzw. Fehler produzieren werden, da man nicht sicher sein kann, dass Person A seine Arbeit beendet hat. Und seien wir ehrlich &#8211; in Projekten mit mehr als einem Entwickler kommt es IMMER zu solchen Zuständen.</p>
<figure id="attachment_521" aria-describedby="caption-attachment-521" style="width: 150px" class="wp-caption alignleft"><img loading="lazy" decoding="async" class="wp-image-521 size-thumbnail" src="https://entwicklungshilfe.nrw/wp-content/uploads/2016/03/transport-1208189_1920-150x150.jpg" alt="Mit git-flow effektiver arbeiten" width="150" height="150" srcset="https://entwicklungshilfe.nrw/wp-content/uploads/2016/03/transport-1208189_1920-150x150.jpg 150w, https://entwicklungshilfe.nrw/wp-content/uploads/2016/03/transport-1208189_1920-150x150@2x.jpg 300w" sizes="auto, (max-width: 150px) 100vw, 150px" /><figcaption id="caption-attachment-521" class="wp-caption-text">Mit git-flow effektiver arbeiten</figcaption></figure>
<h2>Lösungsansatz mit Git und einem einfachen Branching-Modell</h2>
<p>Um solche Probleme zu umgehen hat man in Git die Möglichkeit einen oder mehrere Branches zu erstellen. Ein Branch ist eine Abzweigung der Codebasis zu einem bestimmten Punkt. Ab diesem Punkt kann man auf seinem Zweig (Branch) parallel zum Beispiel zum Hauptstrang in Ruhe entwicklen und erst das fertige Feature wieder zurück mergen.</p>
<p>Hier ein Beispiel:<br />
Person A möchte eine Navigation für Smartphones erstellen ohne jemandem in die Quere zu kommen und geht jetzt wie folgt vor:<br />
Git-Repository vom Server ziehen für eine lokale Kopie des gesamten Projektes. Neuen Branch erstellen mit dem Namen &#8222;develop&#8220;.<br />
Auf diesem Branch kann jetzt unabhängig von anderen Branches weiter gearbeitet werden. Jegliche Änderung auf dem neu erstellten Branch wird zunächst keinerlei Auswirkung auf andere Branches haben. Sobald das neue Feature fertig ist, wird Person A seine Änderungen pushen und seine Änderungen in den Hauptbranch &#8222;mergen&#8220; (zusammenführen).<br />
Dieses Merging vom Branch &#8222;develop&#8220; in den Hauptbranch des Projektes bewirkt, dass alle Änderungen im Smartphone Branch nun auch auf dem Hauptzweig des gesamten Projektes verfügbar sind.</p>
<p>Sollte während der Entwicklungszeit der Smartphone-Navigation Person B einen kritischen Bugfix in den Hauptbranch pushen, kann der Administrator ohne Einfluss der Codeänderungen für die Smartphone-Navigation den Hauptbranch updaten. Der Bugfix der auf dem Hauptbranch von Person B eingefügt wird, hat keinerlei Auswirkungen auf die Arbeit von Person A (Smartphone-Navigation Branch). Auch werden Codeänderungen von Person A keinen Einfluss auf die Arbeit von Person B haben, da beide verschiedene Branches verwenden.</p>
<p>Wenn dann jedoch nach der Fertigstellung der Smartphone-Navigation das gesamte Projekt diese neue Navigation erhalten soll, wird der Branch des neuen Features, in unserem Fall &#8222;develop&#8220;, einfach mit dem Hauptbranch zusammengeführt, woraufhin alle anderen Projektmitglieder die neuen Änderungen schließlich auch erhalten. Ausgenommen davon sind natürlich wieder die Projektmitglieder, die sich gerade auf einem anderen Branch befinden.</p>
<h2>Lösungsansatz git-flow als Branching-Modell</h2>
<p>&#8222;<a href="http://nvie.com/posts/a-successful-git-branching-model" target="_blank" rel="noopener noreferrer">Git-flow</a>&#8220; ist ein Tool das den Workflow von Git erweitert und fest spezifiziert. Es kann per Kommandozeile oder per Tool bedient werden. So bieten zum Beispiel <a href="https://www.sourcetreeapp.com/" target="_blank" rel="noopener noreferrer">Sourcetree von Atlassian</a> und <a href="https://www.jetbrains.com/phpstorm/" target="_blank" rel="noopener noreferrer">PhpStorm</a> Untersützung für git-flow. Die sehr feste Spezifizierung von git-flow hält den Workflows konstant und fördert den dezentralisierten Entwicklungsansatz. Zusätzlich zu den bekannten Hauptzweigen &#8222;master&#8220; und &#8222;develop&#8220; werden sogenannte Support-Branches erstellt, welche später für differenzierte Aufgaben verwendet werden. Diese werden auf verschiedene Art und Weise mit unseren Hauptzweigen &#8222;master&#8220; und &#8222;develop&#8220; zusammengeführt. Wir werden diese Support-Branches anhand von drei Beispielen kurz erklären.</p>
<h3>Support-Branches bei git-flow</h3>
<p>Derzeit haben wir in unserem Projekt zwei Zweige, &#8222;master&#8220; und &#8222;develop&#8220;. &#8222;Master&#8220; ist die aktuelle Live-Version des Projektes während &#8222;develop&#8220; einen aktuellen Entwicklungsstand darstellt. &#8222;Git-flow&#8220; fügt nun drei weitere Arten von Branches zu unserem Workflow: &#8222;release&#8220;, &#8222;feature&#8220;, und &#8222;hotfix&#8220;.</p>
<p><strong>Hotfix-Branches</strong></p>
<p>Der Hotfix-Branch wird von den beteiligten Entwicklern lediglich dazu benutzt Fehlerbehebungen des Live-Systems durchzuführen. Sobald ein Fehler behoben ist, wird der Hotfix-Branch geschlossen und mit &#8222;master&#8220; und &#8222;develop&#8220; zusammengeführt. Dieses führt auf der einen Seite zu einem sauber aktualisierten Live-System und auf der anderen Seite wird der Hotfix in die Entwicklungsschiene transferiert, da sämtliche anderen Branches vom &#8222;develop&#8220; Branch abhängen.<br />
<img decoding="async" class="size-main-full wp-image-521" src="http://nvie.com/img/hotfix-branches@2x.png" alt="Hotfix-Branch Workflow" height="400" />Hotfix-Branch Workflow © <a href="http://nvie.com">nvie.com</a></p>
<p><strong>Feature-Branches</strong></p>
<p>Der Feature-Branch wird als Zweig zur Erstellung neuer Funktionen verwendet. Sobald eine neue Funktionalität abgeschlossen ist, wird der Feature-Branch auf mit dem Develop-Branch zusammengeführt und kann auf einer Testinstanz unabhängig von unserem Master branch getestet werden. Feature-Branches sollten in dieser Struktur lediglich lokal vorkommen.<br />
<img decoding="async" class="size-main-full" src="http://nvie.com/img/merge-without-ff@2x.png" alt="Feature-Branch Workflow" height="400" />Feature-Branch Workflow © <a href="http://nvie.com">nvie.com</a></p>
<p><strong>Release-Branches</strong></p>
<p>Der Release-Branch wird bei jedem neuen Release oder großen Codeänderung (Milestone) benutzt. Ein Release kann zum Beispiel eine Sammlung von verschiedenen Features sein, welche als Release-Branch gruppiert bzw. zusammengefasst werden, um gemeinsam deployed zu werden. Ein Release-Branch sollte immer mit &#8222;master&#8220; als auch &#8222;develop&#8220; zusammengeführt werden, wobei letzterer für die Qualitätssicherung inklusive Testing Vorrang hat.</p>
<h2>Fazit</h2>
<p>Das Arbeiten mit git-flow oder generell die korrekte Nutzung von Branching stellt eine qualitätssichernde sowie Workflow-optimierende Maßnahme da, die uns hilft sauber und getrennt voneinander unseren Aufgaben nach zu gehen, ohne die Arbeit des Anderen zu beeinträchtigen.</p>
<p>Der Beitrag <a href="https://entwicklungshilfe.nrw/blog/2016/04/29/git-flow-branching-model/">git-flow &#8211; das Branching-Modell</a> erschien zuerst auf <a href="https://entwicklungshilfe.nrw">Entwicklungshilfe NRW</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://entwicklungshilfe.nrw/blog/2016/04/29/git-flow-branching-model/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Frontend-Testing mit Codeception</title>
		<link>https://entwicklungshilfe.nrw/blog/2016/04/22/frontend-testing-mit-codeception/</link>
					<comments>https://entwicklungshilfe.nrw/blog/2016/04/22/frontend-testing-mit-codeception/#comments</comments>
		
		<dc:creator><![CDATA[Andreas Mautz]]></dc:creator>
		<pubDate>Fri, 22 Apr 2016 10:00:11 +0000</pubDate>
				<category><![CDATA[Deployment]]></category>
		<category><![CDATA[Software Qualität]]></category>
		<guid isPermaLink="false">http://www.entwicklungshilfe.nrw/blog/?p=468</guid>

					<description><![CDATA[<p>Codeception ist ein PHP basiertes Framework für automatisiertes Frontend-Testing. Es liefert abgesehen von Tools für Akzeptanztests auch weitreichende Tools für Unit-Tests. In diesem Artikel gehen wir jedoch weitestgehend auf die Funktion der Akzeptanztests ein, also die Tests, die den Fall simulieren dass ein User sich gerade durch eine Webseite klickt. Im nachfolgenden Absatz möchte ich [&#8230;]</p>
<p>Der Beitrag <a href="https://entwicklungshilfe.nrw/blog/2016/04/22/frontend-testing-mit-codeception/">Frontend-Testing mit Codeception</a> erschien zuerst auf <a href="https://entwicklungshilfe.nrw">Entwicklungshilfe NRW</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Codeception ist ein PHP basiertes Framework für automatisiertes Frontend-Testing. Es liefert abgesehen von Tools für Akzeptanztests auch weitreichende Tools für Unit-Tests. In diesem Artikel gehen wir jedoch weitestgehend auf die Funktion der Akzeptanztests ein, also die Tests, die den Fall simulieren dass ein User sich gerade durch eine Webseite klickt. Im nachfolgenden Absatz möchte ich zunächst die Installation und die generelle Verwendung von Codeception für das Frontend-Testing erläutern, sowie auf die Basisfunktion der Akzeptanztests eingehen. Codeception ermöglicht es, reale Testszenarien anhand von festgelegten Abläufen zu durchlaufen, ohne selbst den Browser zu öffnen.</p>
<h2>Die Installation</h2>
<p>Codeception kann <a href="http://codeception.com/install" target="_blank">hier</a> via Composer installiert werden. Jedoch wird davon in unserem Beispiel kein Gebrauch gemacht, da wir den sofortigen Einsatz von Codeception auf einer frischen VM realisieren, und somit keinen Composer installiert haben.</p>
<p><strong>Mac/Linux:</strong><br />
Auf dem Mac bzw Linux und Unix derivaten kann Codeception auch per Command-line installiert werden.</p>
<pre class="lang:default decode:true " title="Codeception installieren">wget http://codeception.com/codecept.phar &amp;&amp; php codeception.phar bootstrap</pre>
<p>mit diesem beidem Befehlen wird Codeception installiert und dessen Ordnerstruktur erstellt.</p>
<p><strong>Windows:</strong><br />
Auf Windows muss das installationsarchiv <a href="http://codeception.com/install" target="_blank">hier</a> manuell heruntergeladen werden von:</p>
<p>Nach der Installation auf Windows hat Codeception die benötigte Ordnerstruktur erstellt.</p>
<p>Sollte das Frontend-Testing mit Google Chrome, Firefox oder anderen Browsern durchgeführt werden, wird auch Selenium benötigt. Die Installation kann auf einem Mac/Linux per Kommandozeile mit folgenden Befehlen geschehen.</p>
<p>Mac: </p>
<pre class="lang:default decode:true " title="Codeception installieren">brew install selenium-server</pre>
<p>Linux: </p>
<pre class="lang:default decode:true " title="Codeception installieren">apt-get install selenium-server</pre>
<p>Auf Windows muss der Selenium Server von http://selenium.org heruntergeladen und installiert werden.</p>
<p>Nachdem Selenium und Codeception installiert sind, gestaltet sich der Rest der Konfiguration relativ einfach. Zunächst können im &#8222;_env&#8220; Verzeichnis von Codeception sogenannte Testumgebungen angelegt werden, welche der Reihe nach von Codeception durchlaufen und abgearbeitet werden. Ein Beispiel für einen solche Datei sieht wie folgt aus.</p>
<figure style="width: 300px" class="wp-caption alignleft"><img decoding="async" title="Chrome Konfigurationsdatei (Full HD)" src="http://www.entwicklungshilfe.nrw/blog/wp-content/uploads/2016/04/Bildschirmfoto-2016-04-20-um-10.30.27.png" title="Chrome Konfigurationsdatei (Full HD)" alt="Frontend-Testing mit Codeception" /><figcaption class="wp-caption-text">Chrome Konfigurationsdatei (Full HD test)</figcaption></figure>
<p>In diesem .yml file wird festgelegt, dass der zu testende Browser Google Chrome sein wird.<br />
Des Weiteren wird festgelegt, dass wir in der Auflösung 1920&#215;1080 testen werden.<br />
Die URL kann pro Testumgebung jeweils eine URL beinhalten, welche in unserem Testszenario momentan auf einen unserer Testserver zeigt.</p>
<h2>Vorbereitungen für das Frontend-Testing</h2>
<p>Nachdem wir unsere Umgebungsvariablen festgelegt haben, können wir uns der nächsten wichtigen Datei widmen. Die Datei __bootstrap.php aus dem Verzeichnis &#8222;acceptance&#8220; wird vor jedem Test aufgerufen und erlaubt es, Variablen zu deklarieren die dann in den jeweiligen Testszenarien verwendet werden können. Diese Variablen bestehen den ganzen Test über und können von den verschiedenen Szenarien gemeinsam benutzt werden. Eine sinnvolle Verwendung dieser Datei wäre zum Beispiel eine Funktion zum erkennen des benutzten Browsers, um in den Tests darauf entsprechend reagieren zu können und die Tests für den jeweiligen Browser besser anzupassen.</p>
<p>Beispiel: Sollte die Funktion in __bootstrap.php ein mobiles Endgerät entdecken, kann der darauf folgende Test in seinem Testszenario darauf reagieren und zum Beispiel die mobile Navigation anstatt die normale Navigation Testen.</p>
<p>Hinweis: Bevor die Testszenarien durchlaufen werden können, muss Selenium entweder auf Windows mit einem Doppelklick, oder auf Mac bzw Linux/Unix derivaten mit dem Konsolenbefehl &#8222;selenium-server -p 4444&#8220; gestartet werden.</p>
<h2>Das Testszenario</h2>
<p>Kommen wir nun zu den eigentlichen Tests. Jedes Testszenario das wir anlegen wollen, muss sich im &#8222;acceptance&#8220; Verzeichnis befinden. Jede PHP datei außer __bootstrap.php wird dort für jede einzelne Testumgebung die wir im &#8222;_env&#8220; Verzeichnis liegen haben durchlaufen. Haben wir zum Beispiel ein Testszenario wie &#8222;Navigation.php&#8220; im &#8222;acceptance&#8220; folder, wird dieses Szenario für chrome_1920x1080.yml aufgerufen.<br />
Ein Beispiel eines solchen Tests sieht wie folgt aus.</p>
<pre class="lang:default decode:true " title="Navigations-Testszenario">
<?php
    $I = new AcceptanceTester($scenario);
    $I->amOnPage("/");
    $I->wantTo("test elements of the navigation (upper categories)");
    $I->click(".menu-button");
    $I->click("#nav-wide .level0.nav-1 a span");
    $I->moveMouseOver("#nav-wide .level0.nav-1 a span");
    $I->click(".level1.nav-1-1  a span");
?>
</pre>
<p>Der obrige test wurde mit dem Befehl &#8222;php codecept.phar run acceptance &#8211;env chrome_1920x1080&#8220; aufgerufen. Für jede weitere Testumgebung die in die Testszenarien eingebunden werden soll, wird eine weitere &#8211;env Direktive benötigt.</p>
<p>Beispiel 2 Browser:</p>
<pre class="lang:default decode:true " title="Codeception installieren">php codecept.phar run acceptance --env chrome_1920x1080 --env firefox_1920x1080</pre>
<p><strong>Hint:</strong> Während eines Tests der Funktionen wie $i-&gt;moveMouseOver() enthält darf die Maus nicht bewegt werden!</p>
<figure style="width: 300px" class="wp-caption alignleft"><img decoding="async" src="http://www.entwicklungshilfe.nrw/blog/wp-content/uploads/2016/04/Bildschirmfoto-2016-04-20-um-12.55.18.png" alt="Footer Testszenario" /><figcaption class="wp-caption-text">Footer Testszenario (acceptance/FooterCept.php)</figcaption></figure>Wie man in unserem Test sehen kann, wird hier der Anmeldebereich einer Website getestet. Es handelt sich hierbei um einen simplen Test der einzig und allein die jeweilige Login-Seite ansteuert und das Form-Feld mit Daten befüllt. Die einfache Syntax von Codeception macht es dem Entwickler einfach in einer kurzen Zeit verständliche und benutzbare Testszenarien zu schreiben. </p>
<p>Je nach Generalisierung der Tests wie Beispielsweise oben beschrieben, lässt dich der Test für mehrere Anwendungszwecke verwenden. In unserem Fall ist der oben zu sehende Test für jegliches Login-Formular einer Magento-Shop Webseite einsetzbar.</p>
<p>Nachdem Codeception die Tests erfolgreich (oder auch nicht) beendet hat, wenden wir uns dem Verzeichnis &#8222;records&#8220; zu. Im Verzeichnis &#8222;records&#8220; befinden sich Screenshots von jedem einzelnen Schritt unserer Tests und dem Ergebnis. Es bleibt einem die Möglichkeit entweder die Datei &#8222;index.html&#8220; zu öffnen und sich in einem minimalistisch gestalteten Web-interface durch die Ergebnisse zu klicken oder sich die einzelnen Fehlgeschlagenen Tests heraus zu suchen. Fehlgeschlagene Tests haben eine &#8222;.fail.&#8220;-Endung im Dateiname und sind direkt in &#8222;records&#8220; Ordner zu finden.</p>
<p><strong>Hint:</strong> Der Befehl $i-&gt;wait() veranlasst Codeception dazu, eine gewisse Zeit zu warten und einen neuen Screenshot zu erstellen.</p>
<h2>Fazit:</h2>
<p>Codeception ist ein effizient einsetzbares Tool mit noch kleinen Schönheitsfehlern, wie zum Beispiel das unnötige Erstellen eines Screenshots nach Verwendung des $i-&gt;wait() Befehls, die einen Entwickler jedoch keinesfalls am produktiven Einsatz des Frameworks hindern. Es stellt mit seiner einfachen Syntax und leichten Bedienbarkeit eine effektive Methode für das Frontend-Testing dar.</p>
<p>Der Beitrag <a href="https://entwicklungshilfe.nrw/blog/2016/04/22/frontend-testing-mit-codeception/">Frontend-Testing mit Codeception</a> erschien zuerst auf <a href="https://entwicklungshilfe.nrw">Entwicklungshilfe NRW</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://entwicklungshilfe.nrw/blog/2016/04/22/frontend-testing-mit-codeception/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Besuch beim Magento 2 Hackathon in Paderborn</title>
		<link>https://entwicklungshilfe.nrw/blog/2016/02/16/magento-2-hackathon/</link>
					<comments>https://entwicklungshilfe.nrw/blog/2016/02/16/magento-2-hackathon/#respond</comments>
		
		<dc:creator><![CDATA[Andreas Mautz]]></dc:creator>
		<pubDate>Tue, 16 Feb 2016 07:53:55 +0000</pubDate>
				<category><![CDATA[Magento]]></category>
		<category><![CDATA[Software Qualität]]></category>
		<category><![CDATA[Workshop]]></category>
		<guid isPermaLink="false">http://www.entwicklungshilfe.nrw/blog/?p=294</guid>

					<description><![CDATA[<p>Am 23. und 24. Januar 2016 fand bei code-x GmbH in Paderborn ein Hackathon zur neuesten Magento-Version statt. Als Magento-Entwickler mit einem bereits angefangenen Magento-2-Projekt für einen unserer Kunden bei webvisum &#8222;musste&#8220; ich also einfach daran teilnehmen. Mein Plan als Magento-Entwickler für das Wochenende Mein Plan war es eigentlich, für mein bestehendes Projekt und die darin schon gefundenen Stolpersteine [&#8230;]</p>
<p>Der Beitrag <a href="https://entwicklungshilfe.nrw/blog/2016/02/16/magento-2-hackathon/">Besuch beim Magento 2 Hackathon in Paderborn</a> erschien zuerst auf <a href="https://entwicklungshilfe.nrw">Entwicklungshilfe NRW</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Am 23. und 24. Januar 2016 fand bei <a href="http://www.code-x.de/" target="_blank" rel="noopener noreferrer">code-x GmbH</a> in Paderborn ein Hackathon zur neuesten Magento-Version statt. Als Magento-Entwickler mit einem bereits angefangenen Magento-2-Projekt für einen unserer Kunden bei <a href="http://webvisum.de" target="_blank" rel="noopener noreferrer">webvisum</a> &#8222;musste&#8220; ich also einfach daran teilnehmen.</p>
<h2>Mein Plan als Magento-Entwickler für das Wochenende</h2>
<p>Mein Plan war es eigentlich, für mein bestehendes Projekt und die darin schon gefundenen Stolpersteine Hilfe zu finden. Aus Entwickler-Sicht ist das Projekt relativ klein, da es sich lediglich um eine Migration von Magento 1.x auf 2.x ohne aktivierte Einkaufsmöglichkeit handelt. Damit entfällt die ganze Warenkorb/Checkout/AfterSales-Funktionalität. Auch E-Mail-Templates sind nicht großartig zu beachten. Das Projekt enthält jedoch ein komplettes Redesign. Damit kam es mir als Einstiegsprojekt für eine Migration sehr gelegen.</p>
<p>Die Stolpersteine, die sich so auftaten, während ich mich alleine mit den Dokus ans Projekt machte, tauchten an diesem Wochenende auch bei anderen auf – puuh, ich war also nicht alleine.</p>
<p>Da wäre zum Beispiel die einfache Aufgabe, Nummer 2 erstmal ans Laufen zu kriegen. Der Umstieg der anwesenden, durch die Bank erfahrenen alten Magento-Hasen auf das Neue-und-Alles-ist-besser-Magento gelang nicht ganz so flüssig, wie die Magento-Marketingler das gerne auf allen Kanälen hinausschreien. Beim ersten Anlegen des Projektes damals liefen bei mir die Installation und auch alles andere reibungslos. Beim Anlegen der neuen Installation für das Wochenende aber hatte ich dann Probleme damit und habe mir nebenbei mit einem Update von Version 2.0.0 auf 2.0.1 das oben beschriebene Projekt so zerschossen, dass nur noch ein Backup half.</p>
<p>Auch die ersten Schritte eines eigenen Templates mit der Frage &#8222;Wie bekomme ich jetzt Magento dazu, meinen Style auszuliefern?&#8220; kamen mir seltsam bekannt vor.</p>
<h2>Was wirklich geschah am Wochenende</h2>
<p>Nun ja, was soll ich sagen &#8230;? Ich habe zum ersten Mal eine Pre-Party verpasst und bin erst morgens am Tag der Veranstaltung angereist. Man wird halt nicht jünger. Da ich wegen meiner Diplomarbeit letztes Jahr recht selten auf Firegento-Events war, musste man auch erstmal ordentlich netzwerken und persönlich werden. Da das aber einer der Hauptgründe für mich ist, solche Events zu besuchen, fing ich damit an. Also MacBook auf, Magento 2 laden und anfangen zu quatschen. Alibimäßig hatte ich mich deswegen auch in die Gruppe &#8222;Ist Magento 2 Mist?&#8220; geschmissen. Das ging so den ganzen Samstag: Versuchen Magento zu installieren, quatschen über das letzte halbe Jahr, auf den Bildschirm gucken, ob die Kiste vorankommt, essen, quatschen. Zack war abends, und man saß noch in einer kleinen Runde im Brauhaus. Man ahnt es: quatschen.</p>
<p>Der nächste Tag sollte produktiver werden, und ich gesellte mich direkt zum Team &#8222;Migration von Firegento-PDF auf Magento 2&#8220;, dem ich samstags schon ein wenig helfen konnte.</p>
<p>Der Sonntag verlief dann recht flüssig mit richtiger Arbeit an Magento 2. Bis zum Versuch, die Abschlusspräsentation per Videokonferenz mit gleich zwei Ablegern des Hackathons zu halten. Am Ende gelang es irgendwie, und es ging für mich zurück nach Köln (Notiz an mich: App entwickeln, die für Events Fahrgemeinschaften erzwingt).</p>
<p>Schönen Dank an dieser Stelle an code-x fürs Gastgeben und an die Sponsoren!</p>
<figure id="attachment_407" aria-describedby="caption-attachment-407" style="width: 150px" class="wp-caption alignleft"><img loading="lazy" decoding="async" class="wp-image-407 size-thumbnail" src="https://entwicklungshilfe.nrw/wp-content/uploads/2016/02/magento-2-hackathon-150x150.jpg" alt="Magento 2 Hackathon" width="150" height="150" srcset="https://entwicklungshilfe.nrw/wp-content/uploads/2016/02/magento-2-hackathon-150x150.jpg 150w, https://entwicklungshilfe.nrw/wp-content/uploads/2016/02/magento-2-hackathon-150x150@2x.jpg 300w" sizes="auto, (max-width: 150px) 100vw, 150px" /><figcaption id="caption-attachment-407" class="wp-caption-text">Teilnehmer Magento 2 Hackathon</figcaption></figure>
<h1>Was ich über Magento 2 gelernt habe</h1>
<p>Zusammenfassend lässt sich sagen: Nicht alles läuft glatt am Anfang jeder neuen Version – das ist das tägliche Brot für uns PHP-Entwickler. Ich war nicht alleine mit meinen Problemen und habe Trost und Hilfe bekommen. Da ich schon etwas tiefer in der Materie drin war, konnte ich auch selbst ein paar Mal helfen. Schönes Gefühl.</p>
<p>Magento 2 ist schon ein ausgereifteres Softwareprodukt als die damalige Frühversion von Magento 1 – aber aus meiner Sicht noch nicht wirklich startklar als Shop-System-Lösung für deutsche Kunden. Zudem sind bisher zu wenige Module portiert. In welchem Zeitrahmen sich das ändert, bleibt abzuwarten und zu beobachten. Die Neugierde und der Wille, mit Magento 2 zu arbeiten, war an dem Wochenende jedoch deutlich spürbar.</p>
<p>Der Beitrag <a href="https://entwicklungshilfe.nrw/blog/2016/02/16/magento-2-hackathon/">Besuch beim Magento 2 Hackathon in Paderborn</a> erschien zuerst auf <a href="https://entwicklungshilfe.nrw">Entwicklungshilfe NRW</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://entwicklungshilfe.nrw/blog/2016/02/16/magento-2-hackathon/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
