Version: Magento 1.4, 1.6, 1.7

Das Magento Backend hat verfügt über keine Funktion Newsletter Adressen in Massen bzw. alle potentiellen Newsletter Empfänger zu aktivieren. Ein Deaktivieren von allen Einträgen mit wenigen Klicks ist möglich. Bei größeren Adresslisten werden hierbei zu viele Ressourcen verbraucht.

Einfach und schnell lassen sich alle Adressaten aus dem Newsletter Abo in Magento mit folgender SQL Abfrage entfernen:

UPDATE ***DB_PREFIX***_newsletter_subscriber SET subscriber_status = 3

Für alle Adressaten den Newsletter zu abonnieren ist mit beinahe der selben Abfrage möglich:

UPDATE ***DB_PREFIX***_newsletter_subscriber SET subscriber_status = 1

Unbedingt zu beachten ist das Datenbankpräfix (***DB_PREFIX***).

Keine Kommentare »
 

Aus Sicherheitsgründen ist die Anzeige von Fehlern in Magento standardmäßig deaktiviert. Sollte ein Fehler auftreten findet eine Weiterleitung zu einer Fehlerseite statt. Für Entwickler / Template Designer ist das denkbar ungünstig. Um im Magento Shopsystem die Fehleranzeige zu aktivieren muss die Datei **MAGE_ROOT***/errors/local.xml erstellt werden. Der Inhalt dieser Datei:

<?xml version="1.0"?>
<config>
    <skin>default</skin>
    <report>
        <!--
            "action" can be set to "print" to show exception on screen and "email"
            to send exception on specified email
        -->
        <action>print</action>
        <!--
            in "subject" you can set subject of email
        -->
        <subject>Store Debug Information</subject>
        <!--
            "email_address" admin email address
        -->
        <email_address></email_address>
        <!--
            "trash" is handle about trace info
            value "leave" is for store on disk
            value "delete" is for cleaning
        -->
        <trash>leave</trash>
    </report>
</config>

Eine Vorlage hierfür finden wir in /errors/local.xml.sample.

Keine Kommentare »
 

Version: Magento 1.6, 1.7

Das kompfortable Entfernen von Magento standard Seiten Layouts ist, so trivial das Problem sich anhört, nicht ganz einfach.
Wie eigentlich alles in Magento? :)

Ich verwende dieses einfach anpassbare Modul zum Hinzufügen oder Entfernen von Seiten Layouts. Funktioniert getestet in Magento Version 1.6 und 1.7.

Das Modul verwendet einen Rewrite (Mage_Page_Model_Config, Template Konfiguration) verändert aber natürlich keine Corre Dateien.

Magento Add / Remove Page Layouts herunterladen

Nach dem kopieren der Ordnerstruktur der ZIP Datei in die Magento Verzeichnisstruktur muss in der Modul Konfiguration in der Datei ***MAGENTO_ROOT***/app/code/local/Ld/Templates/etc/config.xml die Konfiguration für die Seiten Layouts die entfernt werden sollen eingetragen werden. Der Auszug der XML Datei. Standardmäßig wird das 3col-Layout entfernt:

<remove_layouts>
    <layouts>three_columns</layouts>
</remove_layouts>

Beim Entfernen von mehreren Layouts müssen diese mit Komma separiert werden (three_columns,two_columns_left).

Das Hinzufügen von Layouts zum Magento Shop ist in der selben Datei möglich (***MAGENTO_ROOT***/app/code/local/Ld/Templates/etc/config.xml). Folgend der XML Auszug. Von Haus aus ist dieser Eintrag auskommentiert.

<layouts>
    <xxx_columns_yyy module="page" translate="label">
        <label>xxx columns with yyy bar</label>
        <template>page/xxxcolumns-yyy.phtml</template>
        <layout_handle>page_xxx_columns_yyy</layout_handle>
    </xxx_columns_yyy>
</layouts>

Das Präfix “xxx” und Suffix “yyy” können hierbei entsprechend ersetzt werden. Der Tag “label” stellt eine freie Beschriftungsmöglichkeit da. Wichtig ist das im “template” Tag der Pfad stimmt.

Nach den Änderungen sollten in der “Page-Layout” Dropdown Box die entsprechenden Seiten Layouts zur Wahl stehen oder eben nicht. Je nach Konfiguration.

Keine Kommentare »
 

Version: Magento 1.6

Im Magento Backend werden von Haus aus 20 Einträge zugleich in den Tabellen-Ansichten (Grid View) dargestellt. Bei größeren Produktmengen, sogar schon bei über 20 Artikeln, ist es wesentlich angenehmer mehr Produkte auf einen Blick zu haben. Das Modul Ld_Admingrid setzt die zahl der angezeigten Einträge in allen Magento Admin Ansichten auf 200 Stück.

Das ohne einen Modul bestehend aus 3 Dateien (Ld_Admingrid.xml, config.xml, Observer.php) verwendet keinen Rewrite und natürlich auch keine Veränderung von Core Dateien.

In der Datei ***MAGENTO_ROOT***/app/code/local/Ld/Admingrid/Model/Observer.php in Zeile 7 kann das Default Grid Limit angepasst werden.

$block->setDefaultLimit(200);

Magento Backend / Admin Grid Standard: 200 Einträge herunterladen

ein Kommentar »
 

Version: Magento 1.5 & 1.5.1

Themen spezifische Übersetzungen werden in Magento üblicherweise in der Datei /app/design/frontend/***BASE ODER DEFAULT***/***DEIN TEMPLATE***/locale/de_DE/tanslate.csv hinterlegt. Dabei muss das Format “***STRING IN TEMPLATE***”,”***ÜBERSETZTER TEXT***” eingehalten werden. Teilweise sind auch Variablen wie %s enthalten. Die sind am Prozent Zeichen zu erkennen.

Die translate.csv im Template Ordner erhält, beim generieren der Übersetzungen, eine niedrigere Priorität als die standard Übersetzungen. Das nimmt der Möglichkeit Übersetzungstexte mit dem Template zu liefern die bereits in der standard Übersetzungstexten enthalten sind.

Um das zu ändern kann quick and dirty die Datei app/code/core/Mage/Core/Model/Translate.php in Zeile 558 folgendermaßen editiert werden:

    /**
     * Return translated string from text.
     *
     * @param string $text
     * @param string $code
     * @return string
     */
    protected function _getTranslatedString($text, $code)
    {
    	$translated = '';
        if (array_key_exists($text, $this->getData())) {
            $translated = $this->_data[$text];
        }
        elseif (array_key_exists($code, $this->getData())) {
            $translated = $this->_data[$code];
        }
        else {
            $translated = $text;
        }
        return $translated;
    }

Am einfachsten ist es die Methode _getTranslatedString() komplett zu ersetzen. ;)

Eine schönere Möglichkeit ist es die Datei app/code/local/Mage/Core/Model/Translate.php zu erstellen, mit den Inhalten der originalen Datei app/code/core/Mage/Core/Model/Translate.php zu füllen und dabei die Methode _getTranslatedString() mit der oben abgebildeten Methode zu ersetzen.

Wer möchte kann hier den fertigen Magento 1.5.X Translate Bugfix heruntergeladen werden. Der Fix muss gemäß der im Archiv enthaltenen Ordnerstruktur in das Magento root Verzeichnis kopiert werden.

4 Kommentare »
 

Version: Magento 1.5 & 1.5.1

Das Magento Kontaktformular versendet, nach einer frischen Installation, grundsätzlich schon E-Mails. Zumindest solange darauf geachtet wird den URL Rewrite der Seite auf der sich das Kontaktformular befindet nicht zu verändern. Das bedeutet das Blöcke in denen das Kontaktformular auf anderen Seiten integriert ist ebenfalls nicht funktionieren.

Um den Fehler zu beheben lasse ich den Pfad zur Not (wenn der Pfad leer ist) statisch ausgeben. Dabei verwende ich folgenden form-Tag im Template ***Theme Pfad***/contacts/form.phtml:

<form action="<?php $action = $this->getFormAction(); if (!empty($action)) { echo $action; } else { echo Mage::getBaseUrl().'contacts/index/post/'; } ?>" id="contactForm" method="post">

Der Fehler entsteht, weil die Methode $this->getFormAction() ein leeres Ergebnis zurück liefert, wenn man sich beim Formular Absenden nicht auf der Seite mit dem Rewrite /contacts/ befindet.

Ein Manko dieser Lösung ist die automatische Weiterleitung auf die Kontaktformular Seite nach dem Absenden des Kontakformulars auch wenn das Formular als Block in eine andere Seite eingesetzt wurde.

Alle Schritte beachtet und das Formular will noch nicht? Hast du deine E-Mail Adresse auch für das Magento Kontakformular hinterlegt? Falls nicht, du findest das Feld zum Eintragen der E-Mail Adresse im Magento Backend unter:

System -> Konfiguration -> Allgemein -> Kontakte

Erwähne das, weil ich nach dem lesen des Bugfixes zusätzlich noch die passende Mail Adresse vergessen hätte. :)

Keine Kommentare »
 

Version: Magento 1.4.2.*, 1.5.*, 1.6.*

Diese kleine Änderung erlaubt es mit Hilfe des Magento Wysiwyg Editor TinyMCE neben Bildateien auch PDF und ZIP Dateien auf der Server hochzuladen.

Um nun in der Artikelbeschreibung PDFs und ZIPs uploaden zu können sollte der folgende Teil der XML Datei app/code/core/Mage/Cms/etc/config.xml erweitert werden:

 <extensions>
     <allowed>
         <jpg>1</jpg>
         <jpeg>1</jpeg>
         <png>1</png>
         <gif>1</gif>
         <pdf>1</pdf>
         <zip>1</zip>
     </allowed>
     <image_allowed>
         <jpg>1</jpg>
         <jpeg>1</jpeg>
         <png>1</png>
         <gif>1</gif>
     </image_allowed>
     <media_allowed>
         <flv>1</flv>
         <swf>1</swf>
         <avi>1</avi>
         <mov>1</mov>
         <rm>1</rm>
         <wmv>1</wmv>
     </media_allowed>
 </extensions>

Nach Herzenslust können die jeweiligen Abschnitte, die die verschiednen Dialoge im TinyMCE Editor darstellen, um Dateitypen erweitert werden.

Alternativ gibt es hier die Magento PDF und ZIP Upload Mini-Extension zum Download. Diese kleine Extension bewirkt die oben demonstrierte Änderung über eine einzige XML Anpassung. Die Extension ist gemäß der Verzeichnisstruktur in der ZIP Datei auf den zu Server kopieren.

Update:
Extension unter Magento 1.4.2.* bis 1.6.* lauffähig, getestet.

ein Kommentar »
 

Version: Magento 1.4.X

Problem
Bei dem Versuch eine Bildateien auf den Server zu laden wird die Datei nicht hochgeladen, der Benutzer vom Magento Shopsystem abgemeldet und zum Admin Login weitergeleitet.

Ursache
Magento ist auf einem Server installiert auf dem ebenso der PHP Suhosin Patch installiert ist. Die Session wird vom PHP Suhosin Patch anhand der Browserkennung des Benutzers verschlüsselt. Der Login in das Magento Shopsystem erfolgt mit der Browserkennung des Webbrowsers. Die Anfragen zum Datei Upload erfolgen über das Flash Plugin des Browsers, welches eine eigene Browserkennung besitzt. Während des Upload Prozesses kann der Server die Session des Benutzers nicht entschlüsseln und meldet den Benutzer dadurch vom Shopsystem ab.

Lösung
Des Fehlers Lösung ist das deaktivieren der Option suhosin.session.cryptua in der PHP Suhosin Konfiguration.

php.ini

suhosin.session.cryptua = Off

.htaccess

suhosin.session.cryptua 	Off

Jede Lösungmöglichkeit stellt eine alleinstehend funktionierende Option da.

Andere Artikel zur Datei Upload Problematik helfen dir sicher ebenso weiter.

Keine Kommentare »
 

Version: Magento 1.4.X

In Magento 1.4.1.0, 1.4.1.1 und 1.4.2 erhält man beim Aufruf von der “an einen Freund senden”-Funktion die Fehlermeldung “The messages cannot be sent more than 5 times in an hour”. Da Version 1.4.2 die letzte 1.4 Version von Magento ist und viele Leute diese Version länger benutzen werden veröffentliche ich dieses kleine Bugfix hier im Blog.

In der Datei Mage/Sendfriend/controllers/ProductController.php muss zirka in Zeile 122 die Zeichenfolge:

 if ($model->getMaxSendsToFriend()) {

mit der Zeichenfolge:

if ($model->isExceedLimit()) {

ersetzt werden. Das Sendfriend Formular sollte nun funktionieren wie gewünscht.

Da es sich hierbei um eine Korrektur eines bekannten Fehlers handelt, welcher nach einem Update auch korrigiert ist, empfehle ich die Anpassung der Datei (Mage/Sendfriend/controllers/ProductController.php) direkt und nicht die Erstellung eines Modules.

Keine Kommentare »