ユーザーがカテゴリページ、またはMagento 2の個々の製品ページにいる場合、それを確認する方法はありますか?
どんな助けでも大歓迎です!
ユーザーがカテゴリページ、またはMagento 2の個々の製品ページにいる場合、それを確認する方法はありますか?
どんな助けでも大歓迎です!
回答:
あなたはそれがあなたを助けるかもしれない以下のコードを試すことができます。
インスタンス注射するのを\Magento\Framework\App\Request\Http
あなたにクラスのコンストラクタ。
コントローラを使用している場合は、それを行う必要はありません。あなたはすでにこのようにそれにアクセスできます$request = $this->getRequest()
public function __construct(
...
\Magento\Framework\App\Request\Http $request
) {
...
$this->_request = $request;
}
次に、次のようなカテゴリまたは製品かどうかを確認できます。
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
}
たぶん、私たちは直接使うことができます
$this->getRequest()->getFullActionName()
.phtmlファイルで、現在のページアクションを取得します。
クラスコンストラクターで\ 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ファイルで直接使用します
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$request = $objectManager->get('\Magento\Framework\App\Request\Http');
テンプレートファイル、つまり.phtmlを使用している場合は、以下のコードを使用してページを直接呼び出すことができます。
$ objectManager = \ Magento \ Framework \ App \ ObjectManager :: getInstance();
$ request = $ objectManager-> get( '\ Magento \ Framework \ App \ Request \ Http');
if($ request-> getFullActionName()== 'cms_index_index'){//ホームページにいる}
if($ request-> getFullActionName()== 'catalog_product_view'){//製品ページが表示されます}
if($ request-> getFullActionName()== 'catalog_category_view'){//カテゴリページにいる}
現在のカテゴリとそのデータを取得する場合は、
$ category = $ objectManager-> get( 'Magento \ Framework \ Registry')-> registry( 'current_category');
$ category-> getData( 'schbang_category_name');
ここで、schbang_category_nameは私のカスタムカテゴリ属性です
これが誰かのお役に立てば幸いです。
次のような条件を追加できます
if($ this-> getProductPage()){ //これは製品ページです。 } elseif($ this-> getCategoryPage()){ //これはカテゴリページです。 }
getCategoryPage
Magento 2には機能がありません。少なくとも2.1.10では機能しません