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

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

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

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

-1

Wenn Sie im gleichen Layout cms_page_view

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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.