Подтвердить что ты не робот

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

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

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

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

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

Как я могу ссылаться на путь к коду (/home/myuser/public_html/app/design/frontend/default/mytheme/)?

4b9b3361

Ответ 1

То, как темы Magento обрабатывают фактический url, как таковой (в виде partials - файлы phtml):

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

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

echo Mage::getBaseDir('skin');

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

http://alanstorm.com/magento_base_directories

Ответ 2

Прежде всего отметим, что

Mage::getBaseDir('skin')

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

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

Mage::getDesign()->getSkinBaseDir()

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

Признаны следующие ключи:

  • _area интерфейс (по умолчанию) или adminhtml
  • _package ваш пакет
  • _theme ваша тема
  • _relative, когда этот параметр установлен (как ключ) относительно Mage:: getBaseDir ('skin').

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

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

Ответ 3

Использовать его в phtml:

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

Чтобы использовать скин-путь на странице cms:

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

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

Надеюсь, это поможет вам.

Ответ 4

Чтобы получить текущий скин, используйте этот Mage::getDesign()->getSkinUrl()

Ответ 5

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

Чтобы ответить на свой вопрос, вы можете использовать:

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();

Ответ 6

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

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

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

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

Не забудьте использовать функцию PHP под каталогом skin.