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);
}
}