Ruft die aktuelle CMS-Seiten-ID in Magento2 ab

7

Ich versuche, die aktuelle CMS-Seiten-ID in Magento2 abzurufen. Unten ist der Code, den ich für Magento1.x verwendet habe und der offensichtlich nicht mehr funktioniert. Aber ich kann mir nicht vorstellen, wie das für Magento2 geht.

if (Mage::app()->getFrontController()->getRequest()->getRouteName() == 'cms') {
    $_pageId = Mage::getBlockSingleton('cms/page')->getPage()->getPageId();
}

Die Verwendung der unten gezeigten Registrierung funktioniert nicht.

 $this->_coreRegistry->registry('cms_page')->getId()
Solide
quelle

Antworten:

15

Ok, ich habe es herausgefunden, nachdem ich mich in der CMS-Hilfsfunktion umgesehen habe.

protected $_page;

public function __construct(
    ...
    \Magento\Cms\Model\Page $page,
    ...
    array $data = []
) {
    parent::__construct($context, $data);
    ...
    $this->_page = $page;
    ...
}

if ($this->_page->getId()) {
    $pageId = $this->_page->getId();
}
Solide
quelle
Dieser Code ist ein Beispiel für das Einfügen der Funktionalität in eine Block- oder Hilfsklasse. Es darf nicht 1 zu 1 kopiert werden. Weitere Informationen finden Sie im CMS-Helper unter \ vendor \ magento \ module-cms \ Helper \ Page.php
Solide
Ist das wirklich der richtige Weg, um dies zu erreichen? Es scheint seltsam, DI zu verwenden, um ein Objekt zu injizieren, das einen Zustand enthält.
Giel Berkers
@Solide Wie kann ich Seiteninformationen pro Geschäftsansicht abrufen, die ich ausprobiert habe $this->_pageFactory->create()->setStoreId(1)->load($cmsId)?
Juliano Vargas
11

Mit ObjectManager

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$cmsPage = $objectManager->get('\Magento\Cms\Model\Page');

echo $cmsPage->getIdentifier(); //Get Current CMS Page Identifier
echo $cmsPage->getId(); //Get Current CMS Page ID

Mit Werksmethode

protected $_cmsPage;

public function __construct(
    ...
    \Magento\Cms\Model\Page $cmsPage,
    ...
) {
    ...
    $this->_cmsPage = $cmsPage;
    ...
}

echo $this->_cmsPage->getIdentifier(); //Get Current CMS Page Identifier
echo $this->_cmsPage->getId(); //Get Current CMS Page ID
Prinz Patel
quelle
2

Versuchen Sie diese Lösung. Auf diese Weise können Sie die aktuelle CMS-Seite identifizieren.

<?php
    $objectManagerCms = \Magento\Framework\App\ObjectManager::getInstance();
    $cmsPage = $objectManagerCms->get('\Magento\Cms\Model\Page');
    echo $cmsPage->getIdentifier();
    echo $cmsPage->getId();
?>
Makwana Ketan
quelle
-1

Wenn Sie im gleichen Layout cms_page_view

$ pageId = $ this-> getLayout () -> getBlock ("cms_page") -> getPage () -> getId ();

uho0613
quelle