Rundungsfehler in Magento

Leider gibt es einen derben Rundunsfehler in Magento, was bei größeren Beträgen einige Euros ausmachen kann. Hier die Lösung:

In: /app/code/core/Mage/Core/Model/Store.php
Zeile 740
return round($price, 2);
ändern in:
return round($price, 4);

In: \app\design\adminhtml\default\default\template\catalog\product\edit\price\tier.phtml
Zeile 161

ändern in:

In: app/code/core/Mage/Adminhtml/Block/Catalog/Product/Helper/Form/Price.php
Zeile 86
return number_format($value, 2, null, ‘’);
ändern in:
return number_format($value, 4, null, ‘’);

In: app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Options/Option.php
Zeile 285
if ($type == ‘percent’) {
return number_format($value, 2, null, ‘’);
} elseif ($type == ‘fixed’) {
return number_format($value, 2, null, ‘’);
ändern in:
if ($type == ‘percent’) {
return number_format($value, 4, null, ‘’);
} elseif ($type == ‘fixed’) {
return number_format($value, 4, null, ‘’);

Magento Core-Dateien abändern und upgradefähig bleiben

Alle Core Dateien befinden ich in app/code/core/Mage… Will man also aus x-beliebigen Gründen die Core-Dateien anpassen, dann sollte man die abgeänderte Datei in derselben Ordnerstruktur in app/code/local/ ablegegen. Hier ein Beispiel:

app/code/core/Mage/Paypal/Model/Api/Standard.php
nach
app/code/local/Mage/Paypal/Model/Api/Standard.php

Alle Dateien in local werden immer bevorzugt behandelt, somit bleibet der Shop theoretisch immer Upgradefähig. Die Dateien in local werden bei einem Upgrade nicht angetastet.

Paypal auf Deutsch nach Checkout (Weiterleitung)

In der Magento-Version 1.4.1.1 wird nach dem Bestellabschluss auf die englische Paypal-Site geleitet. Jegliche Versuche auf deutsch umzustellen sind leider gescheitert, also habe ich mir den Code angeschaut und hab einfach in der Datei app/code/core/Mage/Paypal/Model/Api/Standard.php folgenden Eintrag in Zeile 140 hinzugefügt:

'country' => DE,

Somit habe ich “country” definiert und auf Deutsch gesetzt – funktioniert wunderbar!

Hier die ganze Funktion zum Abgleich (ab Zeile 131):

public function getStandardCheckoutRequest()<br />
{<br />
$request = $this->_exportToRequest($this->_commonRequestFields);<br />
$request['charset'] = 'utf-8';<br />
// cart line items<br />
if ($this->getLineItems()) {<br />
$this->_exportLineItems($request, 1);<br />
$request = array_merge($request, array(<br />
'cmd' => '_cart',<br />
'upload' => 1,<br />
'country' => DE,<br />
));<br />
}<br />
// aggregated order<br />
else {<br />
$request = $this->_exportToRequest($this->_aggregatedOrderFields, $request);<br />
$request = array_merge($request, array(<br />
'cmd' => '_ext-enter',<br />
'redirect_cmd' => '_xclick',<br />
));<br />
}<br />
// payer address<br />
$this->_importAddress($request);<br />
$this->_debug(array('request' => $request)); // TODO: this is not supposed to be called in getter<br />
return $request;<br />
}<br />

Anbei die modifiziert Datei:
Standard

Empfehlenswert ist, dass man die Datei in

app/code/local/Mage/Paypal/Model/Api/

ablegt, damit die Originaldatei nicht angetastet wird.

Mehr zum dem Thema hier.

Viel Erfolg!

Unterkategorien in Hauptkategorie mit Bildern ausgeben

Leider gibt Magento die Unterkategorien nicht in der Hauptkategorie aus. Dazu gibt es aber eine gute Lösung, die wie folgt aussieht:

Wohnzimmermöbel

1. Die Datei subcategory_listing.phtml in app/code/design/frontend/default/”mein_template”/template/catalog/navigation kopieren

2. Im Backend unter CMS/Statische Blöcke einen neuen Block anlegen mit folgenden Angaben:

  • Blocktitel: Sub Kategorien
  • Seitenbezeichner: sub_categories
  • Inhalt: {{block type=”catalog/navigation” template=”catalog/navigation/subcategory_listing.phtml”}}

3. Die jeweilige Hauptkategorie anklicken, und unter “Anzeige Einstellungen” -> CMS Block Sub Kategorien auswählen.

Die Kategoriebilder der Unterkategorien müssen 230px breit und 178px hoch sein, ansonsten passt es nicht in den Rahmen. Falls eine andere Größe gewünscht ist, muss man es dementsprechen über css anpassen.

Anbei noch die Dateien:
Subkategorien by enenko media

Viel Erfolg!

Schwarzer Hintergrund in generierten Bildern

Es kann vorkommen, dass die Produktbilder einen schwarzen Hintergrund haben. Dies kommt durch einen Bug in der Funktion imagefill() GD zustande. Es gibt zwei Möglichkeiten den Fehler zu beheben:

1. Man macht ein PHP-Upgrade auf eine neue PHP-Version

Falls dies nicht möglich ist:

2. Ersetzt man den Code:

return $color;

in der Datei /lib/Varien/Image/Adapter/Gd2.php mit

imagefilledrectangle($imageResourceTo, 0, 0, imagesx($imageResourceTo), imagesy($imageResourceTo), $color);<br />
return $color;<br />

Optimierung von Seitenzahlen (Pagebrowser) in Magento

Die Seitenzahlen des Magento-Shops sind meiner Meinung nach etwas dürftig. Die Zahlen sind zu klein und unauffällig. Möchte man Besucher in Shop behalten, so ist sehr wichtig die Besucher zu “führen” und deutlich aufzeigen, dass es weitere Seiten in der Kategorie gibt. Schlussfolgernd müssten nach der Optimierung die durchschnittlichen Seitenaufrufe pro Besucher ansteigen. Das Ganze habe ich dann bei dem Shop www.woody-moebel.de getestet.

Hier ein Screenshot, wie es vorher aussah (Seitenzahlen rot markiert):

Der Woody Shop vor der Optimierung

Der Woody Shop vor der Optimierung

Als erste habe ich die Seitenzahlen über die Toolbar gesetzt, da innerhalb der Toolbar zu wenig Platz ist, um die Seitenzahlen groß darstellen zu können. Dazu habe ich mir die toolbar.phtml (in app/code/design/frontend/default/”mein_template”/template/catalog/product/list/) unter die Lupe genommen und den Code:

direkt unter den folgenden Code gesetzt (in der ersten Codezeile zu finden):

Somit werden die Seitenzahlen über der Toolbar ausgegeben.

Als nächtes habe ich pager.phtml (in app/code/design/frontend/default/”mein_template”/template/page/html/) so abgeändert, dass ich es per CSS gut stylen kann. Das Ergebniss sieht folgendermaßen aus:

So sehen die optimierten Seitenzahlen aus.

Die aktuelle Seite wird immer auffällig rot markiert, somit weiss der Besucher, wo er sich gerade befindet. Den Hover habe ich ebenfalls in den gleichen Style gesetzt.

Nach einer Woche habe ich die Besucherzahlen analysiert und siehe da – es hat gefruchtet! ;) Am folgenden Sonntag wurden die meisten Unterseiten aufgerufen, und es wurde ein neuer Rekord aufgestellt. Auch im Vergleich zur Vorwoche sind die Zahlen besser- die Absprungrate ist um ca. 2% gesunken und die durchschnittlich Besuchzeit um 2% gestiegen. Da diese Wert aber von Woche zu Woche stärker schwanken, kann ich erst nach der Untersuchung eines längeren Zeitraumes genaue Zahlen liefern. Insgesamt kann ich aber sagen, dass die Unterseiten ca. 8 bis 10% mehr aufgerufen werden, und das eindeutige Plus definitv den optimierten Seitenzahlen zuzuschreiben ist.

Hier noch ein Screenshot von der ganzen Seite mit den optimierten Seitenzahlen:

So sieht der Shop nach der Optimierung aus.

Oder live: Wohnwände

Die abgeänderten Dateien zum Download (vor dem Test bitte immer die alten Dateien sichern!):
Optimierte Seitenzahlen by enenko media

Ich hoffe, euch gefällt der Beitrag und bin auf Feedback gespannt!