2012-04-28 10 views
43

Mam kilka niestandardowych funkcji PHP dla mojego sklepu Magento, które zapisałem w myfunc.php i potrzebuję go pobrać z kilku różnych plików .phtml. Jak mogę to zrobić?Ścieżka skóry w Magento?

Mam na myśli, że mogę użyć absolutnej ścieżki, ale byłoby to brudne i prawdopodobnie problematyczne przy migracji na inny serwer.

Teraz utknąłem z:

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

jaki sposób odnoszą się do ścieżki skóry (/ home/mójużytkownik/public_html/app/projekt/frontend/default/Mytheme /) programowo?

+1

proszę nie umieszczać kodu PHP funkcja do tematu. Powinno to znajdować się w module ('app/code/X/...') – Alex

Odpowiedz

104

Sposób, że Magento motywy obsłużyć rzeczywisty URL jest jako takich (w widoku podszablonów - Phtml plików):

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

Jeśli potrzebujesz rzeczywistą ścieżkę bazową na dysku do użycia katalogu obrazu:

dostępny w tym wielkim poście są

echo Mage::getBaseDir('skin');

Niektóre typy katalogów bardziej podstawa:

http://alanstorm.com/magento_base_directories

-1

Aby pobrać ten plik, użyj poniższego kodu.

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

Ale nie jest to poprawna metoda. Aby dodać własne funkcje, możesz użyć poniższego pliku.

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

Prosimy unikać korzystania z funkcji PHP pod skórą reż.

+0

Wszelkie modyfikacje dokonane w aplikacji/kodzie/rdzeniu zostaną nadpisane podczas aktualizacji Magento i dlatego nie jest wskazane wprowadzanie jakichkolwiek zmian w tej hierarchii. –

13

Aby użyć go w Phtml zastosowanie:

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

Aby użyć ścieżki skóry na stronie CMS:

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

Ta część ====> {{url = skóra images/banner1.jpg}}

Mam nadzieję, że to ci pomoże.

+0

Co dodaje do aktualnie akceptowanej odpowiedzi? To jest dokładnie to samo, co sugerowano tam. To powinien być komentarz, a nie odpowiedź. Sprawdź to [pytanie metaSO] (http://meta.stackexchange.com/questions/7656/how-do-i-write-a-good-answer-to-a-question) i [Jon Skeet: Coding Blog] (http://msmvps.com/blogs/jon_skeet/archive/2009/02/17/answering-technical-questions-helpfully.aspx) na temat udzielania poprawnej odpowiedzi. – Yaroslav

17

Pierwsza uwaga, że ​​

Mage::getBaseDir('skin') 

powraca tylko ścieżka do katalogu swojej skórze zainstalować Magento (/swoje/magento/dir/skórę).

może uzyskać dostęp do bezwzględnej ścieżki aktualnie stosowanych katalogu skóry przy użyciu:

Mage::getDesign()->getSkinBaseDir() 

ten sposób przyjmie asocjacyjnej jako parametru opcjonalnego modyfikowania wynik.

następujące klucze są rozpoznawane:

  • _areafrontend (domyślnie) lub adminhtml
  • _package pakiet
  • _theme Twój motyw
  • _relative, gdy jest ustawiona (jako klucz) ścieżka względem Mage :: getBaseDir ('skin') jest zwracana.

Więc w twoim przypadku prawidłowa odpowiedź będzie:

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

Przede wszystkim nie jest to zalecane, aby mieć php pliki z funkcji w folderze projektu. Powinieneś utworzyć nowy moduł lub rozszerzyć (skopiuj z rdzenia do lokalnego pomocnika i dodaj funkcję do tej klasy) i nie zmieniaj plików z aplikacji/kodu/rdzenia.

Aby odpowiedzieć na to pytanie można użyć:

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

najlepszą praktyką (jak na początek) będzie stworzenie w /app/code/local/Mage/Core/Helper/Extra.php php plik:

<?php 
class Mage_Core_Helper_Extra extends Mage_Core_Helper_Abstract 
{ 

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

} 

I używać go w plikach phtml użyć:

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

Albo we wszystkich miejscach:

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

Aby uzyskać aktualny skóra URL wykorzystanie tego Mage::getDesign()->getSkinUrl()

+2

Możesz przekazać ścieżkę jako parametr 'Mage :: getDesign() -> getSkinUrl ('image/example.png') – Justin