Magento: Core Translation Files ergänzen / überschreiben

27. August 2010 at 12:37

Die native mit Magento mit gelieferten core language files für die Übersetzungen sollten nicht überschrieben werden um die Updatefähigkeit zu gewährleisten.

Es ist möglich weitere Übersetzungen durch dass Hinzufügen entsprechender Einträge im passenden Design Ordner zu tätigen, z.B. unter

app/design/frontend/default/myModule/locale/de_DE/translate.csv

Allerdings kommt es ggf. zu Problemen wenn bestehende Core-Language-Einträge überschrieben werden sollen.

Die Lösung dafür ist eigene Language-Files unter app/locale/de_DE abzulegen (in dem Beispiel Namespace_MyModule.csv), wobei de_DE durch das jeweilige Länder-Kürzel ersetzt werden muss.

Das einbinden der Language-File im Module geht in der config.xml über

<frontend>
<translate>
 <modules>
 <Namespace_MyModule>
 <files>
 <default>Namespace_MyModule.csv</default>
 </files>
 </Namespace_MyModule>
 </modules>
 </translate>
</frontend>

Der Zugriff in der Template-Datei geht dann über:

<?php echo Mage::helper('MyModule')->__('My to translate string or hardcodet as direcdt output without language file');?>

Eclipse: Java Heap Error beheben (Lösung)

25. August 2010 at 10:35

Wenn unter Eclipse größere Dateneien in ein Projekt geladen werden (z.Bsp. via SVN), dann erscheint ggf. die Fehlermeldung „Java Heap Error„.

Um das Problem zu beheben, einfach die folgenden Werte  in der eclipse.ini wie im folgenden Beispiel erhöhen (der für Eclipse zur Verfügung stehende Arbeitsspeicher):

-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
512m
-vmargs
-Xms40m
-Xmx512m

MySQL Backup schneller importieren

24. August 2010 at 18:08

Problem

Falls ihr größere Backups habt, welche z.B. mit mysqldump erstellt wurden, so kann der komplette Import schon mal einige Minuten dauern.  Was die Meisten nicht wissen ist, dass der Import solcher mit mysqldump erstellten Backup Dateien viel länger dauert.

How Can I Speed Up This Process?

Bei setzen der folgenden Flags vor dem Import im Datenbank Dump, kann die Importzeit dramatisch verkürzt werden:

SET autocommit=0;
SET unique_checks=0;
SET foreign_key_checks=0;

Wenn der auto-commit deaktiviert wurde muss am Ende ein manueller commit erfolgen:

COMMIT;

Durch deaktivieren der unique checks und foreign key kann einiges an Geschwindigkeit heraus geholt werden.

Mit dem folgenden Bash-Script könnt ihr das Szenario automatisieren:

#!/bin/bash
echo "SET autocommit=0;
SET unique_checks=0;
SET foreign_key_checks=0;" > backup.sql
mysqldump -u myuser --password=mypassword mydatabase >> backup.sql
echo "COMMIT;" >> backup.sql

Magento: Redirect Funktionen

20. August 2010 at 17:42

Die ReDirect Funktionen findet ihr in der Mage_Core_Controller_Varien_Action class.

/* Redirect to certain url  */
_redirectUrl($url)

/* Redirect to certain path */
_redirect($path, $arguments=array())

/* Redirect to success page */
_redirectSuccess($defaultUrl)

/* Redirect to error page */
_redirectError($defaultUrl)

/* Set referer url for redirect in response */
_redirectReferer($defaultUrl=null)

/*  Identify referer url via all accepted methods (HTTP_REFERER, regular or base64-encoded request param) */
_getRefererUrl()

/* Check url to be used as internal */
_isUrlInternal($url)

For redirect URL:
$url = "http://example.com";
Mage::app()->getFrontController()->getResponse()->setRedirect($url);
For redirect with path and arguments:
Mage::app()->getFrontController()->getResponse()->setRedirect(Mage::getUrl($path, $arguments));

Magento: Session Variable – Set Unset Session Variable

20. August 2010 at 15:48

Es wird eine individuelle Variable mit den Namen „magentoTest“ angelegt. Der Wert für diese ist in diesem Fall „hello magento“.

$session = Mage::getSingleton('core/session', array('name'=>'frontend'));
$session->setMagentoTest('hello magento');

Abfragen der Werte:

$test = Mage::getSingleton('core/session')->getMagentoTest();

Session Variable löschen / unset

Mage::getSingleton('core/session')->setMagentoTest();

Nur eine bestimmte Session-Variable löschen:

Mage::getSingleton('core/session')->unsMagentoTest();

(Im Frontend die Customer oder Core Session benutzen. Im Backend die Adminhtml Session benutzen.)
Core Session:- Mage::getSingleton(‘core/session’)
Customer Session:- Mage::getSingleton(‘customer/session’)
Admin Session:- Mage::getSingleton(‘adminhtml/session’)

Magento: Exception printing is disabled by default for security reasons

5. August 2010 at 12:52

Ihr erhaltet in Magento die Ausgabe „Exception printing is disabled by default for security reasons.“ und wollt mehr Debug-Ausgaben?

Einfach die Datei [magento-root-path]/errors/local.xml.sample umbenennen in [magento-root-path]/errors/local.xml
Und schon wird bei erneuter Ausführung der Fehler erzeugenden Seite das PHP Tracing aktiviert und die Fehlermeldung ausgegeben.

Magento – Form per Ajax Request absenden

26. Juli 2010 at 18:12

Hier ein Beispiel (Produkt zum Warenkorb hinzufügen) zum absenden eines Form per Ajax Request in Magento:

<script type="text/javascript">
 //<![CDATA[
 var productAddToCartForm = new VarienForm('product_addtocart_form');
 productAddToCartForm.submit = function(product_name) {
 if (this.validator.validate()) {
new Ajax.Request($('product_addtocart_form').action, {
 parameters: Form.serialize($('product_addtocart_form'), true),
 area: $('product_addtocart_form'),
 onComplete: function (transport) { }
 });
}
 }.bind(productAddToCartForm);
 //]]>
</script>

Alternative Code aus dem Newsletter

<script type="text/javascript">
//<![CDATA[
function submitSubscribe() {
 new Ajax.Request('<?php echo Mage::getBaseUrl() ?>newsletter/subscriber/newajax/',
 {
 method:'post',
 parameters: $('newsletter-subscribe').serialize(true),
 onLoading: function(){
 $('subscribe_update_div').show();
 $('subscribe_update_div').innerHTML = "<?php echo $this->__('Sending subcribe request ...'); ?>";
 },
 onSuccess: function(transport){
 var response = transport.responseText.evalJSON();
 $('subscribe_update_div').innerHTML = response.message;
 },
 onFailure: function(){
 $('subscribe_update_div').innerHTML = "<?php echo $this->__('Something went wrong ...'); ?>";
 }
 });
 }
//]]>
</script>

Magento: Breadcrumb auf jeder Seite anzeigen

14. Juli 2010 at 12:17

Wenn ihr eine Breadcrumb auf jeder Seite angezeigt haben möchtet, dann könnt ihr das wie folgt über die jeweilige Layout.xml einbinden. Hier ein Beispiel für den Warenkorb aus der checkout.xml:

<checkout_cart_index>
 <reference name="breadcrumbs">
 <action method="addCrumb">
 <crumbName>Home</crumbName>
 <crumbInfo><label>Startseite</label><title>Startseite</title><link>/</link></crumbInfo>
 </action>
 <action method="addCrumb">
 <crumbName>Wkindex</crumbName>
 <crumbInfo><label>Warenkorb</label><title>Warenkorb</title></crumbInfo>
 </action>
 </reference>

Magento Speed up – Magento beschleunigen über htaccess Eintrag

13. Juli 2010 at 16:39

Mit den folgenden Eintrag in der .htaccess Datei im Magento Hauptordner könnt ihr ein Geschwindigkeitsschub von 50 – 200% Erreichen (Ladezeit):

AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml application/x-javascript application/x-json application/x-httpd-php
AddOutputFilter DEFLATE html xml css js php
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
Header append Vary User-Agent

Google nervt Anwender mit Captcha Abfrage bei Suchanfragen

13. Juli 2010 at 14:31

Seit neuesten nervt Google ihre Anwender mit einer Captcha Abfrage bei Suchanfragen. Siehe auch ScreenShot …

Primär kommen diese wenn z.B. über das integrierte firefox-Suchfeld gesucht wird.

Bitte Google hört auf zu nerven sonst wechsel ich noch zu Bing! vergrault Google jetzt so ihre Besucher?

google human captcha form

Update 14.07.2010: Google scheint bemerkt zu haben dass sie da etwas zu strikt aggiert haben, heute noch keine Captcha-Abfrage erhalten.