it-swarm.com.de

Holen Sie sich Skin-Pfad in Magento?

Ich habe ein paar benutzerdefinierte PHP Funktionen für meinen Magento-Speicher, die ich in myfunc.php gespeichert habe, und ich muss sie in einigen anderen .phtml-Dateien anfordern. Wie mache ich das?

Ich meine, ich kann einen absoluten Pfad verwenden, aber das wäre schmutzig und wahrscheinlich problematisch bei der Migration auf einen anderen Server.

Im Moment stecke ich fest bei:

require('/home/myuser/public_html/app/design/frontend/default/mytheme/myfunc.php');

Wie verweise ich programmgesteuert auf den Skin-Pfad (/ home/myuser/public_html/app/design/frontend/default/mytheme /)?

44
datasn.io

Die Art und Weise, wie Magento-Themes mit tatsächlichen URLs umgehen, ist wie folgt:

echo $this->getSkinUrl('images/logo.png');

Wenn Sie den tatsächlichen Basispfad auf der Festplatte zum Image-Verzeichnis benötigen, verwenden Sie:

echo Mage::getBaseDir('skin');

In diesem großartigen Blog-Beitrag sind einige weitere Basisverzeichnis-Typen verfügbar:

http://alanstorm.com/magento_base_directories

105
philwinkle

Beachten Sie zuerst, dass

Mage::getBaseDir('skin')

gibt nur Pfad zum Skin-Verzeichnis Ihrer Magento-Installation zurück (/your/magento/dir/skin ).

Sie können auf den absoluten Pfad zum aktuell verwendeten Skin-Verzeichnis zugreifen, indem Sie Folgendes verwenden:

Mage::getDesign()->getSkinBaseDir()

Diese Methode akzeptiert ein assoziatives Array als optionalen Parameter zum Ändern des Ergebnisses.

Folgende Schlüssel werden erkannt:

  • _ area frontend (default) oder adminhtml
  • _ package Ihr Paket
  • _ theme dein Theme
  • _ relative Wenn dieser Pfad (als Schlüssel) relativ zu Mage :: getBaseDir ('skin') festgelegt ist, wird er zurückgegeben.

In Ihrem Fall wäre die richtige Antwort also:

require(Mage::getDesign()->getSkinBaseDir().DS.'myfunc.php');
18
Deus777

Um es in phtml zu benutzen, wende Folgendes an:

echo $this->getSkinUrl('your_image_folder_under_skin/image_name.png');

So verwenden Sie den Skin-Pfad in einer cms-Seite:

<img style="width: 715px; height: 266px;" src="{{skin url=images/banner1.jpg}}" alt="title" />

Dieser Teil ====> {{skin url = images/banner1.jpg}}

Ich hoffe, dies wird dir helfen.

13
Nikhil_K_R

Um aktuelle Skin URL zu erhalten, benutze diese Mage::getDesign()->getSkinUrl()

8

Erstens wird es nicht empfohlen, PHP-Dateien mit Funktionen im Design-Ordner zu haben. Sie sollten ein neues Modul erstellen oder erweitern (von Core zu Local einen Helper kopieren und dieser Klasse eine Funktion hinzufügen) und keine Dateien von App/Code/Core ändern.

Um Ihre Frage zu beantworten, können Sie Folgendes verwenden:

require(Mage::getBaseDir('design').'/frontend/default/mytheme/myfunc.php');

Best Practice (zu Beginn) wird es sein, in /app/code/local/Mage/Core/Helper/Extra.php eine PHP-Datei zu erstellen:

<?php
class Mage_Core_Helper_Extra extends Mage_Core_Helper_Abstract
{

    public function getSomething()
    {
        return 'Someting';
    }

}

Und um es in Phtml-Dateien zu benutzen, benutze:

$this->helper('core/extra')->getSomething();

Oder an allen Orten:

Mage::helper('core/extra')->getSomething();
1