Ich erstelle eine einfache Seite in meiner Magento 2-Instanz.
Im Controller für diese Seite versuche ich, einen Titel für die Seite und einen Metatitel festzulegen, der unterschiedlich sein sollte.
Aber das kann ich nicht.
Meine Layoutdatei für die Aktion ist fast leer:
<page layout="1column" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<body>
</body>
</page>
und meine Controller-Aktion sieht folgendermaßen aus:
namespace [Namespace]\[Module]\Controller\[Entity];
use Magento\Framework\App\Action\Action;
use Magento\Framework\App\Action\Context;
use Magento\Framework\View\Result\PageFactory;
class Index extends Action
{
protected $resultPageFactory;
public function __construct(
Context $context,
PageFactory $resultPageFactory
) {
parent::__construct($context);
$this->resultPageFactory = $resultPageFactory;
}
public function execute()
{
$resultPage = $this->resultPageFactory->create();
$resultPage->getConfig()->getTitle()->set('Something');
}
}
Das Ergebnis ist folgendes:
Der Metatitel ist jedoch der gleiche wie der Titel ( Something
).
Ändern der Leitung in der Steuerung:
$resultPage->getConfig()->getTitle()->set('Something');
zu
$resultPage->getConfig()->getTitle()->set('Something else');
führt dazu, dass der Titel (H1-Tag) und der Metatitel in geändert werden something else
.
Wie kann ich einer Seite einen anderen Metatitel und einen anderen Titel (h1-Tag) zuweisen?
page.main.title
Block funktioniert auch in Controllern. Vielen Dank.Was ist mit:
für Metatitel.
quelle
->getMetadata()
Gibt ein Array zurück, sodass ichsetMetadata
das Ergebnis nicht aufrufen kann . Das EntfernengetMetadata
aus der Zeile führt nur zu einem FehlerObject of class Magento\Framework\View\Page\Title could not be converted to string
.getMetadata()->setMetadata
dagetMetadata
ein Array zurückgegeben wird und Sie keine Methode aus einem Array aufrufen können. Ich habe dies im obigen Kommentar erklärt. Aber ich habe es versucht$resultPage->getConfig()->setMetadata('meta_title', 'Something else');
und es gibt keine Änderung. Ich denke, das funktioniert nicht, weil<meta name="title"...
die Seite nicht gerendert ist. Der Titel wird wie folgt wiedergegeben:<title>...</title>
Ich habe mich gerade für eine neue benutzerdefinierte Erweiterung versucht, es funktioniert für mich:
Es sollte den Job machen!
quelle