2010-05-16 13 views
7

मेरे पास निम्न विधि है जो PHP में मेरे पेजिनेशन लिंक के लिए मार्कअप बनाता है और देता है।PHP पेजिनेशन लिंक तोड़ें

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; 
    } 
} 

मैं अभी हाल ही में (मेरे आश्चर्य करने के लिए) को पता चला कि मैं 70 पृष्ठों वहाँ अब कर रहे हैं कि 70 तल पर दिखा लिंक जिसका मतलब है पर पहुंच गया था ..

अगर किसी को यह कर सकते हैं मैं सोच रहा हूँ मुझे इसे तोड़ने में मदद करें .. मुझे यकीन नहीं है कि कितना पेजिनेशन संख्याओं को दिखाता है, अगर मैं कहता हूं कि पेज .. 30 विचार, विचार?

उत्तर

4

आप वर्तमान पृष्ठ और पिछले x (कहें 4) पृष्ठ प्रदर्शित करते हैं।

आप पृष्ठ 1 पर हैं:

1 2 3 4 5 

पृष्ठ 35:

31 32 33 34 35 36 37 38 39 

पृष्ठ 70:

66 67 68 69 70 

तुम भी एक जोड़ सकता है त्वरित एल उदाहरण के लिए « और » का उपयोग करते हुए पहले और अंतिम पृष्ठ पर स्याही।


उदाहरण:

$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; } 
} 

तुम भी Infinite History/Pagination लागू कर सकते हैं, जो uber शांत है। =)


अद्यतन: एक अधिक elegant version of this @ Codepad

+0

बहुत अच्छा अद्यतन, स्वच्छ, सरल। – Rabbott

1

आप (पेज 15 पर)

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

कहाँ [देखें अधिक] लिंक बाकी (या बस कुछ और) पृष्ठ लिंक को हासिल करेगा कर सकता है। यह उपयोगकर्ता को सभी पृष्ठों पर नेविगेट करने की अनुमति देते हुए चीजों को अनियंत्रित रखता है।

उदाहरण (क्लिक करने के बाद देखें पिछला)

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

या (बस कुछ ही अधिक दिखाई देते हैं) [देखें अधिक] 7 8 9 10 11 12 13 14 [15] 15 17 18 [देखें अधिक]

जब मैं कहता हूँ "को लाने" मैं जावास्क्रिप्ट का उपयोग/पेज

+0

क्या आपने इसे पहले देखा है? उदाहरण? – Rabbott

0

तुम भी Zend_Paginator है, जो आप के लिए चीजों के इन प्रकार के बहुत से हैंडल पर लग सकता है पुन: लोड ओ डब्ल्यू अन्य पृष्ठों के लिंक बनाने के लिए मतलब है।

संबंधित मुद्दे