Получить путь кожи в Magento?

У меня есть несколько пользовательских функций PHP для моего магазина Magento, которые я сохранил в myfunc.php, и мне нужно, чтобы они были в нескольких разных файлах .phtml. Как я могу это сделать?

Я имею в виду, что могу использовать абсолютный путь, но это может быть грязным и, вероятно, проблематичным при переходе на другой сервер.

На данный момент я застрял с:

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

Как программно обратиться к пути к обложке (/ home / myuser / public_html / app / design / frontend / default / mytheme /)?

 Alex08 окт. 2014 г., 14:04
Пожалуйста, не помещайте код функции PHP в тему. Это должно быть в модуле (app/code/X/...)

Ответы на вопрос(6)

Решение Вопроса

Способ, которым темы Magento обрабатывают фактические URL-адреса, как таковой (в частичных представлениях - файлы phtml):

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

Если вам нужен фактический базовый путь на диске к каталогу изображений, используйте:

echo Mage::getBaseDir('skin');

Еще несколько базовых типов каталогов доступны в этом замечательном сообщении в блоге:

http://alanstorm.com/magento_base_directories

Первое замечание, что

Mage::getBaseDir('skin')

возвращаетсяonly путь к каталогу скина вашей установки Magento (/your/magento/dir/skin).

Вы можете получить доступ к абсолютному пути к текущему каталогу скина, используя:

Mage::getDesign()->getSkinBaseDir()

Этот метод принимает ассоциативный массив в качестве необязательного параметра для изменения результата.

Следующие ключи распознаются:

_area frontend (default) or adminhtml _package your package _theme your theme _relative when this is set (as an key) path relative to Mage::getBaseDir('skin') is returned.

Так что в вашем случае правильный ответ будет:

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

Прежде всего, не рекомендуется иметь php файлы с функциями в папке design. Вы должны создать новый модуль или расширение (скопировать из ядра в локальный помощник и добавить функцию в этот класс) и не изменять файлы из app / code / core.

Для ответа на свой вопрос вы можете использовать:

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

Наилучшей практикой (для начала) будет создание в /app/code/local/Mage/Core/Helper/Extra.php файла php:

<?php
class Mage_Core_Helper_Extra extends Mage_Core_Helper_Abstract
{

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

}

И чтобы использовать его в phtml-файлах, используйте:

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

Или во всех местах:

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

Получитьcurrent skin URL использовать этоMage::getDesign()->getSkinUrl()

 15 мая 2015 г., 22:23
Вы можете передать путь в качестве параметраMage::getDesign()->getSkinUrl('image/example.png')

To use it in phtml apply :

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

To use skin path in cms page :

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

Эта часть ==== & gt;     {{skin url = images / banner1.jpg}}

I hope this will help you.

 11 окт. 2012 г., 20:25
Что это добавляет к принятому в настоящее время ответу? Это точно то же самое, что предлагается там. Это должен быть комментарий, а не ответ. Проверь этоmetaSO question а такжеJon Skeet: Coding Blog о том, как дать правильный ответ.

Чтобы получить этот файл, используйте код ниже.

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

Но это не правильный путь. Чтобы добавить свои пользовательские функции, вы можете использовать файл ниже.

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

Пожалуйста, избегайте использования функции PHP в директории skin.

 08 окт. 2012 г., 22:42
Любые изменения, внесенные в app / code / core, будут перезаписаны при обновлении Magento, и поэтому не рекомендуется вносить какие-либо изменения в эту иерархию.

Ваш ответ на вопрос