J'ai quelques fonctions personnalisées PHP pour mon magasin Magento que j'ai enregistrées dans myfunc.php et je dois l'exiger dans quelques fichiers .phtml différents. Comment puis-je le faire?
Je veux dire que 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 skin (/ home/myuser/public_html/app/design/frontend/default/mytheme /) par programmation?
La manière dont les thèmes Magento gèrent les URL réelles est la suivante (dans les vues partielles - fichiers phtml):
echo $this->getSkinUrl('images/logo.png');
Si vous avez besoin du chemin de base sur le disque pour accéder au répertoire image, utilisez:
echo Mage::getBaseDir('skin');
Quelques autres types de répertoires de base sont disponibles dans cet article de blog:
D'abord noter que
Mage::getBaseDir('skin')
retourne niquement chemin d'accès au répertoire skin de votre installation Magento (/votre/magento/dir/skin ).
Vous pouvez accéder au chemin absolu du répertoire de skin actuellement utilisé en utilisant:
Mage::getDesign()->getSkinBaseDir()
Cette méthode accepte un tableau associatif en tant que paramètre facultatif pour modifier le résultat.
Les clés suivantes sont reconnues:
Donc, dans votre cas, la réponse correcte serait:
require(Mage::getDesign()->getSkinBaseDir().DS.'myfunc.php');
Pour l'utiliser en phtml, appliquez:
echo $this->getSkinUrl('your_image_folder_under_skin/image_name.png');
Pour utiliser le chemin de la peau 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 t'aidera.
Pour obtenir skin actuel URL, 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 noyau vers le local et ajouter une fonction à cette classe) et ne pas modifier les fichiers depuis app/code/core.
Pour répondre à votre question, vous pouvez utiliser:
require(Mage::getBaseDir('design').'/frontend/default/mytheme/myfunc.php');
La meilleure pratique (au début) 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 les fichiers phtml, utilisez:
$this->helper('core/extra')->getSomething();
Ou dans tous les lieux:
Mage::helper('core/extra')->getSomething();