Я пытаюсь добавить ловушку препроцессора, чтобы добавить классы, основанные на имени таксономии, в css тела моей установки drupal. Мне удалось получить всю информацию об узле, основываясь на поиске и пробах и ошибках, но я бы хотел перейти к следующему шагу и получить все термины таксономии на основе конкретного идентификатора узла.
Мой текущий код препроцесса следующий:
function custom_preprocess_html(&$variables) {
// Add the node ID and node type to the body class
$body_classes = [];
$nodeFields =\Drupal::service('current_route_match')->getParameter('node')->toArray();
if (is_array($nodeFields) && count($nodeFields) > 0) {
if (isset($nodeFields['nid'])) {
$body_classes[] = 'node-' . $nodeFields['nid'][0]['value'];
}
if (isset($nodeFields['type'])) {
$body_classes[] = $nodeFields['type'][0]['target_id'];
}
}
$variables['attributes']['class'] = $body_classes;
}
Работает нормально и выводит информацию об узле. Исходя из ответа здесь кажется, что все, что мне нужно сделать, это добавить следующую строку, чтобы получить термины таксономии: $taxonomyTerms = $nodefields->get('field_yourfield')->referencedEntities();
, но когда я это делаю, Drupal выдает ошибку. Я свободно признаю, что я новичок в Drupal 8, поэтому любые предложения о том, где я ошибаюсь (не является ли field_yourfield чем-то, что существует, может быть?), Будут с благодарностью.