Рейтинг:0

views_embed_view() игнорирует файл шаблона, используя Ajax

флаг jp

У меня есть представление, показанное двумя способами. Как только я покажу его как обычный блок и один раз использую 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));
    вернуть новый ответ ($ разметка);
  }
}
Рейтинг:0
флаг pw

Я попытался воспроизвести случай следующим образом.

1.Добавлена ​​следующая структура в views-view-table--articles.html.twig

<div class="пример-шаблон">
{% для строки в строках %}
  {% set titletxt = '' %}
  {% set viewnod = '' %}
  {% set editnode = '' %}
    {% для ключа, столбца в row.columns %}
      {% для поля в column.fields %}                                    
        {% для содержимого в column.content %}
          {% если поле == 'название' %}
             {% set titletxt = content.field_output %}
          {% конец%}
          {% if field == 'view-node' %}
             {% set viewnod = content.field_output %}
          {% конец%}              
          {% if field == 'edit-node' %}
             {% set editnode = content.field_output %}
          {% конец%}
        {% конец для %}
      {% конец для %}
    {% конец для %}
    <дел>
      <h3>
        {{названиетекст}}
      </h3>
      <дел>
        {{узел просмотра}}
      </div>
      <дел>
        {{узел редактирования}}
      </div>
    </div>
{% конец для %}
  1. В node -- article.html.twig внедрить следующий вид

     <div class="relatedarticles">
       <h2>Articles From Block View</h2>
       {% if articles %}
         {{ articles }}
       {% endif %}
     </div>
    
  2. в fluffiness.theme добавьте следующее

    функция fluffiness_preprocess_node(&$variables) { $relatedArticles = views_embed_view('статьи', 'блок_1'); $variables['articles'] = \Drupal::service('renderer')->render($relatedArticles);
    }

Затем я заметил, что в режиме просмотра узла структура с шаблоном представления отображается следующим образом.

введите описание изображения здесь

Joost avatar
флаг jp
Спасибо за ответ, узнал.Из-за вашего теста проблема заключается в использовании встроенных представлений в сочетании с Ajax. Я обновил свой вопрос с дополнительной информацией.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.