0

PHPで配列を使用してページネーションをいじっています。ページのコンテンツを小さなチャンクに分割するために使用する投稿の配列があります。それは機能し、私が望むようにコンテンツを返します。

<?php
// let's paginate data from an array...
$posts = array(
// array of posts

"blog/posts/06-19-tues.php",
"blog/posts/06-16-sat.php",

"blog/posts/05-26-sat.php",
"blog/posts/05-23-wed.php",
"blog/posts/05-09-wed.php"

);

// how many records should be displayed on a page?
$records_per_page = 3;

// include the pagination class
require 'zebra/Zebra_Pagination.php';

// instantiate the pagination object
$pagination = new Zebra_Pagination();

// the number of total records is the number of records in the array
$pagination->records(count($posts));

// records per page
$pagination->records_per_page($records_per_page);

// here's the magick: we need to display *only* the records for the current page
$posts = array_slice(
    $posts,
    (($pagination->get_page() - 1) * $records_per_page),
    $records_per_page
);

?>

<?php foreach ($posts as $index => $post):?>
<?php include $post; ?>
<?php endforeach?>

<?php

// render the pagination links
$pagination->render();

?>

私の質問は、サイトの他の場所から個々の投稿にリンクする方法です。それらは最終的にページからページへ移動するため、静的ファイルへの直接リンクは機能しません。最初は、各投稿に一意の ID を与え、それを使用して投稿にリンクしていましたが、リンクが動的に変更されるため、現在は機能しません。

私は array_search() を見てきましたが、それは有望に見えますが、ハイパーリンクを生成するのに十分な使用法であることを理解していません。

この質問をうまく表現できたかどうかはわかりません。意味が分からない場合は申し訳ありません。

4

1 に答える 1

0

私があなたを正しく理解していれば、次のようなことがうまくいくと思います:

if (isset($_REQUEST['page']) {
  $found = array_search($_REQUEST['page'], $posts);
  if ($found) {
    $pagination->set_page(floor($found/$records_per_page)+1);
  }
}

次に、次のようなリンクを使用できます

$link = '<a href="yourpage.php?page=' . urlencode($posts[$i]) . '">whatever</a>';
于 2013-02-11T19:33:37.187 に答える