Privates Blog von Christian Münch

Magento DB resourcen / connections auflisten

<?php

require_once 'app/Mage.php';

Mage::app();

$xml = Mage::app()->getConfig()->getNode('global/resources');
foreach ($xml->children() as $node) {
    echo $node->getName() . PHP_EOL;
}

Es wird dann eine Liste der definierten DB-Ressourcen aufgelistet:

  • default_setup
  • default_write
  • default_read
  • core_setup
  • core_write
  • core_read
  • db
  • eav_setup
  • admin_setup
  • adminnotification_setup
  • cron_setup
  • directory_setup
  • dataflow_setup
  • cms_setup
  • index_setup
  • customer_setup
  • catalog_setup
  • catalogrule_setup

….

Speichern von mehreren Objekten über eine Transaktion

<?php

// $foo = Mage::getModel('.....
// $bar = Mage::getModel('.....

$transaction = Mage::getModel('core/resource_transaction');
$transaction->addObject($foo);
$transaction->addObject($bar);
$transaction->save(); // runs save on all objects. On error -> rollback

Magento nutzt das core/resource_transaction Model selbst bei Speichern einer Order während des Checkouts. Es kann aber auch im eigenen Modul nützlich sein.

Magento automatisch installieren

Via Vagrant / Puppet

Bei der vorletzten PHPUG Rheinhessen hatte ich bereits eine automatische Magento Installation über Vagrant und Puppet vorgestellt. Damit ist es möglich eine komplette Virtuelle Maschine mit Magento innerhalb von Minuten hochzuziehen.
Das ist super, wenn man mal eben ein wirklich leeres System benötigt. Das ganze ist keine Hexerei, denn Magento bietet über die install.php schon die Möglichkeit ohne den Aufruf der Oberfläche eine Installation von der Kommandozeile aus durchzuführen.

Magento Adminbereich besser absichern / 3 einfach Möglichkeiten

Admin-URL anpassen

Die erste Maßnahme die bei jedem Shop in einer Liveumgebung durchgeführt werden sollte ist das Ändern der Admin-URL. Diese kann bequem in der Systemkonfiguration unter “Admin -> Admin Base URL” angepasst werden.
Dort einfach “Use Custom Admin Base URL” auf “Yes” einstellen. Im daraufhin erscheinenden Textfeld kann dann die URL eingetragen werden.
Die Base-URL sollte mit “https://” beginnen. Das SSL Zertifikat setze ich bei einem Live-Shop einfach einmal vorraus.

Eine bessere Übersicht bei Magento Katalog-Preisregeln

Inspiriert von Fabrizios Verbesserungen bei der  Webseite/Store/Store-View Darstellung  (http://www.fabrizio-branca.de/magento-website-store-groups-store-views.html) kam mir die unübersichtliche Auflistung von Katalog-Preisregeln in den Sinn.

Von Fabrizios Entusiasmus angesteckt habe ich mich nun hingesetzt und ein Magento Modul entwickelt.
Das Modul tauscht das Grid unter “Promotions -> Catalog Price Rules” aus und entfernt den Pager. Es werden nun alle Regeln auf einer Seite angezeigt.
Ebenso habe ich die einfache Auflistung durch eine Gruppierung nach Webseiten geändert. Wird eine Regel auf mehr als einer Webseite verwendet, wird die Regel bei jeder zugeordneten Webseite aufgelistet.
Alle Regeln sind nach Priorität sortiert. Ist eine Regeln deaktiviert oder vom Datum her abgelaufen wird der Name der Regel durchgestrichen.

DevOp: Puppet zum installieren von jsmin

Hier mein puppet jsmin.pp, welches jsmin für die Kommandozeile unter Ubuntu installiert:

class dev-tools::jsmin {
    exec { "download-js-min":
            unless  => "/usr/bin/test -d /usr/local/src/JSMin",
            cwd     => "/usr/local/src",
            command => "/usr/bin/git clone https://github.com/douglascrockford/JSMin.git"
    }   

    exec { "compile-js-min":
            cwd      => "/usr/local/src/JSMin",
            command  => "/usr/bin/gcc -o jsmin jsmin.c",
            creates  => "/usr/bin/src/JSMin/jsmin",
            require  => Exec["download-js-min"]
    }   

    file { "/usr/local/bin/jsmin":    
            ensure   => "/usr/local/src/JSMin/jsmin",
            require  => Exec["compile-js-min"]
    }   
}

DevOp: Puppet zum installieren von PHPStorm

Puppet zum installieren von PHPStorm:

class dev-tools::phpstorm ($version = "3.0", $revision = "111.19", $eap = false) {

        exec { "download-phpstorm":
                unless => "/usr/bin/test -d /opt/PhpStorm-${revision}",
                cwd => "/tmp",
                command => $eap ? {
                        true  => "/usr/bin/wget http://download.jetbrains.com/webide/PhpStorm-EAP-${revision}.tar.gz",
                        false => "/usr/bin/wget http://download.jetbrains.com/webide/PhpStorm-${revision}.tar.gz",
                },
                creates => "/tmp/PhpStorm-${version}.tar.gz"
        }

        exec { "untar-phpstorm":
                cwd => "/opt",
                command => $eap ? {
                        true  => "/bin/tar xvfz /tmp/PhpStorm-EAP-${revision}.tar.gz",
                        false => "/bin/tar xvfz /tmp/PhpStorm-${revision}.tar.gz",
                },
                creates => "/opt/PhpStorm-${revision}",
                require => [Exec["download-phpstorm"]]
        }

        file { "/opt/PhpStorm-${revision}/bin/phpstorm.vmoptions":
                source => "puppet:///modules/dev-tools/phpstorm/phpstorm.vmoptions"
        }

        file { "/usr/share/applications/phpstorm.desktop":
                content => template("dev-tools/phpstorm.desktop.erb")
        }
}

Die Puppet-Klasse installiert PHPStorm in das Verzeichnis **/opt
**Über Parameter kann die Versionsnummer angegeben werden. Die Verwendung von Parametern wird im puppet Handbuch unter http://docs.puppetlabs.com/learning/modules2.html erklärt.

Das Puppet setzt zusätzlich die Default-Java VM Einstellungen von PHPStorm und erhöht den zur Verfügung stehenden Arbeitsspeicher. 

Eigene Tools in PHPStorm einbinden / Magento Cache über IDE leeren

Ich als Magento Entwickler bin das ständige Cache leeren bereits gewohnt und habe mir für meine Linux Workstation ein Bash-Alias “clear-magento-cache” angelegt.

alias clear-magento-cache="rm -Rf var/cache/mage--\*"

Den Befehl rufe ich dann immer in einem geöffneten Terminal Fenster auf. Wie ihr seht muss ich hierfür aber meine IDE verlassen. Besser wäre es man könnte direkt einen Button in der IDE klicken. Da ich seit einiger Zeit PHPStorm kennenlerne (man entdeckt jeden Tag etwas neues) dachte ich mir ich schaue mal was die IDE hier bereithält. Und ich konnte wieder etwas neues entdecken.

Magento 2.0 Entwicklungsversion - Ein erster Einblick

Magento 2

Magento hat die Entwicklungsversion des 2.0 Branch in einem öffentlichen SVN Repository auf dem Server bereitgestellt. Um einen Blick auf die Entwicklung zu werfen kann man sich den Code einfach unter der URL http://mage2.magentocommerce.com/svn/public/ auschecken und einmal reinschauen. Ein Blick unter die Haube lohnt sich. Wer Angst hatte, dass sich mit Version 2 alles ändert, der kann an dieser Stelle beruhigt sein. Es ist nicht alles neu Designt worden. Man fühlt sich direkt heimisch und findet seine Klassen. Die Controller, Models und Blocks sind noch an der gleichen Stelle abgelegt. Alles was allerdings mit der Darstellung zu tun hat, findet man nun direkt im Modul. Kein lästiges scrollen mehr in der IDE!!!