MQL-Programmiererin Anja Vogel

Kurze Magento Hilfe

von Magento Certified Developer

und Freelancer Anja Vogel

Übersicht wichtiger Magento 1 Befehle

Tipp: Auf dem iPhone lassen sich die grauen Boxen mit dem Finger verschieben um den ganzen Inhalt sehen zu können.

Um die hier folgenden Magento-Befehle auszuprobieren genügt es, in einer php-Datei, z.B. test.php folgende Zeilen zu Beginn einzufügen:

<?php require_once "app/Mage.php"; Mage::app();

Die zurück gegebenen Werte können mit von mir bevorzugt out() alternativ Dev::log() oder einfach mit z.B. print_r(), var_dump(), Zend_Debug::dump() oder Mage::log() ausgeben werden.

Das Dev_Log Magento Modul existiert bereits seit etwa 2012 und ist entstanden, um weiße Seiten beim Loggen zu verhindern. An manchen Stellen hilft das Modul leider auch nicht, dann sollte man bei Bedarf auf Objekten $object->debug() versuchen.


1.) Mage::app()->Methoden

Front Controller

Mage::app()->getFrontController()->getResponse()->getHeaders(); Mage::app()->getFrontController()->getResponse()->clearAllHeaders(); Mage::app()->getFrontController()->getAction()->getLayout()->getBlock('root') ->setHeaderTitle(Mage::helper('customer')->__('My Account'));

Cookie

Mage::app()->getCookie(); Mage::app()->getCookie()->getLifetime(); Mage::app()->getCookie()->getDomain(); Mage::app()->getCookie()->getPath(); Mage::app()->getCookie()->getStore()->getCode();

Request

Mage::app()->getRequest(); Mage::app()->getRequest()->getParams(); Mage::app()->getRequest()->getPost(); Mage::app()->getRequest()->getQuery(); Mage::app()->getRequest()->getScheme();

Config

Die XML-Konfigurationen werden bei Magento aus allen Dateien und der Datenbank-Konfiguration (Tabelle core_config_data) zu einem großen XML zusammen gefügt. Siehe auch unten getStoreConfig(). Datenbank-Werte überschreiben dabei Datei-Vorgaben. Beispiele:

Gesamter XML Baum

Mage::app()->getConfig()->getXmlString();

Sowie Teile davon

Mage::app()->getConfig()->getNode('global/helpers')->asArray(); Mage::app()->getConfig()->getNode('default/design')->asArray(); Mage::app()->getConfig()->getNode('modules/Mage_Page'); Mage::app()->getConfig()->getNode('frontend/routers'); Mage::app()->getConfig()->getNode('adminhtml/menu'); Mage::app()->getConfig()->getNode('install')->asXml(); Mage::app()->getConfig()->getNode('stores/default'); Mage::app()->getConfig()->getNode('admin/routers'); Mage::app()->getConfig()->getNode('websites/base'); Mage::app()->getConfig()->getNode('crontab')->asXml(); Mage::app()->getConfig()->getNode('adminhtml/layout/updates/adminhtml/file')->asArray(); (array)Mage::app()->getConfig()->getNode('modules')->children(); (array)Mage::getConfig()->getNode('modules')->children();

Locale

// Mage_Core_Model_Locale object: Mage::app()->getLocale(); // Zend_Locale object: Mage::app()->getLocale()->getLocale(); Mage::app()->getLocale()->getLocaleCode(); Mage::app()->getLocale()->getDateFormat(); Mage::app()->getLocale()->getTimeFormat(); Mage::app()->getLocale()->getCurrency();

Store

Mage::app()->getStore(); Mage::getDesign()->getStore()->toArray(); Mage::app()->getStore()->getName(); Mage::app()->getStore()->getId(); Mage::app()->getStore()->getCode(); Mage::app()->getStore()->getWebsiteId();

Layout / Blocks

Mage::app()->getLayout(); Mage::app()->getLayout()->getAllBlocks();

Cache

Mage::app()->getCache(); Mage::app()->getCache()->getBackend()->getTmpDir(); Mage::app()->cleanCache();

2.) Mage::Methoden()

Config

Mage::getStoreConfig('web/default/cms_no_route'); Mage::getStoreConfig('catalog/productalert/allow_stock'); Mage::getStoreConfigFlag('customer/startup/redirect_dashboard'); Mage::getStoreConfigFlag('checkout/options/enable_agreements');

Design

Mage::getDesign(); Mage::getDesign()->getPackageName(); Mage::getDesign()->getThemeList(); Mage::getDesign()->getDefaultTheme(); Mage::getDesign()->getFallbackTheme(); Mage::getDesign()->getSkinBaseDir(); Mage::getDesign()->getSkinBaseUrl();

URLs

Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB); // z.B. http://www.anjavogel.de/ Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_LINK); // z.B. http://www.anjavogel.de/index.php/ Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_MEDIA); // z.B. http://www.anjavogel.de/media/ Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_SKIN); // z.B. http://www.anjavogel.de/skin/ Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_JS); // z.B. http://www.anjavogel.de/js/ Mage::getUrl('checkout/onepage/success'); Mage::getUrl('customer/account/edit', array('_secure' => true)); Mage::getUrl('*/*/*', array('_use_rewrite' => true, '_current' => true));

Pfade

Mage::getBaseDir('app'); // MAGENTO_ROOT/app Mage::getBaseDir('base'); // MAGENTO_ROOT Mage::getBaseDir('code'); // MAGENTO_ROOT/app/code Mage::getBaseDir('design'); // MAGENTO_ROOT/app/design Mage::getBaseDir('etc'); // MAGENTO_ROOT/app/etc Mage::getBaseDir('lib'); // MAGENTO_ROOT/lib Mage::getBaseDir('locale'); // MAGENTO_ROOT/app/locale Mage::getBaseDir('media'); // MAGENTO_ROOT/media Mage::getBaseDir('skin'); // MAGENTO_ROOT/skin Mage::getBaseDir('var'); // MAGENTO_ROOT/var Mage::getBaseDir('tmp'); // MAGENTO_ROOT/var/tmp Mage::getBaseDir('cache'); // MAGENTO_ROOT/var/cache Mage::getBaseDir('log'); // MAGENTO_ROOT/var/log Mage::getBaseDir('session'); // MAGENTO_ROOT/var/session Mage::getBaseDir('upload'); // MAGENTO_ROOT/var/upload Mage::getBaseDir('export'); // MAGENTO_ROOT/var/export

Models

Mage::getModel('cms/block'); Mage::getModel('sales/order'); Mage::getModel('customer/customer')->load($customerId); Mage::getModel('catalog/product'); Mage::getModel('catalog/category')->load($categoryId);

Collections

Mage::getModel('customer/customer')->getCollection()->getSize(); Mage::getModel('catalog/category')->getCollection()->getFirstItem(); Mage::getModel('api/roles')->getCollection()->getSelect();

SQL der Collections

(string)Mage::getModel('catalog/product')->getCollection()->getSelect(); Mage::getModel('catalog/product')->getCollection()->getSelect()->assemble(); Mage::getModel('catalog/product')->getCollection()->getSelect()->__toString(); Mage::getModel('catalog/product')->getCollection()->load(1); // Ausgabe im Browser!

Session

Mage::getSingleton('customer/session'); Mage::getSingleton('checkout/session'); Mage::getSingleton('core/session'); Mage::getSingleton('catalog/session'); Mage::getSingleton('admin/session'); Mage::getSingleton('adminhtml/session'); Mage::getSingleton('rss/session'); Mage::getModel('dataflow/session');

Messages

Mage::getSingleton('core/session')->addSuccess($message); Mage::getSingleton('checkout/session')->addNotice($message); Mage::getSingleton('customer/session')->addError($message);

Version

Mage::getVersion(); Mage::getVersionInfo(); Mage::getEdition();

Registry

if (!Mage::registry('current_category') {
    Mage::register('current_category', $category);
}
$category = Mage::registry('current_category');
Mage::unregister('current_category');

Exceptions

try {
    Mage::throwException('test');
} catch (Mage_Core_Exception $e) {
    Mage::logException($e);
    //Mage::setIsDeveloperMode(true);
    //Mage::printException($e);
}

3.) Codeschnipsel

Verschlüsseln / entschlüsseln

$encryptor = Mage::helper('core')->getEncryptor(); $encrypted = $encryptor->encrypt($string); $string = $encryptor->decrypt($encrypted);

E-Mails verschicken

$order = Mage::getModel('sales/order')->load($orderId); $order->sendNewOrderEmail(); $queue = Mage::getModel('core/email_queue'); $queue->send(); $invoice = Mage::getModel('sales/order_invoice')->load($invoiceId); $invoice->sendEmail(); $shipment = Mage::getModel('sales/order_shipment')->load($shipmentId); $shipment->sendEmail();

4.) Nützliches (development)

E-Mails in Datei umleiten

In Mage_Core_Model_Email_Template in der send() Methode vor $mail->send(); die E-Mail durch folgenden Quellcode in eine Datei schreiben. Da die E-Mail auf diese Weise immer in die gleiche Datei geschrieben wird, läßt sie sich bequem im Browser wiederholt aufrufen:

$file = Mage::getBaseDir('tmp') . DS . $subject . '.html'; file_put_contents($file, $message); $this->getTemplateId(); // Info nach Bedarf return true; // nach Bedarf

Observer Events herausfinden

In der Datei Mage.php nach dieser Methode suchen und $name loggen:

public static function dispatchEvent($name, array $data = array())
{
    Mage::log($name);

Auf der Success-Seite arbeiten

In der successAction() vom OnepageController.php diese eine Zeile auskommentieren. So läßt sich die Seite /checkout/onepage/success immer wieder aufrufen:

//$session->clear();

Newsletter Daten einer Kunden-Bestellung

Das kann z.B. auf der Success-Seite genutzt werden:

$subscriber = Mage::getModel('newsletter/subscriber') $subscriber->loadByEmail($order->getCustomerEmail());

PHP 7

Kommt es bei Umstellung zu PHP 7 zu diesem Fehler: "Notice: Array to string conversion in .../app/code/core/Mage/Core/Model/Layout.php on line 555" geschweifte Klammern in der angegebenen Zeile wie folgt setzen und die Datei nach app/code/local/... kopieren:

public function getOutput()
{
    $out = '';
    if (!empty($this->_output)) {
        foreach ($this->_output as $callback) {
            // $out .= $this->getBlock($callback[0])->$callback[1]();
            $out .= $this->getBlock($callback[0])->{$callback[1]}();
        }
    }
    return $out;
}

Rechte setzen

sudo find . -type f -exec chmod 664 {} \; sudo find . -type d -exec chmod 775 {} \; sudo chmod -R 777 media var sudo chown -R www-data:www-data .

Magento 2

Hier geht es weiter mit einer kleinen Magento 2 Hilfe.