Lokale Verzeichnispfade auslesen

In Magento benötigt man häufig Pfade zu lokalen Verzeichnissen, um Dateien auszulesen, zu schreiben, zu bearbeiten oder zu referenzieren. Das Shopsystem bietet Hilfsmethoden, mit denen diese Informationen ausgelesen werden können. Die Aufrufe sollten anstatt fix codierter Pfade verwendet werden, um Probleme bei Änderungen in der Verzeichnisstruktur zu vermeiden.

Die folgenden Befehle sind überall verwendbar:

  • in Controllern,
  • Model-Klassen,
  • Block-Klassen sowie
  • in .phtml-Dateien und
  • Dateien eigener Bibliotheken.
  • Ebenso können die Pfade außerhalb von Magento verwendet werden, wenn zuvor das Mage-Framework initialisiert wurde.

Achtung: Die Pfade werden immer ohne Verzeichnistrenner am Ende („trailing slash“) ausgegeben.

Lokale Pfade

VerzeichnisBeispiel-CodeBeispiel-Ausgabe
Shop-Basis-Verzeichnis$path = Mage::getBaseDir('base');/path/to/magento
app-Verzeichnis
Grundverzeichnis für Magento-Code
$path = Mage::getBaseDir('app');/path/to/magento/app
code-Verzeichnis
für die Code-Pools community, core und local
$path = Mage::getBaseDir('code');/path/to/magento/app/code
design-Verzeichnis$path = Mage::getBaseDir('design');/path/to/magento/app/design
locale-Verzeichnis
Übersetzungsdateien
$path = Mage::getBaseDir('locale');/path/to/magento/app/locale
lib-Verzeichnis
Pfad zu den Vendor-Bibliotheken (Varien, Zend Framework, ...)
$path = Mage::getBaseDir('lib');/path/to/magento/lib
media-Verzeichnis
Produktbilder etc.
$path = Mage::getBaseDir('media');/path/to/magento/media
skin-Verzeichnis
Übergeordnetes Verzeichnis für die Frontend- und Admin-Skins
$path = Mage::getBaseDir('skin');/path/to/magento/skin
var-Verzeichnis
Übergeordnetes Verzeichnis für Cache-Dateien, Error-Logs etc.
$path = Mage::getBaseDir('var');/path/to/magento/var
tmp-Verzeichnis
Temporäre Dateien
$path = Mage::getBaseDir('tmp');/path/to/magento/var/tmp
cache-Verzeichnis
Cache-Dateien
$path = Mage::getBaseDir('cache');/path/to/magento/var/cache
log-Verzeichnis
Log-Dateien
$path = Mage::getBaseDir('log');/path/to/magento/var/log
session-Verzeichnis
Session-Dateien
$path = Mage::getBaseDir('session');/path/to/magento/var/session
upload-Verzeichnis
Verzeichnis, in das Dateien aus Backend-Upload-Formularen gespeichert werden
$path = Mage::getBaseDir('upload');/path/to/magento/media/upload
export-Verzeichnis
Ziel-Ordner für Backend-Export-Funktionen
$path = Mage::getBaseDir('export');/path/to/magento/var/export
Modul-Verzeichnis
Grund-Verzeichnis der Extension
$path = Mage::getModuleDir('','Mage_Core');/path/to/magento/app/code/core/Mage/Core
Modul-Konfigurationsverzeichnis
Verzeichnis für die Konfigurations-Dateien der Extension
$path = Mage::getModuleDir('etc','Mage_Core');/path/to/magento/app/code/core/Mage/Core/etc
Modul-controller-Verzeichnis
Verzeichnis für die Controller der Extension
$path = Mage::getModuleDir('controllers','Mage_Core');/path/to/magento/app/code/core/Mage/Core/controllers
Modul-locale-Verzeichnis
Verzeichnis für die Übersetzungen (Sprachdateien) der Extension
$path = Mage::getModuleDir('locale','Mage_Core');/path/to/magento/app/code/core/Mage/Core/locale
Modul-SQL-Verzeichnis
Verzeichnis für die (SQL-)Installations-Dateien der Extension
$path = Mage::getModuleDir('','Mage_Core');/path/to/magento/app/code/core/Mage/Core/sql
Skin-Basis-Verzeichnis
Grundverzeichnis für den Skin
$path = Mage::getDesign()->getSkinBaseDir();/path/to/magento/skin/frontend/default/default
Skin-Basis-Verzeichnis relativ
Grundverzeichnis für den Skin relativ zum skin-Verzeichnis
$path = Mage::getDesign()->getSkinBaseDir(array('_relative' => true));frontend/default/default
Theme-locale-Verzeichnis
Verzeichnis für die Übersetzungsdateien des Themes in der aktuellen Storeview. Wie bei "Skin-Basis-Verzeichnis relativ" kann als Parameter _relative angegeben werden.
$path = Mage::getDesign()->getLocaleBaseDir();/path/to/magento/app/design/frontend/default/default/locale/de_DE
Theme-Verzeichnisse
Der Methodenaufruf ohne Parameter-Array gibt das Verzeichnis des Themes zurück.
Im Parameter-Array können folgende Parameter angegeben werden:
_relative: relativer Pfad
_area: adminhtml|frontend|install
_package: Package-Name
_theme: Theme-Name
Es wird nicht überprüft, ob die entsprechenden Areas, Packages und Themes tatsächlich existieren.
$path = Mage::getDesign()->getBaseDir();
---
$path = Mage::getDesign()->getBaseDir(array(
'_relative' => true,
'_area' => 'adminhtml',
'_package' => 'foo',
'_theme' => 'bar'
));
/path/to/magento/app/design/frontend/default/default
---
adminhtml/foo/bar
Pfad zu Datei in Theme
Sucht die Datei im angegebenen (bzw. aktuellen) Theme und versucht sie im Fallbacktheme zu finden, falls sie im angegebenen Theme nicht existiert. Parameter können wie in "Theme-Verzeichnisse" angegeben werden.
$path = Mage::getDesign()->getFilename('etc/widget.xml');/path/to/magento/app/design/frontend/default/default//etc/widget.xml

Quelle(n) & weitere Hinweise:

2 Antworten

  1. Matthias sagt:

    Gute Sache! Danke dafür 😉

    Ich habe mir für sowas ein gist angelegt und alles bunt reingewürfelt – eventuell hilft es Dir ja auch einmal: https://gist.github.com/klein0r/5441524

  1. 01.06.2011

    […] zu vermeiden.Ich habe die Befehle von Magento zusammen mit Beispiel-Pfaden in einer Tabelle als Cheatsheet online gestellt. Ihr könnt damit die gewünschten Verzeichnisse an den folgenden […]