Skip to content
Snippets Groups Projects
Commit abc835ee authored by Ulf Tietze's avatar Ulf Tietze
Browse files

Implement Seo Generator

parent 39c884ad
No related tags found
1 merge request!25Implement strategy provider logic
<?php
declare(strict_types=1);
namespace Firegento\ContentProvisioning\Model\Config\Generator;
use Firegento\ContentProvisioning\Api\Data\BlockEntryInterface;
use Firegento\ContentProvisioning\Api\Data\EntryInterface;
use Firegento\ContentProvisioning\Api\Data\PageEntryInterface;
use Firegento\ContentProvisioning\Model\Config\Generator\Query\GetNodeByKey;
use SimpleXMLElement;
class SeoGenerator implements GeneratorInterface
{
/**
* @var GetNodeByKey
*/
private $getNodeByKey;
/**
* @param GetNodeByKey $getNodeByKey
*/
public function __construct(
GetNodeByKey $getNodeByKey
) {
$this->getNodeByKey = $getNodeByKey;
}
/**
* @param EntryInterface|PageEntryInterface|BlockEntryInterface $entry
* @param SimpleXMLElement $xml
*/
public function execute(EntryInterface $entry, SimpleXMLElement $xml): void
{
$entryNode = $this->getNodeByKey->execute($xml, $entry->getKey());
if (!$entryNode) {
return;
}
$seoTitle = $entry->getMetaTitle();
$seoKeywords = $entry->getMetaKeywords();
$seoDescription = $entry->getMetaDescription();
if (!$seoTitle && !$seoKeywords && !$seoDescription) {
return;
}
$nodeCustomDesign = $entryNode->addChild('seo');
if ($seoTitle) {
$nodeCustomDesign->addChild('title', $seoTitle);
}
if ($seoKeywords) {
$nodeCustomDesign->addChild('keywords', $seoKeywords);
}
if ($seoDescription) {
$nodeCustomDesign->addChild('description', $seoDescription);
}
}
}
\ No newline at end of file
...@@ -130,6 +130,7 @@ ...@@ -130,6 +130,7 @@
<item name="title" xsi:type="object">Firegento\ContentProvisioning\Model\Config\Generator\TitleGenerator</item> <item name="title" xsi:type="object">Firegento\ContentProvisioning\Model\Config\Generator\TitleGenerator</item>
<item name="content" xsi:type="object">Firegento\ContentProvisioning\Model\Config\Generator\ContentGenerator</item> <item name="content" xsi:type="object">Firegento\ContentProvisioning\Model\Config\Generator\ContentGenerator</item>
<item name="stores" xsi:type="object">Firegento\ContentProvisioning\Model\Config\Generator\StoresGenerator</item> <item name="stores" xsi:type="object">Firegento\ContentProvisioning\Model\Config\Generator\StoresGenerator</item>
<item name="seo" xsi:type="object">Firegento\ContentProvisioning\Model\Config\Generator\SeoGenerator</item>
<item name="design" xsi:type="object">Firegento\ContentProvisioning\Model\Config\Generator\DesignGenerator</item> <item name="design" xsi:type="object">Firegento\ContentProvisioning\Model\Config\Generator\DesignGenerator</item>
<item name="custom_design" xsi:type="object">Firegento\ContentProvisioning\Model\Config\Generator\CustomDesignGenerator</item> <item name="custom_design" xsi:type="object">Firegento\ContentProvisioning\Model\Config\Generator\CustomDesignGenerator</item>
</argument> </argument>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment