Puncte:1

Ascundeți Bara de instrumente Admin în iFrame

drapel cn

Este cumva posibil în Drupal 8 să ascundeți Bara de instrumente de administrare atunci când site-ul este încărcat într-un iFrame? Ca de ex. a da un argument? :-)

M-am gândit să folosesc un fel de preproces pe pagina care este redată în iFrame, dar acest lucru nu va funcționa, deoarece html-ul este stocat în cache de Drupal. De asemenea, m-am gândit să o fac în Javascript, dar nu vreau să includ un fișier javascript pe fiecare pagină, dar implicit.

Poate că cineva știe un hook_() care îmi va permite să manipulez css, dar nu este stocat în cache?

drapel za
poți folosi o altă temă pentru administrator/utilizator? https://www.drupal.org/project/toolbar_visibility
drapel cn
Nu, deoarece aceasta este o implementare pentru un modul contrib, nu vreau să oblig utilizatorii să instaleze o altă temă.
Puncte:3
drapel cg

Aș folosi o abordare similară cu @Hudri și aș accesa site-ul ca https://www.mysite.com?is_iframe=true.

Apoi, adăugați o clasă la eticheta body dacă există opțiunea de solicitare:

/**
 * Implementează hook_preprocess_HOOK().
 */
funcția MYMODULE_preprocess_html(&$variabile) {
  $is_iframe = \Drupal::request()->query->get('is_iframe');
  dacă ($is_iframe === „adevărat”) {
    $variables['attributes']['class'][] = 'hide-admin-toolbar';
  }
}

Dacă îmi amintesc bine, Drupal va regenera codul HTML când accesați https://www.mysite.com?is_iframe=true vs https://www.mysite.com.


Referinte:

drapel bw
Excelenta solutie! Presupun că folosești CSS pentru a ascunde bara de instrumente.Acest lucru poate deveni puțin nodur dacă utilizați și admin_toolbar. O altă opțiune ar fi să împiedicați redarea acestuia, de exemplu: `if ($is_iframe === 'true') { if (isset($variables['page_top']['toolbar'])) { unset($variables['page_top']['toolbar']); }}`
Puncte:2
drapel ru

Acest lucru ar trebui să fie realizabil cu a contextul cache:

Nucleul Drupal oferă deja un context cache
url.query_args
care poate fi folosit pentru parametrul de interogare, de ex. un URL
https://www.mysite.com?is_iframe=true
ar fi un context cache
\Drupal::service('cache_context.url.query_args')->getContext('is_iframe');

AFAIK cache_context url.query_args este deja activat implicit în nucleul Drupal, așa că trebuie doar să adăugați acest context cache la matricea de randare într-o funcție de preprocesare adecvată.

Rețineți că, în general, contextele cache nu funcționează cu modulul Internal Page Cache!

Pentru producție, ar trebui să ajustați acest lucru cu un context cache mai specific, personalizat url.query_args:my_query_param pentru a limita contextele de cache inutile (boții proști ar putea declanșa un număr de miliarde de calcule de context în cache altfel)

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.