Folosind cârligul de bază de câmp
Dacă acest șablon fără marcaj ar trebui să scoată valorile câmpului {{ item.content }}
aveți nevoie de codul de bază pentru procesarea acestor valori prin definirea unui cârlig de bază.
Vezi de exemplu comment_theme():
/**
* Implementează hook_theme().
*/
function comment_theme() {
întoarcere [
...
'field__comment' => [
'base hook' => 'câmp',
],
];
}
În acest caz, nu este suficient să începeți numele cârligului temei cu cârligul de bază, este nevoie și de liniuțe duble: field__raw
.
Implementarea unui cârlig de temă personalizată
Nerecomandat, în scop demonstrativ, puteți copia codul de bază relevant în propriul șablon:
mymodule.module:
funcția mymodule_theme($existent, $tip, $temă, $cale) {
întoarcere [
'field_raw' => [
'render element' => 'element',
],
];
}
funcția template_preprocess_field_raw(&$variabile, $hook) {
$element = $variabile['element'];
$variabile['articole'] = [];
$delta = 0;
în timp ce (!gol ($element[$delta])) {
$variables['items'][$delta]['content'] = $element[$delta];
$delta++;
}
}
În acest caz, puteți alege un nume aleatoriu pentru cârligul temei, dar nu trebuie să înceapă cu camp__
.
Comutați la acest șablon în formatatorul de câmp personalizat:
vizualizare funcție publică (FieldItemListInterface $articole, $langcode = NULL) {
$elemente = parent::view($items, $langcode);
if (isset($elements['#theme'])) {
$elements['#theme'] = 'field_raw';
}
returnează $elemente;
}
Și în cele din urmă plasați șablonul minim în folderul modulului
mymodule/templates/field-raw.html.twig
{%- pentru articol din articole %}{{ item.content }}{% endfor -%}