Перейти к основному содержимому

Генератор предварительного просмотра

Краткое содержание

Генераторы предварительного просмотра предоставляют сервисы для получения большего контроля над вкладкой предварительного просмотра. Они предоставляют компонент пользовательского интерфейса для передачи дополнительных параметров генератору URL-адресов.

Провайдеры должны реализовывать \Pimcore\Model\DataObject\ClassDefinition\PreviewGeneratorInterface

Начиная с версии Pimcore 10.6, по умолчанию предоставляется реализация PreviewGenerator. Вам нужно только добавить Генератор ссылок. Затем сгенерированный URL-адрес будет использован для предварительного просмотра.

Параметры, возвращаемые методом getParams, будут отображаться в виде поля выбора (select box). Все, что выберет пользователь, будет передано методу generatePreviewUrl.

Предоставьте генератор предварительного просмотра в настройках класса: Настройка генератора предпросмотра

Пример реализации PreviewProvider

namespace App\Service\PreviewParamProvider;  

use App\Website\LinkGenerator\ProductLinkGenerator;
use Pimcore\Model\DataObject\ClassDefinition\PreviewGeneratorInterface;
use Pimcore\Model\DataObject\Concrete;

class ProductPreviewParamProvider implements PreviewGeneratorInterface
{
protected ProductLinkGenerator $productLinkGenerator;

public function __construct(ProductLinkGenerator $productLinkGenerator)
{
$this->productLinkGenerator = $productLinkGenerator;
}

public function generatePreviewUrl(Concrete $object, array $params): string
{
$additionalParams = [];
foreach($this->getPreviewConfig($object) as $paramStore) {
$paramName = $paramStore['name'];
if($paramValue = $params[$paramName]) {
$additionalParams[$paramName] = $paramValue;
}
}

return $this->productLinkGenerator->generate($object, $additionalParams);
}

public function getPreviewConfig(Concrete $object): array
{
return [
[
'name' => '_locale',
'label' => 'Locale',
'values' => [
'English' => 'en',
'German' => 'de'
],
'defaultValue' => 'en'
],
[
'name' => 'otherParam',
'label' => 'Other',
'values' => [
'Label Text' => 'value',
'Option #2' => 2,
'Custom Option' => 'custom'
],
'defaultValue' => 'value'
]
];
}
}

Пример генератора предварительного просмотра в пользовательском интерфейсе


Вы можете предложить улучшение документации или задать вопрос в комментариях.
Если вам нужна полноценная консультация — вы можете заказать её на нашем сайте.