Puncte:-1

Funcția drupal_add_js nedefinită în themename_preprocess_page

drapel cn

Am vrut să folosesc javascript pentru a șterge o opțiune din lista de opțiuni în cazul în care utilizatorul nu este administrator și am căutat și am găsit acest cod într-o postare și l-am folosit în temele proiectului->mythemename->mythemename.theme fișier, dar asta nu a mers si am mai multe probleme pe care vreau sa stiu sa le rezolv, ca am cautat mult nu am gasit o solutie

funcția mythemenaname_preprocess_page(&$variabile, $hook) {
    if (!in_array("administrator", \Drupal::currentUser()->roluri) {
        if (isset($variables['nod']->type) && !empty($variables['nod']->type) && (strpos($variables['nod']->type, 'proxy_request') ! == fals)) {
            drupal_add_js(drupal_get_path('theme', 'mythemename') . '/js/datcbaseauth.js');
        }
    }
}

Prima problemă este că nu pot obține datele utilizatorului actual, deoarece sunt întotdeauna raportat că al doilea parametru al funcției in_array este nul.

A doua problemă este că spun că al doilea parametru al funcției strpos este un obiect și nu doar un șir, chiar dacă exemplul din postare îl trata doar ca pe un șir.

A treia și ultima problemă este că spun că funcția drupal_add_js și funcția drupal_get_path sunt nedefinite.

Am căutat mult timp, dar nu am găsit o soluție la aceste 3 probleme, chiar și subiectele pe care le-ar putea menționat în ele nu sunt complete, de exemplu, nu raportează cum să folosești funcția drupal_add_js în fișierul .theme ce este condiția prealabilă sau chiar în documentația Drupal în sine, nu există date despre variabila &$variabile care vor spune despre conținutul acesteia, natura fiecărei părți etc., cu excepția faptului că este o matrice asociativă

Puncte:1
drapel gb
  • Prima problemă pentru a obține rolurile de utilizator actuale folosește asta

    \Drupal::currentUser()->getRoles();

  • A doua problema: $variabile['nod']->tip este o matrice deci folosiți $variables['nod']->bundle() pentru a obține în schimb tastați:

  • Al treilea drupal_add_js nu mai este acceptat în biblioteca de utilizare Drupal 8 și atașat, așa că încercați ceva de genul următor


/**
 * Implementează hook_preprocess_HOOK().
 */
funcția THEME_preprocess_page(&$variabile) {
  if (in_array("administrator", \Drupal::currentUser()->getRoles())) {
    if ($variabile['nod']->bundle() && (strpos($variables['nod']->bundle(), 'proxy_request') !== FALSE)) {
      $variables['#attached']['library'][] = 'TEMA/biblioteca-personalizata';
    }
  }
}

Amr.Mohammad87 avatar
drapel cn
Am primit această eroare după ce am editat „Eroare: apel la un pachet de funcții membre sau nul în gasfv1_preprocess_page()” știind că numele gasfv1 este numele temei personalizate. Acesta este noul meu cod acum function -> function gasfv1_preprocess_page(&$variables, $hook) { dacă (!in_array("administrator", \Drupal::currentUser()->getRoles()) { if ($variables['nod']->bundle() && (strpos($variables['node']->bundle(), 'proxy_request') !== false)) { $variables['#attached']['library'][] ='gasfv1/js/datcbaseauth.js'; } } }
Amr.Mohammad87 avatar
drapel cn
Întrebarea mea este atât de dificilă?
berramou avatar
drapel gb
dacă primiți eroarea adăugați condiția *isset($variables['node'])* în instrucțiunea if!
Amr.Mohammad87 avatar
drapel cn
Problema nu este în stare. Problema este că înseamnă că nu există niciun element numit nod în interiorul variabilei $variables și vreau să știu dacă numele mașinii tipului de conținut care este redat conține un anumit model, adică proxy_request, astfel încât să pot introduce javascript-ul meu fișier pentru acele pagini, care sunt de tip conținut
berramou avatar
drapel gb
În mod normal, **$variables['node']** conțin informații despre nod dacă sunteți în pagina nod, de exemplu aveți un tip de conținut numit *proxy_request* și pagina dvs. curentă este nod de tip *proxy_request, veți găsi informațiile în interior cheia nodului

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.