Magento 2 में IsHomePage की जांच कैसे करें? क्या हम मुखपृष्ठ पर हैं?


9

मैं चाहता हूँ कि वर्तमान पृष्ठ की जाँच करें पृष्ठ होम पेज, श्रेणी पृष्ठ, उत्पाद पृष्ठ और पत्रिका 2 में सेमी पृष्ठ है


आप इसे किस संदर्भ में देखना चाहते हैं? नियंत्रक? खंड मैथा?
मेरियस

Magento 1 संस्करण हम फ़ंक्शन Mage का उपयोग करते हैं :: getBlockSingleton ('पृष्ठ / html_header') -> getIsHomePage (); मैं होमपेज, श्रेणी पृष्ठ, उत्पाद पृष्ठ और सेमी पृष्ठ आदि जैसे डेटा पेज वाइज दिखाना चाहता हूं
MagikVishal

1
मुझे पता है कि, लेकिन इसका उत्तर देने के लिए मैं यह जानना चाहता हूं कि आप इसे magento2 में कहां उपयोग करना चाहते हैं। एम 2 में वैश्विक दाना वर्ग नहीं है।
मेरियस

जवाबों:


20

आप यह कोशिश कर सकते हैं: \Magento\Framework\App\Request\Httpअपने वर्ग के निर्माता में एक उदाहरण को इंजेक्ट करें। यदि आप किसी कंट्रोलर में हैं तो आपको ऐसा करने की आवश्यकता नहीं है। आप इसे पहले से ही इस तरह एक्सेस कर सकते हैं$request = $this->getRequest()

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

तब आप जांच सकते हैं कि क्या मुखपृष्ठ इस तरह है:

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
}

@ ममी - कैसे मैं एक phtml फ़ाइल में एक ही जाँच करते हैं?
मानषवी बिड़ला

2
ब्लॉक में एक विधि लिखें जो $this->_request->getFullActionName()विज्ञापन को वापस phtml फ़ाइल में उपयोग करें।
मेरियस

क्या आप विस्तृत कर सकते हैं? किसी से ऐसा कैसे संभव है?
मैक्स

@ मोम आपको और अधिक विस्तार की क्या आवश्यकता है? मुझे लगता है कि उत्तर स्पष्ट है? मुझे बताओ कि आप जानना चाहते हैं
मेरियस

क्षमा करें, मैंने इसे और इसके स्पष्ट रूप से फिर से पढ़ा। धन्यवाद।
मैक्स

7

अंदर phtml फ़ाइल से यह मेरे लिए काम किया:

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
}

यह मेरे लिए काम करता
संदीप

3

इसको आजमाओ:

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

2
वस्तु प्रबंधक का उपयोग नहीं करते
मेरियस

इसने मेरे लिए काम किया। ऑब्जेक्ट मैनेजर का उपयोग क्यों नहीं?
TheBlackBenzKid

ऑब्जेक्ट प्रबंधक का सीधे उपयोग करना बुरा है। Magento के आधिकारिक देव डॉक्टर कहते हैं, "Magento आपके कोड में ObjectManager के प्रत्यक्ष उपयोग को प्रतिबंधित करता है क्योंकि यह एक वर्ग की वास्तविक निर्भरता को छुपाता है।"
मकवाना केतन

0

डिजाइन पैटर्न के कारण निर्भरता इंजेक्शन। आप मांग पर संसाधन का अनुरोध करने के लिए एक मॉड्यूल बनाते हैं। ऑब्जेक्ट मैनेजर उस प्रतिमान के खिलाफ जा रहा है। हालाँकि, यह बहुत अच्छा काम करता है, लेकिन फिर से Mage का उपयोग करना पसंद है - धीमा।


वूप्स ऊपर टिप्पणी करने के लिए माना जाता है, मेरी बी।
क्रिस एंडरसन

0

कोड के नीचे आज़माएं:

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();
}

ऑब्जेक्ट मैनेजर का उपयोग करना

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$logo = $objectManager->get('Magento\Theme\Block\Html\Header\Logo');
var_dump($logo->isHomePage());
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.