默认情况下如何使Sulu页面无索引

问题描述

我正在将Sulu 2.1与Symfony 4.4一起使用

我想使某些页面类型在首次创建时默认启用no-index选项。当前,默认情况下,无索引功能处于关闭状态。

enter image description here

是否可以在网站空间或页面模板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

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...