Magento 2 IsHomePage nasıl kontrol edilir? Ana sayfada mıyız?


9

Geçerli sayfanın ana sayfa, kategori sayfası, ürün sayfası ve cms sayfası magento 2'de olduğunu kontrol etmek istiyorum


bunu hangi bağlamda kontrol etmek istersiniz? kontrolör? blok?
— Marius

Magento 1 sürümü Mage :: getBlockSingleton ('page / html_header') -> getIsHomePage () işlevini kullanıyoruz; anasayfa, kategori sayfası, ürün sayfası & cms sayfası vb.Gibi veri sayfalarını göstermek istiyorum
— MagikVishal

1
Bunu biliyorum, ama buna cevap vermek için bunu magento2'de nerede kullanmak istediğinizi bilmek istiyorum. M2 cinsinden global büyücü sınıfı yoktur.
— Marius

Yanıtlar:


20

Bunu deneyebilirsiniz: \Magento\Framework\App\Request\HttpSınıf yapıcısına bir örneğini enjekte edin . Bir denetleyicideyseniz, bunu yapmanız gerekmez. Buna zaten bu şekilde erişebilirsiniz$request = $this->getRequest()

public function __construct(
    ...
    \Magento\Framework\App\Request\Http $request
) {
    ...
    $this->_request = $request;
}

Sonra böyle bir ana sayfa olup olmadığını kontrol edebilirsiniz:

if ($this->_request->getFullActionName() == 'cms_index_index') {
    //you are on the homepage
}
if ($this->_request->getFullActionName() == 'catalog_product_view') {
    //you are on the product page
}
if ($this->_request->getFullActionName() == 'catalog_category_view') {
    //you are on the category page
}

aynı phtml dosyasında nasıl kontrol edebilirim?
— Manashvi Birla

2
bloğa $this->_request->getFullActionName()reklam döndüren bir yöntem yazın phtml dosyasında kullanın.
— Marius

Açıklayabilir misiniz? biri bunu nasıl yapar?
— Max

@ Max daha ne detaylara ihtiyacınız var? Bence cevap açık mı? ne bilmek istediğini söyle
— Marius

Üzgünüm, tekrar okudum ve net. Teşekkür ederim.
— Max

7

Phtml dosyasından bu benim için çalıştı:

if ($this->getRequest()->getFullActionName() == 'cms_index_index') {
    //you are on the homepage
}
if ($this->getRequest()->getFullActionName() == 'catalog_product_view') {
    //you are on the product page
}
if ($this->getRequest()->getFullActionName() == 'catalog_category_view') {
    //you are on the category page
}

benim için çalışıyor
— sandip

3

Bunu dene:

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$request = $objectManager->get('Magento\Framework\App\Action\Context')->getRequest();
if ($request->getFullActionName() == 'cms_index_index') {
    // is homepage
}

2
nesne yöneticisi kullanmayın
— Marius

Bu benim için çalıştı. Neden Nesne Yöneticisi'ni kullanmıyorsunuz?
— TheBlackBenzKid

Nesne Yöneticisi'ni doğrudan kullanmak kötü bir uygulamadır. Magento Official dev doc "Magento, bir sınıfın gerçek bağımlılıklarını gizlediğinden kodunuzda ObjectManager'ın doğrudan kullanımını yasaklar."
— Makwana Ketan

0

Tasarım deseni nedeniyle Bağımlılık Enjeksiyonu. Talep üzerine bir kaynak talep etmek için bir modül oluşturursunuz. Nesne yöneticisi bu paradigmaya karşı çıkıyor. Ancak, harika çalışıyor ama Mage'yi tekrar tekrar kullanmak gibi - yavaş.


whoops yukarıda yorum yapması gerekiyordu, b.
— Chris Anderson

0

Aşağıdaki kodu deneyin:

protected $_logo;   

public function __construct(
    \Magento\Backend\Block\Template\Context $context,
    \Magento\Theme\Block\Html\Header\Logo $logo,
    array $data = []
)
{       
    $this->_logo = $logo;
    parent::__construct($context, $data);
}

public function isHomePage()
{   
    return $this->_logo->isHomePage();
}

Nesne Yöneticisini Kullanma

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$logo = $objectManager->get('Magento\Theme\Block\Html\Header\Logo');
var_dump($logo->isHomePage());
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.