Puncte:0

De atunci am găsit câteva moduri în care funcționează, pe care le voi posta într-un răspuns pentru a atrage răspunsuri mai bune decât ale mele!

drapel jp

Crearea fișierului din s3fs (bucket S3) întrerupe migrarea

Am două câmpuri de referință: culori și etichete. Am un mac, are etichete: frumos si culori: , roșu.

verde

vreau html ca:

Această floare este: verde, frumoasă, roșie

  • adică

Vreau să iau termenii din două câmpuri și să îi îmbin într-o singură colecție.

Am incercat in Twig:

Am început în crenguță. Aș putea combina termenii, dar nu i-am putut sorta.
{% set alltags = content.field_tags['items']|merge(content.field_colours['items']|keys|map(i => content.field_colours[i])) %} 
{{ alltags }}

Am încercat în pre-proces Apoi m-am mutat la PHP într-un mytheme_preprocess_node() funcţie. M-am gândit că aș putea strecura câteva dintre ele culorile termeni în sub Etichete

 câmp... Părea să le adauge la obiectul OK, dar niciuna dintre cele de culoare nu a fost scoasă.
/** @var Drupal\Core\Field\EntityReferenceFieldItemList */
$coloursTags = $variables['content']['field_colours']['#items'] ?? NUL;
if ($coloursTags && $coloursTags->count()) {
  $tags = $variables['conținut']['field_tags']['#items'];
  foreach ($coloursTags ca $articol) {
    /** @var Drupal\Core\Field\Plugin\Field\FieldType\EntityReferenceItem $item */
    $tags->appendItem($item->getValue());
  }
}

Puncte:0
drapel jp

Am găsit câteva modalități de a realiza asta, postând aici, dar sunt deschis către modalități mai bune/mai curate. Sunt mai ales nemulțumit de răspunsurile mele cu modul de a accesa numele etichetei - pare atât de complicat să încerci să obții numele brut?!

Ambele blocuri de cod trăiesc într-un mytheme_preprocess_node():

Răspunsul 1: creați o nouă variabilă cu toate etichetele din ea:

<?php

  $allTags = [];
  $addTags = function($fieldName) foloseste (&$allTags, $variables) {
    if (isset($variables['conținut'][$fieldName])) {
      foreach (\Drupal\Core\Render\Element::children($variables['conținut'][$fieldName]) ca $i) {
        $allTags[]= $variables['conținut'][$fieldName][$i];
      }
    }
  };
  $addTags('câmp_culoare');
  $addTags('field_tags');
  usort($allTags, function ($a, $b) {
    $tagA = $a['#taxonomy_term']->name->getValue()[0]['value'];
    $tagB = $b['#taxonomy_term']->name->getValue()[0]['value'];
    returnează strcasecmp($tagA, $tagB);
  });
  $variables['content']['allTags'] = $allTags;

Apoi, în Twig pentru șablonul de nod: {{ allTags }}.

Răspunsul 2: amestecați etichetele din câmpul de culoare în câmpul de etichete din matricea de randare

<?php

  $allTagsTemp = [];
  foreach (\Drupal\Core\Render\Element::children($variables['content']['field_tags']) ca $i) {
    $tag = $variables['conținut']['field_tags'][$i];
    unset($tag['#greutate']);
    unset($variables['conținut']['field_tags'][$i]);
    $allTagsTemp[] = $etichetă;
  }
  foreach (\Drupal\Core\Render\Element::children($variables['content']['field_colours']) ca $i) {
    $tag = $variables['conținut']['field_colours'][$i];
    unset($tag['#greutate']);
    unset($variables['conținut']['field_colours'][$i]);
    $allTagsTemp[] = $etichetă;
  }
  usort($allTagsTemp, function ($a, $b) {
    $tagA = $a['#taxonomy_term']->name->getValue()[0]['value'];
    $tagB = $b['#taxonomy_term']->name->getValue()[0]['value'];
    returnează strcasecmp($tagA, $tagB);
  });
  $variables['conținut']['field_tags'] += $allTagsTemp;

Apoi în Twig {{ field_tags }}.

drapel cn
`$a['#taxonomy_term']->name->getValue()[0]['value']` poate fi scurtat la `$a['#taxonomy_term']->label()`
drapel jp
@Clive, mulțumesc, m-am gândit că trebuie să fie o scurtătură!!

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.