Puncte:0

Dependențe de teme personalizate

drapel my

Am o problemă cu o temă personalizată pe care am creat-o pe un site de testare Drupal 9.

  • Versiunea Drupal: 9.3.13
  • Server web Apache 2.4.41 (XAMP win64)
  • PHP versiunea 8.0.11
  • Versiunea bazei de date 10.4.8-MariaDB

temă personalizată professional.info.yml:

nume: Profesionist
tip: temă
descriere: versiunea Drupal 9 a temei Professional
cerinta_versiune_core: ^8 || ^9
tema de bază: fals
versiunea: 1.0.0
biblioteci:
  - stil profesional/global
  - scenarii profesionale/globale
regiuni:
  sidebar_first: „Prima bară laterală”
  sidebar_second: „A doua bară laterală”
  antet: „Header”
  front_welcome: „Bine ați venit”
  conținut: „Conținut”
  content_top: „Sub conținut”
  ajutor ajutor'
  subsol: „Footer”
  footer_first: „Primul de jos”
  footer_second: „Al doilea de jos”
  footer_third: „Al treilea de jos”
caracteristici:
  logo: adevărat
  site_name: adevărat
  site_slogan: adevărat
  node_user_picture: adevărat
  comment_user_picture: adevărat
  comment_user_verification: adevărat
  favicon: adevărat
  meniul_principal: adevărat
  secundar_meniu: false

temă personalizată professional.libraries.yml:

stil global:
  versiune: VERSIUNE
  css:
    temă:
      css/style.css: {}  
scripturi globale:
  versiune: VERSIUNE
  js:
    js/custom.js: {}
    js/jquery.flexslider-min.js: {}
    js/slide.js: {}
  dependențe:
    - core/jquery
    - miez/drupal
    - core/drupalSettings
    - core/drupal.dialog.ajax

Am salvat toate fișierele noii teme respectând convenția:

/site-root
 - teme
   - profesionist
     - css
     - js
     - șabloane
       - sistem

Problema este că dependențele, inclusiv core/drupal, nu sunt aplicate deloc, iar cele trei fișiere JavaScript din scripturi globale directive nu sunt incluse în paginile site-ului, chiar dacă atât fișierele CSS de bază Drupal, cât și style.css de la profesional: global-styling au fost incluse.

Am văzut asta pe consola instrumentelor de dezvoltare a browserului Chrome când am încercat, de exemplu, să arăt o pagină de bază nod într-un pop-up modal folosind un exemplu Drupal.org:

<ol>
    <li><a class="use-ajax" data-dialog-options="{&quot;width&quot;:400}" data-dialog-type="modal" href="/xampp/drupal9test/node/9">Basic page displayed in modal dialog. </a></li>
    <li><a class="use-ajax" data-dialog-options="{&quot;width&quot;:400}" data-dialog-type="dialog" href="/xampp/drupal9test/node/9">Basic page displayed in non modal dialog. </a></li>
    <li><a class="edit-button use-ajax" data-dialog-options="{&quot;width&quot;:400}" data-dialog-renderer="off_canvas" data-dialog-type="dialog" href="/xampp/drupal9test/node/9">Basic page displayed in a nice off canvas dialog. </a></li>
</ol>

Nodul este afișat ca o pagină convențională, niciun pop-up modal nu este deschis. Deci, nici JavaScript de bază, nici AJAX nu se aplică dacă folosesc tema mea personalizată; când trec la tema Bartik, totul funcționează, și modale. Am încercat să adaug direct bibliotecile de bază Drupal și AJAX professional_preprocess_page(&$variabile) în fișierul professional.theme cu linia:

$variables['#attached']['library'][] = 'core/drupal';
$variables['#attached']['library'][] = 'scripturi-profesionale/globale';

Am încercat chiar să adaug biblioteci cu Twig direct în șablonul html.html.twig cu {{ attach_library('core/drupal') }}, dar niciuna dintre aceste modificări nu a avut vreun efect.

Desigur, de fiecare dată când am schimbat unele setări am șters și memoria cache a site-ului.

ce fac greșit? Imi poate da cineva o solutie?

Jaypan avatar
drapel de
Nu pot să-ți spun ce faci greșit, dar pariez că este o problemă de șablon și îți lipsește ceva necesar. Ați implementat `html.html.twig`? Poate ai ceva ciudat.
drapel ru
Tema dvs. suprascrie șablonul `html.html.twig`? *Trebuie* să le ai pe toate cele trei `` și ``s acolo, vezi https://github.com/drupal/drupal/blob/9.5.x/core/themes/stable9/templates/layout/html.html.twig#L31
Kevin avatar
drapel in
Da, din moment ce Bartik funcționează și al tău nu, îți lipsește ceva fundamental. Nu aveți un set de teme de bază, așa că lipsește ceva, așa cum au remarcat alți comentatori.
drapel my
Mulțumesc pentru răspunsuri, am reușit să rezolv problema, dar a trebuit să adaug fișierele js personalizate în chiar înainte de etichetă, dar de linie în secțiune era deja acolo și a fost inutil... M-am gândit că indicarea bibliotecilor personalizate și a dependențelor în fișierul libraries.yml a fost suficientă pentru ca acesta să funcționeze.
mradcliffe avatar
drapel cn
Ar trebui să funcționeze. Reiterând că trebuie să fie altceva în neregulă. Urmăriți API-ul JavaScript Drupal în ceea ce privește comportamentele și injectați dependențe cu o expresie de funcție invocată imediat (IIFE)? Furnizarea javascript-ului ar putea ajuta.
drapel my
@mradcliffe: Nu știu răspunsul la întrebarea ta, dar dacă îți place, pot pune întreaga temă personalizată la dispoziția tuturor (cu condiția să-mi explici unde și cum o pot încărca), așa că dacă cineva are chef de depanare și Îmbunătățirea acestuia poate fi o nouă alegere pentru toți utilizatorii din întreaga lume, până la urmă tocmai am modificat tema altcuiva pentru Drupal 7.

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.