Всем доброго времени суток!
Как в Drupal 9 получить данные view c контекстным фильтром програмно через кастомный модуль?
В частности хотелось бы получить одно из значений полей вьюшки для вывода breadcrumbs.
Пробовал через файл темы хуком preprocess_breadcrumb
<?php
function mytheme_preprocess_breadcrumb(&$variables)
{
$view = \Drupal\views\Views::getView('category');
$view->setDisplay('page_1');
$view->execute();
$view_result = $view->result;
// первый способ
foreach($view->result as $row){
$view_rows = $row->_entity->get('field_category')->getValue();
}
// второй способ
foreach ($view as $id => $row) {
foreach ($view->field as $fid => $field) {
if ($fid == 'field_category') {
//Get the full name value.
$name = $field->getValue($row);
//ksm ($name);
$category = $field->advancedRender($row)->__toString();
}
}
}
$route = \Drupal::routeMatch()->getRouteObject();
$request = \Drupal::request();
if (
$route) {
$view_id = $route->getDefault('view_id');
if (!empty($view_id) && $view_id =='category') {
$page_title = \Drupal::service('title_resolver')->getTitle($request, $route);
$variables['breadcrumb'][] = array(
'text' => $name
);
}
}
}
?>
Но в xdebug постоянно получаю пустые значения.
Стоит ли попробовать перенести в кастомный модуль и использовать хук system_breadcrumb_alter?
Или какой-то другой хук? В общем интересует как правильно получить поля вьюшки и значение контекстного фильтра.
Комментарии
Если вы используете данные вьюхи для формирования крошек, может и сами крошки сделаете вьюхой?
Я знал, что Вы это предложите! Читал в комментариях, что Вы именно так реализуете хлебные крошки.
Пока что сделал через кастомный модуль, еще обкатываю его.
Пошел другим путем - данные контекстного фильтра получил через \Drupal::routeMatch()->getParameter('arg_0'), потом сделал проход циклом по словарю таксономии и сравнил содержимое полей. При совпадение имя термина и ссылка отправляются в хлебную крошку, это если вкратце.
з.ы. тем не менее я все еще в поиске по поводу того как получить програмно данные полей представления с контекстным фильтром.