Obtenir le chemin de la peau dans Magento?

J’ai quelques fonctions PHP personnalisées pour mon magasin Magento que j’ai stockées dans myfunc.php et j’ai besoin de quelques fichiers .phtml différents. Comment je fais ça?

Je veux dire, je peux utiliser un chemin absolu mais ce serait sale et probablement problématique lors de la migration vers un autre serveur.

Pour l’instant je suis coincé avec:

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

Comment faire référence au chemin de la peau (/ home / myuser / public_html / app / design / frontend / default / mytheme /) par programmation?

La façon dont les thèmes Magento traitent les URLs réelles est telle (dans la vue partielle – fichiers phtml):

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

Si vous avez besoin du chemin de base réel sur le disque vers le répertoire image, utilisez:

echo Mage::getBaseDir('skin');

Quelques autres types de répertoires de base sont disponibles dans cet excellent article:

http://alanstorm.com/magento_base_directories

Première note que

 Mage::getBaseDir('skin') 

ne renvoie que le chemin d’access au répertoire skin de votre installation Magento ( / votre / magento / dir / skin ).

Vous pouvez accéder au chemin absolu du répertoire de la peau actuellement utilisé en utilisant:

 Mage::getDesign()->getSkinBaseDir() 

Cette méthode accepte un tableau associatif comme paramètre facultatif pour modifier le résultat.

Les clés suivantes sont reconnues:

  • _area frontend (par défaut) ou adminhtml
  • _packer votre colis
  • _theme votre thème
  • _relative lorsque ceci est défini (en tant que clé), le chemin relatif à Mage :: getBaseDir (‘skin’) est renvoyé.

Donc, dans votre cas, la réponse correcte serait:

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

Pour l’utiliser en phtml s’appliquent:

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

Pour utiliser le chemin de la peau dans la page cms:

 title 

Cette partie ====> {{skin url = images / banner1.jpg}}

J’espère que cela t’aidera.

Pour obtenir l’ URL de la peau actuelle, utilisez cette Mage::getDesign()->getSkinUrl()

Tout d’abord, il n’est pas recommandé d’avoir des fichiers php avec des fonctions dans le dossier de conception. Vous devez créer un nouveau module ou étendre (copier du kernel vers un assistant local et append une fonction à cette classe) et ne pas modifier les fichiers de l’application / code / core.

Pour répondre à votre question, vous pouvez utiliser:

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

La meilleure pratique (comme début) sera de créer dans /app/code/local/Mage/Core/Helper/Extra.php un fichier php:

  

Et pour l'utiliser dans les fichiers phtml:

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

Ou dans tous les lieux:

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

Pour obtenir ce fichier, utilisez le code ci-dessous.

 include(Mage::getBaseDir('skin').'myfunc.php'); 

Mais ce n’est pas une manière correcte. Pour append vos fonctions personnalisées, vous pouvez utiliser le fichier ci-dessous.

 app/code/core/Mage/core/functions.php 

Veuillez éviter d’utiliser la fonction PHP sous le répertoire skin.