Skip to main content
Magento 2 Useful snippets for frontend developers
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();
print_r($cartQuote);
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()];
}
print_r($products);
retrieve related products from current product:
$products = [];
foreach ($this->registry->registry('current_product')->getRelatedProducts() as $product) {
$products[$product->getId()] = ['position' => $product->getPosition()];
}
print_r($products);
retrieve upsell products from current product:
$products = [];
foreach ($this->registry->registry('current_product')->getUpSellProducts() as $product) {
$products[$product->getId()] = ['position' => $product->getPosition()];
}
print_r($products);
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
Post a Comment