1 - Infos About Store
Get Current store Id :
inject \Magento\Store\Model\StoreManagerInterface $storeManage
$this->storeManager = $storeManager;
and get the id with :
$id = $this->storeManager->getStore()->getId();
get base Url :
$baseUrl = $this->storeManager->getStore()->getBaseUrl();
you can inject \Magento\Framework\UrlInterface and use use constants of class as parameters (UrlInterface::URL_TYPE_LINK) :
const URL_TYPE_LINK = 'link'; const URL_TYPE_DIRECT_LINK = 'direct_link'; const URL_TYPE_WEB = 'web'; const URL_TYPE_MEDIA = 'media'; const URL_TYPE_STATIC = 'static'; const URL_TYPE_JS = 'js';
get base currency code or (getBaseCurrency() , getDefaultCurrencyCode(), getDefaultCurrency()):
$baseCurrency = $this->storeManager->getStore()->getBaseCurrencyCode();
get current currency code or (getCurrentCurrency(), getAvailableCurrencyCodes(),getAllowedCurrencies()) :
$currentCurrency = $this->storeManager->getStore()->getCurrentCurrencyCode();
Retrieve base media directory path :
$baseMediaDir = $this->storeManager->getStore()->getBaseMediaDir();
Retrieve base static directory path :
$baseStaticDir = $this->storeManager->getStore()->getBaseStaticDir();
For other function like website_id , group_id, code name or secure test got to class Magento\Store\Model\Store and explore …
2 – Cart Data
inject Magento\Checkout\Model\Cart $cart
$this->cart = $cart;
get total number items:
$cartCount = $this->cart->getItemsCount();
- get quote data :
$cartQuote= $this->cart->getQuote()->getData();
you cant get [base_currency_code] [store_currency_code] [quote_currency_code] [grand_total] or [base_grand_total] and many others see all details inside print_r
echo $cartQuote['base_grand_total'];
- iterate items of cart from session :
inject Magento\Checkout\Model\Session $session
$this->session = $session;
foreach ($this->session->getQuote()->getAllItems() as $item) { echo $item->getName(); }
-clear quote
$this->session ->clearQuote();
3 - Catalog:
inject \Magento\Framework\Registry $registry
$this->registry = $registry;
-get current category :
$category = $this->registry->registry('current_category');
get cuurent category id:
$cid = $this->registry->registry('current_category')->getId();
get current category level:
$level = $this->registry->registry('current_category')->getLevel();
-get current product :
$pid =$this->registry->registry('current_product');
retrieve crosssell products from current product:
$products = []; foreach ($this->registry->registry('current_product')->getCrossSellProducts() as $product) { $products[$product->getId()] = ['position' => $product->getPosition()]; }
retrieve related products from current product:
$products = []; foreach ($this->registry->registry('current_product')->getRelatedProducts() as $product) { $products[$product->getId()] = ['position' => $product->getPosition()]; }
retrieve upsell products from current product:
$products = []; foreach ($this->registry->registry('current_product')->getUpSellProducts() as $product) { $products[$product->getId()] = ['position' => $product->getPosition()]; }
test if current product is registered:
if ($this->registry->registry('current_product')) { $product = $this->registry->registry('current_product'); } else { throw new \LogicException('Product is not defined'); }
4 - CMS
inject \Magento\Framework\Registry $registry
$this->registry = $registry;
-get current cms page :
$page = $this->registry->registry('cms_page');
get id of current cms page:
$cmsId = $this->registry->registry('cms_page')->getId();
test if cms page exist in table :
if ($this->registry->registry('cms_page')->getId()) { return $this->registry>registry('cms_page')->getTitle(); } else { return __('New Page'); }
5 - View
inside any block that extend \Magento\Framework\View\Element\Template you can use :
//getting assets elements url from your extension in current theme $loader = $this->getViewFileUrl("ibnab_lazy::images/loader.svg"); //or getting from assets of current theme : $js = $this->getViewFileUrl("js/my.js");
Comments