Как сделать страницу Sulu неиндексируемой по умолчанию

Я использую Sulu 2.1 с Symfony 4.4.

Я хочу, чтобы для некоторых типов страниц по умолчанию была включена опция «без индекса» при их первом создании. В настоящее время no-index отключен по умолчанию.

введите здесь описание изображения

Можно ли настроить это либо в веб-пространстве, либо в XML-шаблоне страницы?


person Jamie Maxwell    schedule 10.11.2020    source источник


Ответы (1)


Невозможно установить это в веб-пространстве, но вы можете создать свой собственный 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
person Alexander Schranz    schedule 10.11.2020