Am o vedere a termenilor de taxonomie cu filtru expus.
Pagina principală de vizualizare: site.com/view
Am un câmp de text cu 16 valori și adrese URL diferite:
- site.com/view/1
- site.com/view/2
- site.com/view/...
- site.com/view/16
În funcție de argumentul transmis, schimb titlul de vizualizare astfel:
utilizați \Drupal\views\ViewExecutable;
function theme_views_pre_render(ViewExecutable $view)
{
if( $view->id() == 'MY_VIEW_ID' && $view->current_display === 'VIEW_DISPLAY' && $view->args[0] != 'Toate')
{
$view->setTitle(gamesGenreTitle($view->args[0]));
}
}
function gamesGenreTitle($val)
{
$options = options_allowed_values(\Drupal::service('entity_field.manager')->getFieldStorageDefinitions('taxonomy_term')['field_genre']);
returnează $opțiuni[$val];
}
gamesGenreTitle() primește etichete ale domeniului meu pentru a le pune la titlu.
Funcționează, dar nu schimbă capul <title>
etichetă!
Am încercat theme_preprocess_html(&$variabile)
cu acest cod:
$view_id = \Drupal::routeMatch()->getParameter('view_id');
$view = \Drupal\views\Views::getView($view_id);
Dar primește doar vizualizați id
și nu pot accesa argumentele acolo pentru a schimba titlul doar pe paginile necesare.
A doua mea presupunere, pe care nu am încercat-o încă, este să validez și să explodez la calea curentă a matricei, folosind \Drupal::service('path.current')->getPath();
, obțineți ultima cifră și transmiteți-o către jocuriGenTitlu()
.
Sau poate există o cale mai bună?