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 »
 

Artikel Updates:

Was noch so neu ist:

  • Das Social-Button Plugin wurde durch eine Eigenimplementation ausgetauscht. Die 3 großen Social Networks werden Unterstützt. Google+, twitter und facebook. Mehr dazu hier.
  • Unter anderem wird inzwischen auch automatisiert von twitter zu facebook gespammt. Hierfür bietet twitter selbst eine facebook App an.
  • Externe Links werden mit Hilfe eines Scriptes in einem neuen Fenster geöffnet. Mehr: Query: Externe Links in neuem Fenster / Tab öffnen

Außerdem:
Möchte ich mich bei den Kommentar Schreibern entschuldigen die so lange auf die Freischaltung ihres Kommentars gewartet haben.

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 »
 

Dem Besucher die Möglichkeit zu geben die Anfahrt zu einem Unternehmensstandort berechnen zu lassen ist heut zu tage ein muss für jede Unternehmens Webseite. Unschön ist ein weiteres Fenster / Pop-Up das sich öffnet nur um eine Anfahrtsskizze über die Google Maps Funktion anzuzeigen. Im selben Fenster wollen wir Google Maps nicht öffnen. Wir wollen den Besucher nicht von der Webseite weg manövrieren.

Ein Lösungsvorschlag von mir ist das öffnen von Google Maps in einer Highlighting-Box wie der Shadowbox. Als angenehm empfunden haben viele Besucher einen zweiten Link für die Google Routen Berechnung. Bei den Vorhaben seine Anfahrtsroute zu berechnen sollte man dem Besucher nicht im Interface / Platz beschneiden.

Hierzu habe ich mithilfe von jQuery ein kleines Script geschrieben, das am besten in den Header des Dokumentes, nach dem jQuery Framework und der Shadowbox, eingebunden wird. Ein paar HTML Elemente müssen wir ebenfalls auf der Webseite platzieren um dem Besucher Interaktion zu ermöglichen.

Das Beispiel auf dieser Seite beeinhaltet die Anzeige der Anfahrt, dargestellt in der Shadowbox, ins Watergate nach Berlin.

Anfahrt anzeigen • Route berechnen
Fremd Beispiel 2:PSD zu WordPress Theme(unten auf der Seite)

Die Einrichtung um Google Maps in der Shadowbox öffnen zu lassen gestaltet sich, wenn man weiß wie, sehr einfach.
Das jQuery Framework und die Shadowbox müssen vor Script Aufruf in das HTML Dokument eingebunden werden. Dies geschieht im Kopfbereich folgerndermaßen:

<link rel="stylesheet" type="text/css" href="shadowbox.css" />
<script src="jquery.js" type="text/javascript"></script>
<script src="shadowbox.js" type="text/javascript"></script>

Aktuelle Downloads findest du hier:

Dieses Script bindet das “click” Event an den Link und macht es uns möglich nach einem Klick eines Benutzers mit einer eigenen Funktion zu reagieren. In unserer Funktion werden wird der Wert des Formularfeldes ermittelt und als GET Parameter (Adresse) für den iFrame der Shadowbox verwendet.

Das zweite “click” Event öffnet ein neues Fenster / Tab mit der Adresse aus dem Formularfeld für die Google Routen Berechnung.

jQuery(document).ready(function() {
   Shadowbox.init({
       handleOversize: 'drag',
       modal: true
   });
   jQuery('#google-route-b').bind('click', function() {
       Shadowbox.open({
	   content: jQuery(this).attr('href')+jQuery('#google-route-f').attr('value'),
  	   player:  'iframe'
      });
      return false;
   });
   jQuery('#google-route-d').bind('click', function() {
	jQuery(this).attr('href', jQuery(this).attr('href')+jQuery('#google-route-f').attr('value'));
	return true;
   });
});

Der Selektor #google-route-b steht hierbei für den Link auf den geklickt werden muss um unser “Formular” abzusenden. #google-route-f bezeichnet das Feld mit der Adresse des Besuchers. Die Rückgabe von “false” am Ende der Funktion verhindert das öffnen von den Google Routen im selben Fenster.

#google-route-d kennzeichnet den Link um die Google Routen Berechnung. Nach dem Einfügen der Adresse aus dem Input Feld in den Link wird “true” zurück gegeben um dem Browser zu signalisieren weiter mit seiner standard Link Routine zu arbeiten.

<input type="text" name="saddr" title="Ihre Adresse" class="input-text" id="google-route-f">
<a href="http://maps.google.de?daddr=***DEINE STRAßE, DEINE STADT***&amp;&output=embed&saddr=" title="Anfahrt anzeigen" id="google-route-b" target="_blank">Anfahrt anzeigen</a>
<a href="http://maps.google.de?daddr=***DEINE STRAßE, DEINE STADT***&amp;saddr=" title="Route berechnen" id="google-route-d" target="_blank">Route berechnen</a>

***DEINE STRAßE, DEINE STADT*** ist natürlich durch die jeweilige Firmenadresse zu ersetzen.

Keine Kommentare »
 

Ob es ratsam ist externe Links in neuem Fenster / Tab zu öffnen bzw. Verweise generell in neuen Tabs / Fenstern zu öffnen ist umstritten. Grundsätzlich werden dabei zwei sinnvolle Ansätze vertreten.

  • Ansatz A

    Dem Benutzer ist es selbst überlassen wie sich Links nach anklicken verhalten. Alle Links öffnen sich im selben Fenster.

  • Ansatz B

    Dem Benutzer wird die Entscheidung abgenommen und externe Links öffnen sich in einem neuen Fenster / Tab. Hierbei wird die eigentliche Seite nicht verlassen.

Ich selbst tendiere zu Ansatz B. Sollte es, aus welchen Gründen auch immer, nicht möglich sein ein target=”_blank” Server seitig in das HTML Dokument einzufügen verwende ich eine Javascript Funktion auf jQuery Basis.

Externe Links in neuem Fenster öffnen –extendable

Diese Methode ist insbesondere interessant wenn verschiedene Faktoren für die Prüfung eines Links erforderlich sind.

/* Nicht vergessen das jQuery Framework vor diesem Snippet einzubinden  */
jQuery(document).ready(function() {
	var getdomainname = function(url) {
		return url.split('/')[2].split(':')[0];
	}
	var targetblank = function() {	
		if (window.location.host != getdomainname(jQuery(this).attr('href')))
			jQuery(this).attr('target', '_blank');
	}
	jQuery('body a').each(targetblank);	
});

Mithilfe dieser Funktion können jederzeit auch einzelne Bereiche der Internetseite angesprochen werden. Strukturen ohne externe Links sollten auch aus Performance Gründen nicht von der Funktion überprüft werden.

Weitere Informationen zur Funktion getdomainname() findest du in meinem vorherigen Post: Javascript: Domain Name ermitteln (JS: get domain name) via URL

Externe Links in neuem Fenster öffnen – quicky

/* Nicht vergessen das jQuery Framework vor diesem Snippet einzubinden  */
jQuery(document).ready(function() {
        jQuery("a[href^='http']:not([href^='"+window.location.host+"'])").attr('target', '_blank');
});

Diese Methode fügt allen a Tags mit einem http:// am Anfang des href Attributes das nicht der aktuellen Domain entspricht das target=”_blank” hinzu. Nicht zu vergessen ist, das auch hier mit Hilfe des Selektors aus einzelne Bereiche des HTML Dokuments angesprochen werden können. Dieser Vorgehensweise fehlt es leider an Erweiterbarkeit. Insbesondere für Filter Regeln zur die Auswahl der Links.

5 Kommentare »