ম্যাজেন্টো 2 এ ইসহোমপেজ কীভাবে চেক করবেন? আমরা কি হোমপেজে আছি?


9

আমি বর্তমান পৃষ্ঠাগুলি হ'ল হোম পেজ, বিভাগ পৃষ্ঠা, পণ্য পৃষ্ঠা এবং ম্যাজেন্টো 2-তে সিমিএস পৃষ্ঠাটি দেখতে চাই


কোন প্রসঙ্গে আপনি এটি পরীক্ষা করতে চান? নিয়ামক? অবরোধ করবেন?
মারিয়াস

ম্যাজেন্টো 1 সংস্করণ আমরা ফাংশনটি ব্যবহার করি Mage :: getBlockSingleton ('পৃষ্ঠা / html_header') -> getIsHomePage (); আমি হোমপৃষ্ঠা, বিভাগের পৃষ্ঠা, পণ্য পৃষ্ঠা এবং সেমি পৃষ্ঠা ইত্যাদি ইত্যাদির মতো ডেটা পৃষ্ঠাতে ডেটা দেখাতে চাই
MagikVishal

1
আমি এটি জানি, তবে এর উত্তর দিতে আমি জানতে চাই আপনি ম্যাজেন্টো 2 এ এটি কোথায় ব্যবহার করতে চান। এম 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
}

@ এমরিয়াস - পিএইচটিএমএল ফাইলে আমি কীভাবে একই পরীক্ষা করব?
মনশবি বিড়লা

2
ব্লকে এমন একটি পদ্ধতি লিখুন $this->_request->getFullActionName()যা পিটিএইচটিএমএল ফাইলটিতে বিজ্ঞাপন ব্যবহার করে returns
মারিয়াস

আপনি বিস্তারিত বলতে পারেন? এক যে কিভাবে কাজ করে?
সর্বোচ্চ

@ ম্যাক্স আপনার আরও বিশদ প্রয়োজন কি? আমার মনে হয় উত্তরটা পরিষ্কার? আপনি কী জানতে চান তা আমাকে বলুন
মারিয়াস

দুঃখিত, আমি এটি আবার পড়েছি এবং এটি পরিষ্কার। ধন্যবাদ.
সর্বোচ্চ

7

পিটিএইচএমএল ফাইলের ভিতরে থেকে এটি আমার পক্ষে কাজ করেছে:

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
অবজেক্ট ম্যানেজার ব্যবহার করবেন না
মারিয়াস

এটি আমার পক্ষে কাজ করেছে। অবজেক্ট ম্যানেজার কেন ব্যবহার করবেন না?
দ্য

অবজেক্ট ম্যানেজারকে সরাসরি ব্যবহার করা খারাপ অভ্যাস। ম্যাজেন্টো অফিসিয়াল দেব ডক বলেছেন "ম্যাজেন্টো আপনার কোডে অবজেক্টম্যানেজারের সরাসরি ব্যবহার নিষিদ্ধ করেছে কারণ এটি একটি শ্রেণীর আসল নির্ভরতা লুকায়।"
মকওয়ানা কেতন

0

কারণ নকশার ধরণটি নির্ভরতা ইনজেকশন। চাহিদার ভিত্তিতে কোনও সংস্থার অনুরোধ করার জন্য আপনি একটি মডিউল তৈরি করেন। অবজেক্ট ম্যানেজার সেই দৃষ্টান্তের বিরুদ্ধে চলছে। তবে এটি দুর্দান্ত কাজ করে তবে আবার Mage ব্যবহার করার মতো - ধীর।


ওফস উপরে মন্তব্য করার কথা, আমার খ।
ক্রিস অ্যান্ডারসন 22

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());
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.