Всякий раз, когда вы работаете над Magento2, вам нужно будет часто получать базовый URL (ссылку на главную страницу интернет-магазина), ссылку на папку с картинками (media), либо какой-то статический URL-адрес. Из этой статьи вы узнаете, как можно легко получить ссылку в Мадженто 2.
В Magento 1.х версий для получения ссылки на главную страницу использовался метод Mage::getBaseUrl();
а в Magento 2.х версий для этого используется немного другой подход.
В Мадженто 2, если вы хотите получить базовый URL сайта, вы можете использовать следующий код:
$this->_storeManager->getStore()->getBaseUrl();
Где $this->_storeManager
– это экземпляр класса \Magento\Store\Model\StoreManagerInterface
Этот код даст вам такой результат:
https://site.com (если включено SEO URL Rewrite) или https://site.com/index.php (если SEO URL Rewrite не включено)
Чтобы получить базовый URL без index.php
, используйте код:
$this->_storeManager->getStore()->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_WEB);
Для получения URL-адреса к папке с картинками (media
), используйте код:
$this->_storeManager->getStore()->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_MEDIA);
Для доступа к $this->_storeManager
, вы должны использовать инъекцию зависимостей класса \Magento\Store\Model\StoreManagerInterface $storeManager
для функции __construct()
в классе Блока, например так:
public $_storeManager; public function __construct( \Magento\Store\Model\StoreManagerInterface $storeManager, ... ) { ... $this->_storeManager = $storeManager; }
ВАЖНО! Данный метод является нерекомендуемым. Его можно использовать только для кратковременных целей разработки.
Чтобы получить базовый адрес сайта:
$objectManager = \Magento\Framework\App\ObjectManager::getInstance(); $storeManager = $objectManager->get('\Magento\Store\Model\StoreManagerInterface'); $storeManager->getStore()->getBaseUrl();
Базовый URL сайта без index.php
:
$objectManager = \Magento\Framework\App\ObjectManager::getInstance(); $storeManager = $objectManager->get('\Magento\Store\Model\StoreManagerInterface'); $storeManager->getStore()->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_WEB);
Использование прямого вызова Менеджера Объектов дает возможность получить базовый URL непосредственно в шаблонах .phtml
:
$objectManager = \Magento\Framework\App\ObjectManager::getInstance(); $storeManager = $objectManager->get('\Magento\Store\Model\StoreManagerInterface'); $storeManager->getStore()->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_WEB);
ВАЖНО! Повторюсь, что прямой вызов Менеджера Объектов – это не очень хорошая идея. Если вы хотите получить базовый URL в .phtml
шаблонах, тогда используйте инъекцию зависимостей класса StoreManagerInterface
в класс Блока.
Тема (шаблон) – это своеобразный скелет сайта на WordPress. И, к сожалению, иногда этот «скелет»…
Контактная форма (или любая другая) на сайте – это очень важный компонент. На нее возложен…
Ужас не в том, что что-нибудь изменится. Ужас в том, что все может остаться тем…
Что такое Лила — это древняя игра, выступающая в качестве инструмента для личностной трансформации, практик…
Современные варианты детских конструкторов — это не просто игрушки, а действенный инструмент развития, который помогает…
Основной трафик на сайт с поисковых систем идет именно по органической выдаче. И здесь очень…