44 votes

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 je dois les demander dans plusieurs fichiers .phtml différents. Comment dois-je m'y prendre ?

Je veux dire que je peux utiliser un chemin absolu mais cela 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 puis-je faire référence au chemin du skin ( /home/myuser/public_html/app/design/frontend/default/mytheme/ ) de manière programmatique ?

Merci !

105voto

philwinkle Points 3749

La façon dont les thèmes Magento traitent les url réels est la suivante (dans les partiels de vue - 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 de l'image, utilisez :

echo Mage::getBaseDir('skin');

D'autres types de répertoires de base sont disponibles dans cet excellent article de blog :

http://alanstorm.com/magento_base_directories

18voto

Deus777 Points 151

Notez d'abord que

Mage::getBaseDir('skin')

renvoie à sólo chemin vers le répertoire skin de votre installation Magento ( /votre/magento/dir/skin ).

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

Mage::getDesign()->getSkinBaseDir()

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

Les touches suivantes sont reconnues :

  • _zone front-end (par défaut) ou adminhtml
  • _package votre paquet
  • _theme votre thème
  • _relatif quand ceci est défini (comme une clé) le chemin relatif à Mage::getBaseDir('skin') est retourné.

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

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

13voto

Nikhil_K_R Points 1171

Pour l'utiliser en phtml, appliquez :

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

Pour utiliser le chemin du skin dans la page cms :

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

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

J'espère que cela vous aidera.

8voto

Jitendra Points 1

Pour obtenir l'URL du skin actuel dans l'Helper, utilisez la fonction Mage::getDesign()->getSkinUrl().

1voto

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 depuis le noyau vers une classe d'aide locale et ajouter une fonction à cette classe) et ne pas modifier les fichiers de app/code/core.

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

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

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

<?php
class Mage_Core_Helper_Extra extends Mage_Core_Helper_Abstract
{

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

}

Et pour l'utiliser dans des fichiers phtml, utilisez :

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

Ou dans tous les endroits :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X