Views: Подстановка значения поля в заголовок

Главные вкладки

Аватар пользователя kolyuchy.org kolyuchy.org 29 ноября 2022 в 17:22

Дано:
Есть термины таксономии, у которых есть поле (текстовая строка).

Вопрос следующий.
Как во вьювсе, показывающем один термин, вывести вместо заголовка вьювса значение этого текстового поля? Скорее всего через контекстные фильтры, но уже всю голову сломал - не получается.

Заранее спасибо.

Комментарии

Аватар пользователя VasyOK VasyOK 29 ноября 2022 в 22:45

В настройках аргумента
Переопределить заголовок и там %1

Если сложно - можете сделать блок вьюху, которая выводит название термина или любое его поле.

Аватар пользователя kolyuchy.org kolyuchy.org 30 ноября 2022 в 2:12

Мне удалось таким образом вывести только ИМЯ термина, но не значение текстового поля, находящимся в термине.
Например, к термину с именем "Женские" можно добавить значение (дополнительного) поля (field_anytext) "колготки". Так вот в заголовок получается только Женские вывести (с помощью %1), а колготки никак (((

Дополнительный блок не решает проблемы с H1 и метатегом title.

Аватар пользователя VasyOK VasyOK 30 ноября 2022 в 13:31

Метатег можно задать отельно от views. На странице шаблонов метатегов можно же задать по умолчанию для термина и там токен поля поставить?

Аватар пользователя Никк Никк 30 ноября 2022 в 11:59

Если ваш вьюс типа "содержимое", то чтобы увидеть другие поля, связанные с терминами таксономии, вам нужно соответствующую связь добавить в ваш вьюс.

Аватар пользователя Никк Никк 30 ноября 2022 в 15:04

Тогда все поля термина и так должны быть доступны. Без всяких связей. Вы уверены, что их нет в списке полей?

Аватар пользователя kolyuchy.org kolyuchy.org 30 ноября 2022 в 16:47

Поля есть. Вопрос, как заменить заголовок страницы значением из таких полей? Желательно с метатегом title автоматом.

Аватар пользователя Никк Никк 30 ноября 2022 в 17:27

хуком можно.

<?php
/**
* Implements hook_views_pre_render
*/
function modulname_views_pre_render(&$view) {
   if (
$view->name == 'view_name' && $view->current_display == 'view_current_display') {
        
        
$view->build_info['title'] = $new_title;
  } 
}
?>

modulname, view_name и view_current_display замените на свои. И останется разобраться, как программно получить ваше поле ($new_title).
Можно, например, загрузить $term = taxonomy_term_load(id_термина);
Затем вывести dpm($term) (если у вас установлен devel) и посмотреть, как обратиться к нужному полю;