Jquery无限滚动Drupal分页,得到相同的结果

时间:2014-01-11 08:39:10

标签: javascript jquery drupal drupal-7 infinite-scroll

我在drupal网站上手动实现了无限滚动jquery插件。我遇到了一个包含暴露过滤器的视图的问题。无限滚动只是保持附加相同的数据。

例如:如果在页面加载时我们的下一页是“page = 2”而最后一页是5,在这种情况下它只是将“page = 2”的结果附加到当前结果。

“nextSelector”(.pager-next)仅指向drupal中的下一页。因此脚本反复加载下一页(例如:第2页)。

$container.infinitescroll({
      navSelector  : \'div.item-list ul.pager\',    // selector for the paged navigation 
      nextSelector : \'div.item-list li.pager-next > a\',  // selector for the NEXT link (to page 2)
      itemSelector : \'.item\',   // selector for all items you\'ll retrieve
      bufferPx: 300,
      pixelsFromNavToBottom: \'ul.pager\',
      loading: {
          msgText: \''.t('Loading More...').'\',
          finishedMsg: \''.t('No more posts.').'\',
        },
        state: {
      isDuringAjax: false,
      isInvalidPage: false,
      isDestroyed: false,
      isDone: false, // For when it goes all the way through the archive.
      isPaused: false,
      currPage: 0
    },

2 个答案:

答案 0 :(得分:1)

Drupal没有将页面编号为wordpress(无限滚动初始使用),如果请求页面不存在(最接近猜测),其分页系统会返回结果。

添加此设置:

$container.infinitescroll({
    (...)
      maxPage : 10 // your pager max pages or see below
      state: {
        currPage: 0 
      },    

    (...)

如果你不能将最大页面设置为javascript,你可以" hack"如果页面超出界限,Drupal就不会返回任何结果:

    $perPage = 10;
    $total = count($results);
    $qs_page = isset($_GET['page']) ? $_GET['page'] : 0;
    $page = pager_default_initialize($total, $perPage, 0);
    if ($qs_page > $page) {
        //out of bounds !!!
        $perPage=0;
    }

    $offset = $perPage * $page;
    $results = array_slice($results, $offset, $perPage,TRUE);

答案 1 :(得分:0)

该问题与无限滚动插件无关。这是由Drupal生成的url的一个问题。