2011-11-17 66 views
0

当然,有人必须有一个如何得到这个工作的想法...WordPress的jQuery如何重置页面切换时的分页?

我的博客目前设置,我有一个自定义页面,只显示给定类别中的帖子。每篇文章都有一个切换按钮。当按下切换按钮时,隐藏帖子(ENTIRE div被标题和所有发布内容隐藏)。这可以按需要工作。

该页面也设置为每页显示10篇文章。如果我有11个帖子,11号会推到页面2。

问题是,当一个帖子被切换(比如说帖子3)时,我在这个页面上总共留下了9个帖子,其中帖子11仍然留在第2页上。我想要发生的是当帖子3被切换,帖子11应该进入页面1,页面2基本消失(因为在那里没有帖子要显示)。

出于演示目的: Page 1显示帖子1,2,3,4,5,6,7,8,9,10 Page 2显示帖子11 ...等等。

如果帖子3被切换: Page 2显示帖子1,2,4,5,6,7,8,9,10,11 Page 2消失(除非有帖子12,13等)

有谁知道如何实现这个?

page.php文件:

<?php 
    $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; 
    $args = array(
     'category_name' => 'post', 
     'paged' => $paged, 
     'posts_per_page' => 10 
    ); 
    query_posts($args); 
    while (have_posts()) : the_post(); 
?> 

..........the posts are displayed............. 

    <?php endwhile; ?> 

<script type="text/javascript"> 
var pager = new Imtech.Pager(); 
$(document).ready(function() { 
pager.paragraphsPerPage = 5; // set amount elements per page 
pager.pagingContainer = $('#paginate'); // set of main container 
pager.paragraphs = $('div.z', pager.pagingContainer); // set of required containers 
pager.showPage(1); 
}); 
</script> 

toggle.js

$(document).on("click", ".toggle", function(){ 
    postID = $(this).attr('id').replace('toggle_', ''); 

    // Declare variables 
    value = '0'; 

    myajax(); 

    return false; 
}); 

function myajax(){ 
    // Send values to database 
    $.ajax({ 
     url: 'check.php', 
     //check.php receives the values sent to it and stores them in the database 
     type: 'POST', 
     data: 'postID=' + postID + '&value=' + value, 
     success: function(result) { 
      $('#post_' + postID).toggle(); 
        } 
    }); 
} 

pagination.js

var Imtech = {}; 
Imtech.Pager = function() { 
this.paragraphsPerPage = 3; 
this.currentPage = 1; 
this.pagingControlsContainer = '#pagingControls'; 
this.pagingContainerPath = '#contained'; 
this.numPages = function() { 
    var numPages = 0; 
    if (this.paragraphs != null && this.paragraphsPerPage != null) { 
     numPages = Math.ceil(this.paragraphs.length/this.paragraphsPerPage); 
    } 
    return numPages; 
}; 
this.showPage = function(page) { 
    this.currentPage = page; 
    var html = ''; 
    this.paragraphs.slice((page-1) * this.paragraphsPerPage, 
     ((page-1)*this.paragraphsPerPage) + this.paragraphsPerPage).each(function() { 
     html += '<div>' + $(this).html() + '</div>'; 
    }); 
    $(this.pagingContainerPath).html(html); 
    renderControls(this.pagingControlsContainer, this.currentPage, this.numPages()); 
} 
var renderControls = function(container, currentPage, numPages) { 
    var pagingControls = 'Page: <ul>'; 
    for (var i = 1; i <= numPages; i++) { 
     if (i != currentPage) { 
      pagingControls += '<li><a href="#" onclick="pager.showPage(' + i + '); return false;">' + i + '</a></li>'; 
     } else { 
      pagingControls += '<li>' + i + '</li>'; 
     } 
    } 
    pagingControls += '</ul>'; 
    $(container).html(pagingControls); 
} 
} 

因此,任何想法?

回答

0

我的答案是通过ajax重新加载当前页面的文章。

  • 没有与通过JavaScript和PHP产生分页没有问题
  • 您对初始加载和后续加载(当用户隐藏后)
  • 你可以使用jQuery很容易拼版工作相同的行为
+0

而这又如何实现? – Sweepster