2012-04-28 11 views
43

Tengo algunas funciones PHP personalizadas para mi tienda Magento que he almacenado en myfunc.php y necesito solicitarlo en algunos archivos .phtml diferentes. ¿Cómo puedo hacer eso?Obtener el camino de la piel en Magento?

Quiero decir que puedo usar una ruta absoluta, pero eso sería sucio y probablemente problemático al migrar a otro servidor.

Por ahora tengo que cargar con:

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

¿Cómo refiero a la trayectoria de la piel (/ home/miUsuario/public_html/app/design/frontend/default/mytheme /) mediante programación?

+1

Por favor no ponga PHP código de función con el tema. Esto debería estar en el módulo ('app/code/X/...') – Alex

Respuesta

104

La forma en que los temas de Magento manejan real de la URL de como tal (en la vista parciales - archivos phtml):

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

Si necesita la ruta de la base real en el disco para el uso directorio de la imagen:

echo Mage::getBaseDir('skin');

Algunos tipos de directorio de base más están disponibles en esta gran entrada de blog:

http://alanstorm.com/magento_base_directories

-1

Para obtener ese archivo, utilice el siguiente código.

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

Pero no es una forma correcta. Para agregar sus funciones personalizadas, puede usar el siguiente archivo.

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

Amablemente evite usar la función de PHP debajo de dir de la piel.

+0

Cualquier modificación hecha en la aplicación/código/núcleo se sobrescribirá al momento de la actualización de Magento, y por lo tanto, no es aconsejable realizar ningún cambio dentro de esa jerarquía. –

13

utilizarlo en phtml aplican:

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

Para utilizar la ruta de la piel en la página cms:

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

Esta parte ====> {{url = piel images/banner1.jpg}}

Espero que esto te ayude.

+0

¿Qué se agrega a la respuesta actualmente aceptada? Esto es exactamente lo mismo que se sugiere allí. Esto debería ser un comentario, no una respuesta. Verifique esta [pregunta de metaSO] (http://meta.stackexchange.com/questions/7656/how-do-i-write-a-good-answer-to-a-question) y [Jon Skeet: Coding Blog] (http://msmvps.com/blogs/jon_skeet/archive/2009/02/17/answering-technical-questions-helpfully.aspx) sobre cómo dar una respuesta correcta. – Yaroslav

17

en primer lugar que

Mage::getBaseDir('skin') 

vuelve única camino hacia la piel directorio de su instalación de Magento (/tu/magento/dir/piel).

Puede acceder ruta absoluta al directorio de la piel utilizan actualmente usando:

Mage::getDesign()->getSkinBaseDir() 

Este método acepta una matriz asociativa como parámetro opcional para modificar resultado.

siguientes teclas son reconocidos:

  • _Área frontend (por defecto) o adminhtml
  • _package su paquete
  • _theme su tema
  • _relative cuando se establece esta (como una clave) ruta relativa a Mage :: getBaseDir ('skin') se devuelve.

Así que en su caso la respuesta correcta sería:

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

En primer lugar, no se recomienda tener los archivos php con funciones en la carpeta de diseño. Debe crear un nuevo módulo o ampliar (copiar desde el núcleo al local un ayudante y agregar la función a esa clase) y no cambie los archivos de la aplicación/código/núcleo.

Para contestar a su pregunta puede utilizar:

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

mejores prácticas (como punto de partida) será crear un /app/code/local/Mage/Core/Helper/Extra.php en php archivo:

<?php 
class Mage_Core_Helper_Extra extends Mage_Core_Helper_Abstract 
{ 

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

} 

Y para utilizarlo en archivos PHTML utilizar:

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

O en todos los lugares:

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

Para obtener corriente piel URL uso de este Mage::getDesign()->getSkinUrl()

+2

Puede pasar la ruta como un parámetro 'Mage :: getDesign() -> getSkinUrl ('image/example.png')' – Justin

Cuestiones relacionadas