Например, вы можете создать собственный ViewsArgumentValidator и преобразовать данный псевдоним в идентификатор узла.
<?php
пространство имен Drupal\my_module\Plugin\views\argument_validator;
используйте Drupal\path_alias\AliasManagerInterface;
используйте Drupal\views\Plugin\views\argument_validator\ArgumentValidatorPluginBase;
используйте Symfony\Component\DependencyInjection\ContainerInterface;
/**
* Проверяет, является ли псевдоним допустимым псевдонимом узла, и преобразует его в nid.
*
* @ViewsArgumentValidator(
* идентификатор = "node_alias",
* title = @Translation("Идентификатор узла по псевдониму")
* )
*/
класс NodeAlias расширяет ArgumentValidatorPluginBase {
/**
* Менеджер псевдонимов.
*
* @var \Drupal\path_alias\AliasManagerInterface
*/
защищенный $aliasManager;
/**
* {@inheritdoc}
*/
публичная функция __construct (массив $configuration, $plugin_id, $plugin_definition, AliasManagerInterface $alias_manager) {
parent::__construct($configuration, $plugin_id, $plugin_definition);
$this->aliasManager = $alias_manager;
}
/**
* {@inheritdoc}
*/
общедоступная статическая функция create(ContainerInterface $container, массив $configuration, $plugin_id, $plugin_definition) {
вернуть новую статику(
$ конфигурация,
$plugin_id,
$plugin_definition,
$container->get('path_alias.manager'),
);
}
/**
* {@inheritdoc}
*/
публичная функция validateArgument($argument) {
// Ставим косую черту.
$аргумент = '/' . ltrim($аргумент, '/');
$path = $this->aliasManager->getPathByAlias($argument);
если (preg_match('/узел\/(\d+)/', $path, $matches)) {
$this->argument->argument = $matches[1];
вернуть ИСТИНА;
}
вернуть ЛОЖЬ;
}
}
в валидатеаргумент мы проверяем, можно ли найти внутренний путь для узла с этим псевдонимом, и преобразуем данный аргумент в соответствующий идентификатор узла.
Добавьте этот файл с именем NodeAlias.php вам пользовательский модуль в src/Plugin/views/argument_validator каталог и очистить кеш.
После этого вы можете использовать Содержание: Нид контекстный фильтр и выберите в разделе «Если значение фильтра находится в URL-адресе или указано значение по умолчанию» новый валидатор Идентификатор узла по псевдониму.