Magento Online Doku / Documentation

18. Mai 2011 at 14:33

Eine strukturierte Online Doku inkl. Datenstruktur, Klassenhierarchie, etc. findet ihr unter folgendem Link:

docs.databyte.at/magento/community/1.5/

Magento: Session Success or Failure Message after redirect – Magento HowTo

27. April 2011 at 10:14

Add a Success, Info or Error Message to the session and save this for re-direction in Magento

//A Success Message
 Mage::getSingleton('checkout/session')->addSuccess("Your cart has been updated successfully!");
 //A Error Message
 Mage::getSingleton('checkout/session')->addError("Your cart has been updated successfully!");
 //A Info Message (See link below)
 Mage::getSingleton('checkout/session')->addNotice("This is just a FYI message...");
 //These two lines are required to get it to work
 session_write_close(); //THIS LINE IS VERY IMPORTANT!
 $this->_redirect('checkout/cart');

Magento: PHP-Code in Content-Seiten (CMS) einbinden – HowTo

26. April 2011 at 18:00

Aus Sicherheitsgründen ist es nicht gestattet in Magento-CMS-Pages direkt PHP-Code einzubinden.

Über dem folgenden Weg ist dies möglich:

Im Template Ordner muss dazu eine Datei zum einbinden vorhanden oder angelegt werden. Z.B. die test.phtml welche im Ordner  /app/design/frontend/default/default/test/test.phtml abgelegt wird.

In dieser Datei kann, wie in den phtml-template-files üblich, php-code aufgerufen werden, z.b.:

<strong><?php echo "Hello World"; ?></strong>

In der CMS-Page ruft ihr diese Template-Datei wie folgt auf:

{{block type="core/template" template="test/test.phtml"}}

Magento: Attribute zur Checkout-Quote hinzufügen

14. April 2011 at 17:01

Zuerst muss in der Datenbank die Quote Tabelle entsprechend mit dem neuen Attribute erweitert werden, dies geht wie gewohnt über die setup-scripte (z.B. mysql4-install-0.0.X.php):

$installer = $this;
$installer->startSetup();
$installer->addAttribute('quote', 'new_attribute', array(
 'label'                        => 'New Attribute',
 'type'                        => 'varchar',
));
$installer->endSetup();

Danach könnt ihr, z.b. im OnepageController.php dieses Attribute wie folgt mit Werten füllen:

Mage::getSingleton('checkout/session')->getQuote()->setNewAttribute('value');
 Mage::getSingleton('checkout/session')->getQuote()->collectTotals();
 Mage::getSingleton('checkout/session')->getQuote()->save();

Be careful on input and type. Input means the input type of the attribute. And type means the input type in database.

For textfield it will be:
'input' => 'text',
'type' => 'text',

For textarea it will be:
'input' => 'textarea',
'type' => 'text',

For date field it will be:
'input' => 'date',
'type' => 'datetime',

For select list it will be:
'input' => 'select',
'type' => 'text',

For boolean select it will be:
'input' => 'boolean',
'type' => 'int',

Magento: Admin URL für Admin-Backend-Bereich ändern – Anleitung / HowTo

13. April 2011 at 16:42

Den Pfad in der URL zum Magento Admin-Backend-Bereich könnt ihrin der local.xml unter app/etc/ im folgenden Bereich ändern:

<admin>
 <routers>
 <adminhtml>
 <args>
 <frontName><![CDATA[admin]]></frontName>
 </args>
 </adminhtml>
 </routers>
 </admin>

 

 

Wichtig ist dabei der Teil wo „Admin“ steht bei <frontName><![CDATA[admin]]></frontName>, soll der neue path lauten „admin-admin“ ändert den Part wie folgt: <frontName><![CDATA[admin-admin]]></frontName>

Magento: IE9 fix

1. April 2011 at 10:56

magento ecommerce logo

Nach der Veröffentlichung es neuen Internet-Explorer 9 (kurz: IE9), berichten einige Benutzer über Probleme mit Magento und JavaScript. Die Ursache ist ein geändertes DOM-Handling im IE9, die in Magento verwendete Ajax-Bibliothek Prototype berücksichtigt dies noch nicht berücksichtigt. In der aktuellen Prototype Version 1.7 ist dieser Fehler bereits behoben. Allerdings setzen die meisten Magento-Installationen noch ältere Prototype-Bibliotheken ein.

Durch hinzufügen folgender Meta-Tags könnt ihr diesen Fehler temporär umgehen:

<meta http-equiv="X-UA-Compatible" content="IE=8" />
<meta http-equiv="X-UA-Compatible" content="IE=7" />

Magento: eigene Events mit Observer definieren

18. Februar 2011 at 14:15

Events mit Hilfe des Observer im Magento definiert ihr in der config.xml des Modules wie folgt (bsp. Event in der Customer_Adress-Klasse):

<frontend>
<events>
<namespace_module_address_save_after>
<observers>
<namespace_module_observer>
<type>singleton</type>
<class>namespace_module/observer</class>
<method>customerSaveFrontEnd</method>
</namespace_module_observer>
</observers>
</namespace_module_address_save_after>
</events>
 </frontend>

Der Aufruf in PHP in der entsprechenden Funktion:

$eventArgs = array(
 'address' => $address,
 'request' => $this->getRequest(),
 );
 Mage::dispatchEvent('customer_address_save_after', $eventArgs);

Die aufgerufene Funktion in der Observer-Klasse:

public function customerSaveFrontEnd(Varien_Event_Observer $observer)
 {
// add your code here
 }

Magento Module ohne Magento Connect laden ?

4. Januar 2011 at 12:44

magento ecommerce logo

Ihr möchtet eine Magento Extension ohne Magento-Connect laden?

Über die Webseite connect.get-the-code.de ist dies möglich. Es gibt keine Garantie dass ihr alle Module findet, meine Tests waren bisher viel versprechend positiv und die Trefferquote bisher 100%!

Magento: Alle Produkt-Attribute und deren Optionen einer Collection ausgeben

3. Januar 2011 at 12:16

Mit dem folgenden Code könnt ihr in Magento eine Liste aller Attribute und deren Optionen ausgeben.

require_once $_SERVER['DOCUMENT_ROOT'] . '/app/Mage.php';
umask(0);
Mage::app();
$product = Mage::getModel('catalog/product');
$collection = Mage::getResourceModel('eav/entity_attribute_collection')
                ->setEntityTypeFilter($product->getResource()->getTypeId());
echo "<pre>\n";
foreach ($collection as $attribute) {
    echo $attribute['attribute_code'] . "\n";
    $collection = Mage::getResourceModel('eav/entity_attribute_collection')
                    ->setEntityTypeFilter($product->getResource()->getTypeId())
                    ->addFieldToFilter('attribute_code', $attribute['attribute_code']);
    $_attribute = $collection->getFirstItem()->setEntity($product->getResource());
    $attribute_options = $_attribute->getSource()->getAllOptions(false);
    if ($attribute_options) {
        foreach ($attribute_options as $option) {
            if ($option['label']) {
                echo "\t" . $option['label'] . "\n";
            }
        }
    }
}
echo "</pre>\n";

Magento / Import in MySQL 5.0 – USING BTREE Error

19. November 2010 at 17:22

Wenn ihr ein MySQL-Datenbank-Dump in eine MySQL 5.0 importieren möchtet welche mit mysqldump auf einer 5.1 erzeugt wurde, dann bekommt ihr höchstwahrscheinlich eine Fehlermeldung wie die folgende:

Der Grund ist dass die key syntax von 5.0 auf 5.1 wie folgt geändert wurde:
mysql50
UNIQUE KEY IDX_BASE( entity_type_id, entity_id, attribute_id, store_id ) USING BTREE,
mysql51
UNIQUE KEY IDX_BASE USING BTREE ( entity_type_id, entity_id, attribute_id, store_id ),

Leider gibt es kein aktuellen Kompatabilitäts-Modus like –comptability=mysql50 in mysqldump.
Es kann zwar mysqldump –comptability=mysql40 benutzt werden, allerdings auf eigene Gefahr 😉

Mit dem folgenden Befehl könnt ihr in der Bash den dump vor dem Import bereinigen (benutzt das consolen-programm „sed“):

sed -i -r 's/\(([^)]+)\) USING BTREE/USING BTREE (\1)/g' magento.sql