Puncte:0

How do I add HTML markup to the title?

drapel zw

I am trying to alter my title to include html. I have tried the following

function MODULENAME_views_pre_render(\Drupal\views\ViewExecutable $view) {
  if ($view->id() == 'products_test') {
    foreach($view->result as $value) {
      $value->_object->set('title', 'test - <b>My new Title</b>');
    }
  }
}

This outputs the title as test - <b>My new Title</b>, rather than rendering the text as HTML markup.

I tried passing the title to decode_entities(), but nothing changed.

I am using the Full content mode, rather than the Fields mode, if this makes any difference.

Puncte:2
drapel cn

Dacă doriți să modificați html, în general veți lucra cu hook_preprocess_hook sau a înlocuire șablon crenguță. Acesta este cazul și pentru vizualizări. În cazul vizualizărilor, șablonul care redă titlul este views-view.html.twig.

EDIT: Cea mai rapidă modalitate este doar să folosești #markup

funcția my_module_preprocess_views_view(&$variabile) {
  $variables['titlu'] = [
    '#markup' => 'test - <b>Noul meu titlu</b>'
  ];
}

Deci, dacă doriți să redați titlul cu a b eticheta, ai putea face:

funcția my_module_preprocess_views_view(&$variabile) {
  $titlu_existent = $variabile['titlu'];
  $variables['titlu'] = [
    '#type' => 'șablon_inline',
    '#template' => '<b>{{ title }}</b>',
    '#context' => [
      'title' => $existing_title,
    ],
  ];
}

Cu toate acestea, poate că nu este ideal să folosiți etichete pentru prezentare și mai bine să folosiți clase și stilul CSS. Dacă doriți doar să adăugați o clasă CSS la țintă, puteți face un lucru similar:

funcția my_module_preprocess_views_view(&$variabile) {
  $titlu_existent = $variabile['titlu'];
  $variables['titlu'] = [
    '#type' => 'container',
    '#attributes' => [
      'clasa' => [
        „vizualizări-titlu”, // sau orice altceva 
      ],
    ],
    '#value' => $existing_title
  ];
}

Ambii #container și #inline_template sunt elemente de randare, și sunt multe disponibile pentru dvs.

Desigur, în funcție de ceea ce fac tema și alte module, cele existente $variables['titlu'] s-ar putea să nu fie doar un șir, așa că poate fi necesar să vă ajustați în consecință.

May  avatar
drapel zw
Salut, multumesc pentru detaliile raspuns. Dar mă uit să nu doar elementele HTML din Titlu să includă titlul într-o clasă.
drapel cn
Scuze, citit greșit. Mi-am actualizat răspunsul pentru a include modul de utilizare a #markup
leymannx avatar
drapel ne
Vă rugăm să nu ezitați să anulați editarea mea dacă nu vă place. Dar mai bine recomandați `inline_template` în loc de `html_tag`, care ar trebui mai degrabă să fie folosit pentru etichetele `script`, de exemplu.
drapel cn
De fapt, nu știam despre `inline_template` -- e grozav! Mulțumesc pentru distribuire.
Puncte:1
drapel us

Pentru a schimba titlul unei vizualizări, puteți implementa hook_preprocess_views_view(), care este ceea ce Vizualizări UI modul face, cu views_ui_preprocess_views_view().

// Afișează titlul pentru previzualizarea administratorului.
dacă (!empty($view->live_preview)) {
  $variables['titlu'] = [
    '#markup' => $view->getTitle(),
  ];
}

Utilizarea acelui cod evită ca marcajul HTML folosit în titlu să fie evadat/dezinfectat.

Cand Vizualizați interfața de utilizare modulul este instalat și doriți să setați același titlu de vizualizare în previzualizarea administratorului, cârligul implementat de modulul dvs. trebuie invocat după cel implementat de către Vizualizați interfața de utilizare modul. Ține minte că views_ui_preprocess_views_view() folosește și următorul cod.

if (!empty($view->live_preview) && \Drupal::moduleHandler()->moduleExists('contextual')) {
  $view->setShowAdminLinks(FALSE);
  foreach (['title', 'header', 'exposed', 'rows', 'pager', 'mai mult', 'footer', 'empty', 'attachment_after', 'attachment_before'] ca $sectiune) {
    dacă (!gol ($variabile[$secțiune])) {
      $variabile[$secțiune] = [
        '#theme' => 'views_ui_view_preview_section',
        '#view' => $view,
        '#section' => $sectiune,
        '#content' => $variables[$section],
        '#theme_wrappers' => [
          „views_ui_container”,
        ],
        '#attributes' => [
          'clasa' => [
            „regiune-contextuală”,
          ],
        ],
      ];
    }
  }
}

Ca o notă secundară, implicit views-view.html.twig șablonul utilizat de modulul Vizualizări a folosit mai mult două variabile de șablon: titlu_prefix și sufixul_titlu.

  {{ title_prefix }}
  {{ titlu }}
  {{ title_sufix }}

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.