如何创建一个更改页面内容的开关?

问题描述 投票:0回答:1

我有一个drupal网站,我使用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>

你能解释一下如何通过重新加载页面而不重新加载页面来获取方法吗?

html drupal switch-statement twig drupal-8
1个回答
0
投票

您可以使用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';
}
© www.soinside.com 2019 - 2024. All rights reserved.