我在Drupal 8上有一个站点,并使用以下代码更新了块视图:
(function ($, Drupal) {
'use strict';
setInterval(function() {
$('.region-navigation-logo .view-display-id-block_3').trigger('RefreshView');
}, 10000);
})(jQuery, Drupal);
此代码将更新网站徽标。问题是,如果我向下滚动页面,它会每10秒自动上升一次。
您可以使用:p在我的网站上进行测试
https://www.s1biose.com/fr/user/login
标识符:演示
密码:演示
然后单击该站点的徽标,向下滚动主页并等待10秒钟。您会看到页面每10秒上升一些像素。
更新
以下代码可以工作,但是它适用于网站的所有视图。
我只想将其应用于2个视图:
message_activity_stream_timeline_public
和
message_activity_stream_timeline_private
如何执行此操作?
/**
* Implements hook_ajax_render_alter().
*/
function message_activity_stream_ajax_render_alter(array &$data) {
foreach ($data as $key => $command) {
if ($command['command'] === 'viewsScrollTop') {
unset($data[$key]);
break;
}
}
}
答案 0 :(得分:0)
您可以获取以下代码的帮助,以仅针对您的视图运行代码
Drupal.behaviors.blockRefresh = {
attach: function (context, settings) {
jQuery.each(Drupal.views.instances, function (i, view) {
var selector = '.js-view-dom-id-' + view.settings.view_dom_id;
if (view.settings.view_name == "message_activity_stream_timeline_public" || view.settings.view_name == "message_activity_stream_timeline_private
" ) {
setInterval(function() {
$('.region-navigation-logo .view-display-id-block_3').trigger('RefreshView'); }, 10000);
}
}
});
}
}
我没有测试它,但是它是一个示例,可以帮助您如何仅针对视图名称限制代码。