Всякий раз, когда вы работаете над 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
в класс Блока.
Этот урок является продолжением серии о работе с запросами в базу данных WP_Query в ВордПресс.…
Как лекарство не всегда приятно, так и истина бывает сурова Григорий Сковорода
Этот урок является продолжением серии о работе с запросами к базе данных WP_Query в ВордПресс.…
Без плагинов WordPress – просто чистый лист. Чтобы сайт работал быстро, был безопасным и привлекательным,…
Класс WP_Query — это мощный инструмент, с помощью которого можно максимально контролировать отправку запросов к…