În sfârșit mi-am dat seama! Postează răspunsul meu pentru generațiile viitoare.
Tot ce ne trebuie este YOUR_TEMPLATE.theme
dosar pentru asta.
Mai jos este codul meu cu comentarii. S-ar putea să nu fie perfect, așa că dacă cineva va corecta unele lucruri, voi aprecia asta.
utilizați \Drupal\views\ViewExecutable;
// Schimbarea titlului vizualizărilor. Nu schimbă eticheta HEAD <title>!
funcția YOUR_THEME_NAME_views_pre_render(ViewExecutable $view)
{
// checkRoute() și checkArg() sunt funcții personalizate și descrise mai jos
if(checkRoute('view.VIEW_ID.VIEW_DISPLAY_ID') && checkArg())
{
// Aceasta modifică titlul vizualizării, precum și setarea $variables['page']['#title'] la aceeași valoare.
// gamesGenreTitle() este o funcție personalizată și este descrisă mai jos.
$view->setTitle(gamesGenreTitle($view->args[0]));
}
}
// Aici putem schimba HEAD <titlu>
funcția YOUR_THEME_NAME_preprocess_html(&$variabile)
{
// checkRoute() și checkArg() sunt funcții personalizate și descrise mai jos
if (checkRoute('view.VIEW_ID.VIEW_DISPLAY_ID') && checkArg() && isset($variables['head_title']))
{
// Piesă inutilă, jetoane sunt necesare pentru scopul meu
$token = Drupal::token();
// $variables['page']['#title'] a fost schimbat în views_pre_render(), astfel încât să putem schimba HEAD <title>.
// Folosesc simbolul [current-page:page-number] pentru a unic titlul
// Pentru a îmbunătăți acest lucru, putem adăuga o logică pentru a include numărul actual al paginii numai dacă există mai mult de 1 pagină
$variables['head_title'] = $variables['page']['#title'] . " | Pagina " . $token->replace('[pagina-curente:numar-pagina]');
}
}
// În cazul în care utilizați titlul paginii curente în breadcrumbs, poate doriți să îl schimbați și pe acesta.
funcția YOUR_THEME_NAME_preprocess_breadcrumb(&$variabile)
{
// checkRoute() și checkArg() sunt funcții personalizate și descrise mai jos
if(checkRoute('view.VIEW_ID.VIEW_DISPLAY_ID') && checkArg() && isset($variables['breadcrumb']['2']['text']))
{
// Ați putea dori să vă var_dump($variables) înainte de a face acest truc pentru a vă găsi bucățica de pesmet.
$variables['breadcrumb']['2']['text'] = gamesGenreTitle(getArg_0());
}
}
// Obținerea valorilor permise ale câmpului (etichetelor) utilizate pentru a crea titlul
function gamesGenreTitle($val)
{
$options = options_allowed_values(\Drupal::service('entity_field.manager')->getFieldStorageDefinitions('taxonomy_term')['field_NAME']);
// Verificați dacă transmitem date corecte
if(este_numeric($val) && $val <= count($opțiuni))
{
returnează $opțiuni[$val];
}
}
// Verificați dacă argumentul necesar este setat și numeric.
funcția checkArg()
{
$arg = Drupal::routeMatch()->getParameter('arg_0');
// În cazul meu, argumentul din vizualizări a fost transmis la arg_0
// Poate varia, așa că încercați să vă var_dump($arg) sau ksm($arg) pentru a verifica dacă este ceea ce aveți nevoie
returnează isset($arg) && is_numeric($arg);
}
// Verificând ruta curentă, avem nevoie de vizualizare și afișare exactă, altfel titlul va fi schimbat pe fiecare pagină.
funcția checkRoute($check)
{
$route = \Drupal::routeMatch()->getRouteName();
returnează $rută == $verifică;
}
// Obținerea argumentelor, transmise vizualizărilor.
funcția getArg_0()
{
// Și din nou, arg_0 ar putea să nu fie argumentul dvs., verificați-l cu var_dump() sau ksm()
returnează Drupal::routeMatch()->getParameter('arg_0');
}
Și o altă metodă, dacă nu aveți o mulțime de etichete de câmp, puteți utiliza aceasta în câmpul de înlocuire a titlului vizualizărilor (cremură este acceptată acolo):
{% if arguments.field_NAME_value == 1 %} TITLUL DVS. 1 {% elseif arguments.field_NAME_value == 2 %} TITLUL DVS. 2 {% endif %}
Sper că asta va ajuta pe cineva!