Ü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.