Получить кожный путь в 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/)?
Ответы
Ответ 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.