Puncte:-1

Cum să gestionezi o ieșire diferită pentru același bloc (problema de caching)?

drapel cn

Am o temă care are două apariții diferite pentru blocul meniului principal, așa că am scris o sugestie de temă ca aceasta:

function MYTHEME_theme_suggestions_menu_alter(matrice &$sugestii, matrice $variabile) {
  if ($variables['menu_name'] == 'principal' și Drupal::service('path.matcher')
  ->isFrontPage()) {
    array_splice($sugestii, 1, 0, 'menu__main__front');
  }
}

astfel încât să pot tema meniul principal pentru prima pagină în felul său. Problema ridicată este despre modul în care sistemul de cache Drupal se comportă cu privire la blocuri, astfel încât atunci când utilizatorul navighează la alte pagini, acesta utilizează aceeași ieșire de bloc care este produsă pentru prima pagină. La început m-am gândit că ar putea fi o problemă cu sugestia de teme, dar apoi mi-am dat seama că atunci când șterg memoria cache, funcționează bine.

Orice sugestie pentru cazul în care dorim ca un bloc să fie scos în mod diferit în funcție de anumite condiții?

drapel ru
Trebuie să adăugați acel `context` care schimbă aspectul matricei `#cache`, în cazul dvs. `url.path`. Consultați [Care este modalitatea corectă de a seta contextele cache pe blocuri personalizate?](https://drupal.stackexchange.com/questions/223376/what-is-the-correct-way-to-set-cache-contexts-on -blocuri personalizate)
4uk4 avatar
drapel cn
Vedeți https://drupal.stackexchange.com/questions/182005/is-front-is-not-available-in-all-templates
Puncte:0
drapel de

Orice sugestie pentru cazul în care dorim ca un bloc să fie scos în mod diferit în funcție de anumite condiții?

Vrei cache Contexts: https://www.drupal.org/docs/drupal-apis/cache-api/cache-contexts

Contextele cache oferă o modalitate declarativă de a crea dependente de context variații ale ceva care trebuie să fie stocat în cache.

După cum a spus Hudri, aveți nevoie de un context cache url.cale.

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.