Puncte:0

Utilizarea variațiilor de șablon din folderul module

drapel lc

Am soluția obișnuită de tematică pentru o entitate personalizată:

funcția module_theme($existent, $tip, $temă, $cale) {
  întoarcere [
    'personalitate' => [
      'render element' => 'elemente',
      'șablon' => 'personalitate',
    ],
  ];
}

funcția template_preprocess_customentity(matrice &$variabile) {
  $variabile['conținut'] = [];
  ...
}

function module_theme_suggestions_customentity_alter(matrice &$sugestii, matrice $variabile) {
  $sanitized_view_mode = strtr($variables['elements']['#view_mode'], '.', '_');
  $suggestions[] = 'personalitate__' . $sanitized_view_mode;
}

Singura problemă este că atunci când vreau să folosesc o crenguță specifică modului de vizualizare, personalitate--viewmode.html.twig, funcționează numai dacă fișierul twig este în interiorul temei. Dacă este în modul șabloane folder, nu este preluat (verificate cu atenție toate cazurile cu depanarea twig).

Deci, în acest sens, funcționează. Totuși, aș avea nevoie de crenguța în modul în sine, deoarece în acest caz, nu este o simplă întrebare tematică, modul de vizualizare este atât logic, cât și programatic, un mod radical diferit de a prezenta conținutul. Este pentru uz intern, nu un modul contrib, așa că așteptările normale ale utilizatorilor nu se aplică.

Puncte:2
drapel in

Trebuie să adăugați calea la cârligul temei astfel:

'my_entity__mailteaser' => [
        'render element' => 'elemente',
        'base hook' => 'my_entity',
        'template' => 'my-entity--mailteaser',
        'path' => drupal_get_path('modul', 'asdentbase') . „/șabloane”,
      ],
drapel lc
Din păcate, dacă fac asta, nu va mai găsi fișierul meu `theme.inc` deoarece va fi așteptat în același folder. Nu există setări separate de cale pentru ambele...
drapel lc
Oricum, am încercat să pun și `theme.inc` acolo. Nu, nu merge. `path` se schimbă unde sistemul încearcă să găsească `fișierul` atașat, dar nu schimbă locul în care caută șabloanele.
4uk4 avatar
drapel cn
`cârlig de bază` este soluția corectă. Drupal este apoi capabil să găsească șablonul în folderul de șabloane al modulului, chiar și fără a-l indica prin „șablon” sau „cale”. Vedeți https://drupal.stackexchange.com/questions/298844/use-custom-content-entity-theme-suggestions-in-own-module
drapel lc
Nu de la sine, ci doar dacă adaug un element de temă suplimentar cu modul de vizualizare lipit de el, da. ai dreptate. Vrei să-l pui într-un răspuns scurt pe care să îl accept? :-)
4uk4 avatar
drapel cn
@Gábor, vezi subiectul legat. Codul intrebare+raspuns este solutia completa.
drapel lc
Da, știu, mulțumesc, l-am folosit. Am vrut doar să pot accepta aici.

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.