Puncte:0

Lac și blocuri personalizate

drapel eg

Vreau să configurez lac pe site-ul meu multilingv drupal 8 și am un bloc care apare pe o pagină a cărei cale este /my-test . Deci, în franceză, adresa URL ar fi astfel: /fr/my-test, în timp ce în engleză /my-test . În acest bloc, folosesc pur și simplu:

$lang = \Drupal::languageManager()->getCurrentLanguage()->getId(); pentru a detecta limba și apoi afișa știri în funcție de această limbă. deci când url-ul este /my-test > limba este engleza (implicit)> blocul afișează știri legate de lume. când url-ul este /fr/my-test > limba este franceză > blocul afișează știri legate de Franța.

Întrebarea mea este dacă se folosește lac și pagini precum /my-test sunt stocate în cache. Dacă, pe primul loc, un utilizator introduce /my-test și blocul afișează știri despre lume, apoi, un alt utilizator vizitează /my-test/fr . Blocul va afișa știri despre lume (pentru că pagina este stocată în cache) în ciuda faptului că are /fr în url? sau va afișa conținutul potrivit (știri legate de Franța)? Presupun că $lang detectează limba din prefixul URL, nu din browserul utilizatorului.

drapel cn
Varnish este de obicei configurat pentru a stoca în cache după URL. Adresă URL diferită, intrare diferită în cache.
Jaypan avatar
drapel de
Vrei să te uiți la Cache Contexts (https://www.drupal.org/docs/drupal-apis/cache-api/cache-contexts). Cred că Drupal le împinge la Varnish în antetele paginii, astfel încât Varnish va varia memoria cache în consecință.
Mira chalak avatar
drapel eg
@Jaypan Deci presupun că blocul va afișa evenimentul de conținut potrivit, deși în linkul pe care l-ați trimis LanguageInterface este menționat în loc de LanguageManager ..
Mira chalak avatar
drapel eg
@Clive De asemenea, folosesc `$active_id = \Drupal::service('domain.negotiator')->getActiveId();` în același cod de bloc și am avut aceeași îndoială cu privire la această expresie, așa că datorită răspunsului dvs. am știți că $active_id nu va fi același pentru ambii utilizatori, deoarece adresa URL este diferită :)
4uk4 avatar
drapel cn
Comentariul @Clive este corect. Varnish nu poate stoca în cache `/my-test` dacă aveți activată detectarea browserului.Deci, trebuie să adăugați un prefix de cale și pentru limba implicită și apoi să redirecționați către aceasta. Pe pagina redirecționată puteți folosi lac.
4uk4 avatar
drapel cn
Presupun că ați postat această întrebare neînregistrată https://drupal.stackexchange.com/questions/307459/varnish-in-multilingual-site.
Mira chalak avatar
drapel eg
Mulțumesc mult @4k4. ce vrei să spui prin „dacă ai activată detectarea browserului”? Cum pot activa asta? Încă nu îmi pot da seama ce este o metodă de detectare a limbii. Nu cred că am activată detectarea browserului. pentru că atunci când intri pe site-ul meu, ți se cere să alegi o limbă și apoi te redirecționăm către acest prefix de limbă.
4uk4 avatar
drapel cn
/admin/config/regional/language/detection
Mira chalak avatar
drapel eg
@4k4 Am acestea activate: Țară Path Language Handler URL, URL (prefix cale), limba selectată. Browserul este dezactivat. deci presupun ca e bine

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.