PHP Sayfalama bağlantıları Break up

4 Cevap php

Ben oluşturur ve PHP benim sayfa bağlantıları için biçimlendirme döndüren aşağıdaki yöntemi var.

public function getPaginationLinks($options) {
    if($options['total_pages'] > 1) {
        $markup = '<div class="pagination">';

        if($options['page'] > 1) {
            $markup .= '<a href="?page=' . ($options['page'] - 1) . ((isset($options['order_by'])) ? "&sort=" . $options['order_by'] : "") . '">< prev</a>';
        }       

        for($i = 1; $i <= $options['total_pages']; $i++) {

            if($options['page'] != $i) {
                $markup .= '<a href="?page='. $i . ((isset($options['order_by'])) ? "&sort=" . $options['order_by'] : "") . '">' . $i . '</a>';
            }
            else {
                $markup .= '<span class="current">' . $i . '</span>';
            }
        }

        if($options['page'] < $options['total_pages']) {
            $markup .= '<a href="?page=' . ($options['page'] + 1) . ((isset($options['order_by'])) ? "&sort=" . $options['order_by'] : "") . '">next ></a>';
        }

        $markup .= '</div>';

        return $markup;
    }
    else {
        return false;
    }
}

Ben sadece son zamanlarda ben altta gösteren 70 + bağlantılar şimdi var demektir 70 + sayfa varıldığını (benim için sürpriz) keşfetti ..

Birisi bana bu kadar kırılmasına yardımcı olabilir merak ediyorum .. Ben en çok Sayfalandırması kadarıyla numaraları gösteren olarak nasıl çalıştığını emin değilim eğer sayfa 30, fikirler .. diyelim im?

4 Cevap

Sadece geçerli sayfa artı önceki görüntüler ve aşağıdaki x (diyelim 4) sayfaları.

Eğer Page 1: üzerinde iseniz

1 2 3 4 5

Page 35:

31 32 33 34 35 36 37 38 39

Page 70:

66 67 68 69 70

Ayrıca, örneğin « ve » ile ilk ve son sayfaya hızlı bir bağlantı ekleyebilirsiniz.


Example:

$x = 4;

for ($i = $currentPage - $x; $i < $currentPage; $i++)
{
    if ($i >= 1) { /* show link */}
    else { /* show ellipsis and fix counter */ $i = 1; }
}

/* show current page number without link */

for ($i = $currentPage + 1; $i < $currentPage + $x; $i++)
{
    if ($i <= $totalPages) { /* show link */}
    else { /* show ellipsis and break */ break; }
}

Ayrıca uber serin olduğu, Infinite History / Pagination uygulayabilirsiniz. =)


UPDATE: A more elegant version of this @ Codepad.

Sen (sayfa 15) yapabilirdi

[View Previous] 12 13 14 [15] 15 17 18 [View More]

[Daha Fazla] bağlantı kalan (ya da daha birkaç) sayfa link alınır nerede. Kullanıcının tüm sayfalarında gezinmek için izin verirken bu derli toplu şeyleri tutar.

Örnek (Önceki Görünümü tıkladıktan sonra)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 [15] 15 17 18 [View More]

or (just show a few more) [View More] 7 8 9 10 11 12 13 14 [15] 15 17 18 [View More]

Ben "getir" derken ben sayfayı yeniden o / w diğer sayfalara bağlantılar oluşturmak için javascript kullanmak demek

Ayrıca sizin için bu tür şeyler çok işleyen, Zend_Paginator görünebilir.

"Logaritmik sayfalamayı" düşünün, burada açıklandığı gibi (PHP kodu dahil):

How to do page navigation for many, many pages? Logarithmic page navigation