【问题标题】:drupal7 - automatic reload views when node changeddrupal7 - 节点更改时自动重新加载视图
【发布时间】:2014-05-28 06:56:05
【问题描述】:

我在 drupal 7 中构建了一个视图块,在幻灯片中显示来自特定类型的节点。

当其中一个节点、数据或发布/未发布发生变化时,我想自动重新加载视图,而无需单击或重新加载。

我知道我可以用 ajax 做到这一点。我找到了几个例子,但总的来说我需要点击一些东西,而且我需要它没有人情味。如何自动完成?

我对 drupal 和 ajax 很陌生。
谢谢。

【问题讨论】:

    标签: jquery ajax drupal drupal-7


    【解决方案1】:

    Views Hack 模块有一个自动刷新子模块,当视图发生变化时会自动更新视图,而不刷新视图页面。

    您还可以查看Views content cache 模块或Views Auto-Refresh 模块。

    视图内容缓存模块为视图提供缓存,直到其中的内容发生更改。视图自动刷新在指定的时间间隔后刷新视图。

    希望对您有所帮助。

    【讨论】:

      【解决方案2】:

      谢谢你的回答,最后我用jQuery做到了。

      我做到了:

      在 mymodule.js 文件中:

      jQuery(document).ready(function() {
        if (window.location.href == "http://loc") {
          setInterval(check, 5000);
        }
        function check() {
          $ret = 0;
          jQuery.get("/path/to/check_slide", function( data ) {
            if(data == 1) {
              location.reload(); 
            } 
          }) 
        }
      })
      

      在drupal模块中我做了:

      在 hook_init 中:

      drupal_add_js(drupal_get_path('module', 'mymodule') . 'mymodule.js');
      

      在钩子菜单中:

      $items['/path/to/check_slide'] = array(
      'page callback' => 'mymodule_check_slide', 
      'access callback' => TRUE,
      'type' => MENU_CALLBACK, );
      

      在 mymodule_check_slide 中:

          $ret = 0;
      
          if (variable_get('flag', 0)) {
              $ret = 1;
              variable_set('flag', 0);
          }
      
          print $ret;
          die();
      }
      

      在 hook_node_presave 中:

      if ($node -> type == 'slidetype') {
          variable_set('flag', 1);
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-01-21
        • 2016-04-26
        • 1970-01-01
        • 2012-06-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多