У меня есть представление, показанное двумя способами. Как только я покажу его как обычный блок и один раз использую views_embed_view()
в сочетании с Аяксом.
Для обычного блока я создал просмотры-просмотр-list.html.twig
шаблон в моей теме, добавляющий див
обертка. Мой стиль основан на этом добавленном div.
Для встроенного блока это просмотры-просмотр-list.html.twig
блок игнорируется, поэтому стиль отключен.
С использованием views_embed_view()
внутри предварительная обработка
работает так, как вы ожидаете, но использование его с Ajax игнорирует шаблоны.
Как я могу убедиться, что шаблон не игнорируется, или есть ли способ добавить другой шаблон, который отображается при встраивании представления?
У меня есть собственный модуль my_view_ajax
Я прикрепляю файл js в моем .модуль файл:
функция my_view_ajax_preprocess_node(&$variables) {
$узел = $переменные['узел'];
//проверяем тип контента
if ($node->getType() == 'статья' || $node->getType() == 'вопрос') {
$variables['#attached']['library'][] = 'my_view_ajax/my_view_ajax__js';
}
}
В моем .js file Я использую Ajax для получения блока просмотра.
const routing_url = '/custom/ajax/articles';
$.ajax({
тип: 'ПОЛУЧИТЬ',
URL: маршрутизация_url,
данные: 'нид='+нид,
тип данных: 'html',
асинхронный: правда,
завершено: функция (данные) {
$containerContent.empty().html(data.responseText);
$containerContent.fadeIn();
$ajaxLoader.fadeOut();
}
});
В моем маршрутизация.yml
Я создаю путь Ajax
my_view_ajax.статьи:
путь: '/custom/ajax/статьи'
значения по умолчанию:
_title: 'Статьи'
_controller: '\Drupal\my_view_ajax\Controller\viewsajaxController::issueArticles'
требования:
_permission: 'доступ к содержимому'
И, наконец, в моем просмотров ajaxController.php
пространство имен Drupal\my_view_ajax\Controller;
используйте Drupal\Core\Controller\ControllerBase;
используйте Drupal\node\Entity\Node;
используйте \Symfony\Component\HttpFoundation\Response;
class viewsajaxController расширяет ControllerBase {
общественная функция issueArticles () {
$нид = 11;
$markup = \Drupal::service('renderer')->render(views_embed_view('ccr_overview', 'block_articles_view', $nid));
вернуть новый ответ ($ разметка);
}
}