Как создать переключатель, который изменяет содержимое страницы? - PullRequest
0 голосов
/ 19 марта 2019

У меня есть сайт друпалов, 8-й. Я использую Twig для настройки своих страниц.

Я создал 2 блока просмотра:

  • drupal_view('message_activity_stream_timeline_public', 'block_1') }}
  • drupal_view('message_activity_stream_timeline_private', 'block_1') }}

На моей домашней странице я хочу разместить переключатель, который переходит с block_1 на block_2 и наоборот.

Когда переключатель находится в положении PUBLIC, он должен отображать блок drupal_view('message_activity_stream_timeline_public', 'block_1') }}.

Когда переключатель находится в положении PRIVÉ, на нем должен отображаться блок drupal_view('message_activity_stream_timeline_private', 'block_1') }}.

Запоминание позиции не требуется.

Как можносделать это?

Вот моя страница:

           <div class="home-page-header-bottom">
              <h5>Fil d’actualité <button type="button" class="btn btn-default btn-tooltip" data-toggle="tooltip" data-placement="bottom" title="Le fil d'actualité public affiche en temps réel toute l'activité publique qui se déroule sur le site. Le fil d'actualité privé affiche en temps réel uniquement l'activité publique des pages que vous aimez et l'activité privée liée à votre compte. Lorsque vous êtes connecté, vous pouvez basculer d'un fil d'actualité à l'autre."><i class="fas fa-info-circle fa-lg"></i></button></h5>
              <div class="toggle-on-off">
                <span class="toggle-on-off-public">PUBLIC</span>
                <i class="fas fa-toggle-on fa-rotate-180 fa-3x"></i>
                <span class="toggle-on-off-prive">PRIVÉ</span>
              </div>
            </div>
          </div>

          <div class="col-xs-12 col-sm-12 col-md-12 col-lg-12 home-page-footer">
            <div class="col-md-12 timelines">
              <div class="main-timeline">
                {{ drupal_view('message_activity_stream_timeline_public', 'block_1') }}
                {{ drupal_view('message_activity_stream_timeline_private', 'block_1') }}
              </div>
            </div>
          </div>

Можете ли вы объяснить мне, как получить метод с перезагрузкой страницы и без перезагрузки страницы?

1 Ответ

0 голосов
/ 27 марта 2019

Вы можете установить дополнительные переменные для отправки в шаблон, используя hook_preprocess_HOOK () , а затем использовать это значение в условной ветке.

Вам также нужно будет рассмотреть возможность кэширования, в противном случае динамический кэш страниц в Drupal может сохранить отрендеренный фрагмент страницы в первый раз, когда он понадобится, и отправить его всем последующим пользователям.

function MY_MODULE_hook_preprocess_ELEMENT(&$variables) {
  // Add a variable to send to the template.
  $variables['new_variable'] = TRUE;

  // Add the appropriate cache contexts so that the template is re-rendered when needed.
  $variables['#cache']['contexts'][] = 'session';
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...