Puncte:0

Vizualizare tabel câmpuri combinate, sortare separată

drapel us

Caut ajutor în configurarea unei vizualizări de tabel pentru a putea sorta separat coloanele îmbinate. La un nivel înalt am următorul tabel de vizualizare:

Nume Numele de familie Vârstă/Greutate^
Ken Davidson Vârsta: 42
Greutate: 200

Am toate cele trei coloane care pot fi sortate, cu excepția faptului că a treia coloană sortează numai după Vârstă, chiar dacă are două opțiuni de sortare posibile. Făcând clic pe Varsta/Greutate va sorta numai după vârstă, nu pot vedea nicio modalitate de a face sortarea după vârstă sau greutate.

Am găsit câteva link-uri aici care nu par prea optimiste, dar sper că lucrurile s-au schimbat:

Editați | ×

Cu cât mă uit mai mult la asta, cu atât încep să cred că singura modalitate de a face acest lucru este oferirea unui șablon personalizat vizualizări-view-table--custom-view-name.html.twig și ar trebui să suprascrieți o singură secțiune:

      <tr>
        {% for key, column in header %}
          {% if column.default_classes %}
            {%
              set column_classes = [
                'views-field',
                'views-field-' ~ fields[key],
              ]
            %}
          {% endif %}
          <th{{ column.attributes.addClass(column_classes).setAttribute('scope', 'col') }}>
            <div class="th-wrap">
              {%- if column.wrapper_element -%}
                <{{ column.wrapper_element }}>
                  {% if column.title == 'sort by Age/Weight' %}
                    <!-- Add two links hardcoding the URL appropriately -->
                  {% else %}
                    {%- if column.url -%}
                    <a href="{{ column.url }}" title="{{ column.title }}">{{ column.content }}{{ column.sort_indicator }}</a>
                  {%- else -%}
                    {{ column.content }}{{ column.sort_indicator }}
                  {%- endif -%}
                </{{ column.wrapper_element }}>                    
                  {% endif %}                  
              {%- else -%}
                {%- if column.url -%}
                  <a href="{{ column.url }}" title="{{ column.title }}">{{ column.content }}{{ column.sort_indicator }}</a>
                {%- else -%}
                  {{- column.content }}{{ column.sort_indicator }}
                {%- endif -%}
              {%- endif -%}
            </div>
          </th>
        {% endfor %}
      </tr>

Înainte de a urma acest drum, vi se pare o soluție optimă? Problema aici este că aș pierde capacitatea de a afișa indicatorul de sortare, deoarece coloana este încă direct legată de Varsta/Greutate (care este doar Vârsta) în loc de coloanele individuale.

Există o variabilă globală disponibilă în vederi-vedere-tabel renderer că aș putea verifica coloana de sortare reală? Este URL-ul disponibil pentru analizare?

Puncte:0
drapel us

Am reușit să fac acest lucru să funcționeze - în cel mai bun mod Drupal la care m-am putut gândi. Dacă acest lucru este departe, mi-ar plăcea niște îndrumări despre cum să fac acest lucru corect, dar pentru cei care caută același lucru:

Am adăugat un preprocesor de temă pentru a actualiza tabelul $variabile cu sortarea/ordinea la cel mai înalt nivel:

funcția sc_preprocess_views_view_table(&$variabile) {  
  $view = $variables['view'];
  $handler = $view->style_plugin;
  $variables['sortare'] = matrice(
    'activ' => $handler->activ, 
    'order' => $handler->order
  );
}

Fișierul twig a fost actualizat cu:

// views-view-table--custom-view--page.html.twig
{% if column.title == „sortați după vârstă/greutate” %}
  <a href="{{ sc_column_sort_url('field_hfs_age', sorting) }}" title="Sort by age">varsta</a>
  {% if sorting['active'] == 'field_hfs_age' %}
    {{ sc_column_sort_indicator(sorting['order']) }}
  {% endif %} /
  
  <a href="{{ sc_column_sort_url('field_hfs_weight', sorting) }}" title="Sort by weight">greutate</a>
  {% if sorting['active'] == 'field_hfs_weight' %}
    {{ sc_column_sort_indicator(sorting['order']) }}
  {% endif %}
{% altfel %}
  // Cod original
{% endif %}

Și au fost create două funcții Twig personalizate

  /**
   * Oferă funcționalitate comună pentru crearea adresei URL de sortare a coloanei personalizate necesare.
   * @param $name numele câmpului curent
   * @param $sortarea matricei asociate sortării curente
   */
  funcția publică scTableSortUrl($nume, $sortare) {
    $nextSort = ($sorting['activ'] == $nume && $sorting['order'] == 'asc' ? 'desc' : 'asc');
    returnează „?order={$name}&sort={$nextSort}”;
  }

  /**
   * Afișează indicatorul de sortare al tabelului personalizat curent. Sunt sigur că asta există undeva
   * în rest, dar nu îl găsesc.
   * @param $inițial ordinea inițială de sortare [asc | desc]
   */
  funcția publică scTableSortIndicator($inițial) {
    întoarcere [
      '#theme' => 'tablesort_indicator',
      '#style' => $inițial,
    ];
  }

https://www.hashbangcode.com/article/drupal-9-creating-custom-twig-functions-and-filters pentru trimitere.

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.