如何让速录页面默认无索引
How to make Sulu page no-index by default
我在 Symfony 4.4 中使用 Sulu 2.1
我想让某些页面类型在首次创建时默认启用无索引选项。目前 no-index 默认关闭。
是否可以在网站空间或页面模板中进行配置XML?
无法在网站空间上设置此值,但您可以创建自定义 EventSubscriber 以将此值设置为持续存在,示例订阅者可能如下所示:
namespace App\Subscriber\Document;
use Sulu\Component\DocumentManager\Event\PersistEvent;
use Sulu\Component\DocumentManager\Events;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Sulu\Bundle\PageBundle\Document\PageDocument;
class NoIndexSubscriber implements EventSubscriberInterface
{
public static function getSubscribedEvents()
{
return [
Events::PERSIST => 'handlePersist',
];
}
public function handlePersist(PersistEvent $event)
{
$document = $event->getDocument();
if (!$document instanceof PageDocument) {
return;
}
$extensionData = $document->getExtensionsData()->toArray();
if (array_key_exists('noIndex', $extensionData['seo'])) {
// do nothing when extension data was set manually
return;
}
$extensionData['seo']['noIndex'] = true;
}
}
使用 sulu_document_manager.event_subscriber
标记服务很重要,您可以通过以下方式 config/services.yaml
执行此操作:
App\Subscriber\Document\:
resource: '../src/Subscriber/Document'
tags: ['sulu_document_manager.event_subscriber'}]
确保它在此处列出:
bin/console sulu:document:subscriber:debug persist
我在 Symfony 4.4 中使用 Sulu 2.1
我想让某些页面类型在首次创建时默认启用无索引选项。目前 no-index 默认关闭。
是否可以在网站空间或页面模板中进行配置XML?
无法在网站空间上设置此值,但您可以创建自定义 EventSubscriber 以将此值设置为持续存在,示例订阅者可能如下所示:
namespace App\Subscriber\Document;
use Sulu\Component\DocumentManager\Event\PersistEvent;
use Sulu\Component\DocumentManager\Events;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Sulu\Bundle\PageBundle\Document\PageDocument;
class NoIndexSubscriber implements EventSubscriberInterface
{
public static function getSubscribedEvents()
{
return [
Events::PERSIST => 'handlePersist',
];
}
public function handlePersist(PersistEvent $event)
{
$document = $event->getDocument();
if (!$document instanceof PageDocument) {
return;
}
$extensionData = $document->getExtensionsData()->toArray();
if (array_key_exists('noIndex', $extensionData['seo'])) {
// do nothing when extension data was set manually
return;
}
$extensionData['seo']['noIndex'] = true;
}
}
使用 sulu_document_manager.event_subscriber
标记服务很重要,您可以通过以下方式 config/services.yaml
执行此操作:
App\Subscriber\Document\:
resource: '../src/Subscriber/Document'
tags: ['sulu_document_manager.event_subscriber'}]
确保它在此处列出:
bin/console sulu:document:subscriber:debug persist