Puncte:0

views_embed_view() ignoră fișierul șablon folosind Ajax

drapel jp

Am o vedere prezentată în două moduri. Odată ce îl arăt ca un bloc normal și o singură dată folosind views_embed_view() în combinație cu Ajax.

Pentru blocul obișnuit am creat un views-view-list.html.twig șablon în tema mea adăugând un div învelitoare. Stilul meu se bazează pe acest div adăugat.

Pentru blocul încorporat, acesta views-view-list.html.twig blocul este ignorat și, prin urmare, stilul este dezactivat.

Folosind views_embed_view() în interiorul unui preproces funcționează așa cum v-ați aștepta, dar folosirea lui cu Ajax ignoră șabloanele.

Cum mă pot asigura că șablonul nu este ignorat sau există vreo modalitate de a adăuga un alt șablon care se vede la încorporarea vizualizării?

Am un modul personalizat my_view_ajax

Atașez fișierul js în fișierul meu .modul fişier:

funcția my_view_ajax_preprocess_node(&$variabile) {
  $nod = $variabile['nod'];
  //verificați tipul de conținut
  if ($node->getType() == „articol” || $node->getType() == „problemă” ) {
    $variables['#attached']['library'][] = 'my_view_ajax/my_view_ajax__js';
  }
}

In al meu .js Fișierul Folosesc Ajax pentru a obține blocul de vizualizări.

const routing_url = '/custom/ajax/articles';
$.ajax({
  tip: „GET”,
  url: routing_url,
  date: 'nid='+nid,
  dataType: „html”,
  asincron: adevărat,
  complete: function (data) {
    $containerContent.empty().html(data.responseText);

    $containerContent.fadeIn();
    $ajaxLoader.fadeOut();
  }
});

In al meu rutare.yml Eu creez calea Ajax

my_view_ajax.articles:
  cale: „/personalizat/ajax/articole”
  implicite:
    _title: „Articole”
    _controller: „\Drupal\my_view_ajax\Controller\viewsajaxController::issueArticles”
  cerinte:
    _permission: „accesează conținut”

Și în sfârșit în mine viewsajaxController.php

spațiu de nume Drupal\my_view_ajax\Controller;

utilizați Drupal\Core\Controller\ControllerBase;
utilizați Drupal\node\Entity\Node;
utilizați \Symfony\Component\HttpFoundation\Response;

clasa viewsajaxController extinde ControllerBase {
  public function issueArticles() {
    $nid = 11;

    $markup = \Drupal::service('renderer')->render(views_embed_view('ccr_overview', 'block_articles_view', $nid));
    returnează un răspuns nou ($markup);
  }
}
Puncte:0
drapel pw

Am încercat să reproduc cazul după cum urmează.

1.S-a adăugat următoarea structură în views-view-table--articles.html.twig

<div class="example-template">
{% pentru rând în rânduri %}
  {% set titletxt = '' %}
  {% set viewnod = '' %}
  {% set editnode = '' %}
    {% pentru cheie, coloană în row.columns %}
      {% pentru câmpul din column.fields %}                                    
        {% pentru conținutul din column.content %}
          {% if field == 'titlu' %}
             {% set titletxt = content.field_output %}
          {% endif %}
          {% if field == 'view-node' %}
             {% set viewnod = content.field_output %}
          {% endif %}              
          {% if field == 'edit-node' %}
             {% set editnode = content.field_output %}
          {% endif %}
        {% endfor %}
      {% endfor %}
    {% endfor %}
    <div>
      <h3>
        {{titletxt}}
      </h3>
      <div>
        {{viewnod}}
      </div>
      <div>
        {{editnode}}
      </div>
    </div>
{% endfor %}
  1. În node--article.html.twig încorporați următoarea vizualizare

     <div class="relatedarticles">
       <h2>Articles From Block View</h2>
       {% if articles %}
         {{ articles }}
       {% endif %}
     </div>
    
  2. în puf.temă adăugați după cum urmează

    funcția fluffiness_preprocess_node(&$variabile) { $relatedArticles = views_embed_view('articole', 'block_1'); $variables['articles'] = \Drupal::service('renderer')->render($relatedArticles);
    }

Apoi am observat în modul de vizualizare a nodurilor, structura cu șablonul de vizualizare este redată după cum urmează.

introduceți descrierea imaginii aici

Joost avatar
drapel jp
Multumesc pentru raspuns, am aflat.Din cauza testului dvs., problema este în utilizarea vizualizărilor încorporate în combinație cu Ajax. Mi-am actualizat întrebarea cu câteva informații suplimentare.

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.