phpBB2 by Przemo
Support forów phpBB2 modified by Przemo

FAQFAQ - PIERWSZA POMOC!!  regulaminREGULAMIN  SzukajSZUKAJ  UżytkownicyUżytkownicy  GrupyGrupy  StatystykiStatystyki
RejestracjaRejestracja  ZalogujZaloguj  DownloadDownload  katalog Forów DyskusyjnychKatalog Forów   FAQ Video tutoriale

Poprzedni temat «» Następny temat
Przesunięty przez: Matteo
09-11-2013, 09:29
Paginacja (stronnicowanie) newsów w portalu
Autor Wiadomość
Centurion



Pomógł: 543 razy
Posty: 1974
Wysłany: 15-11-2007, 16:00   Paginacja (stronnicowanie) newsów w portalu

Prosty modzik który dodaje dzielenie newsów na portalu na strony - przydatne zwłaszcza na forach które używają portalu jako strony głównej i często dodawane są nowe newsy

Wymaga ustawienia w PA->Ogólne->Ustawienia portalu
Kod:
Ilość newsów w portalu
na więcej niż 0

Demo: http://www.sadistic.pl/portal.htm (na samym dole nad stopką)

Kod:
#--[ OPEN ] --
portal.php

#--[ FIND ] --
init_userprefs($userdata);

#--[ AFTER ADD ] --
$paginacja = '';

#--[ FIND ] --
    if ( !isset($HTTP_GET_VARS['article']) )
    {

#--[ AFTER ADD ] --
    $sql = "SELECT t.topic_id
    FROM (" . TOPICS_TABLE . " AS t, " . USERS_TABLE . " AS u, " . POSTS_TEXT_TABLE . " AS pt, " . POSTS_TABLE . " AS p)
        WHERE t.forum_id IN ($portal_config_witch_news_forum)
            AND t.topic_time <= " . CR_TIME . "
            AND t.topic_poster = u.user_id
            AND t.topic_first_post_id = pt.post_id
            AND t.topic_first_post_id = p.post_id
            AND t.topic_status <> 2
            AND p.post_approve = 1

        ORDER BY t.topic_time DESC";

    // query the database
    $result = $db->sql_query($sql);

$allstron = $db->sql_numrows($result);

$podstron = ceil($allstron / $portal_config['number_of_news']);

if(isset($HTTP_GET_VARS['strona']) && intval($HTTP_GET_VARS['strona']))
{
$strona = $HTTP_GET_VARS['strona'];
if($strona > $podstron)
$strona = $podstron;
else if($strona == 0)
$strona = 1;
}
else
$strona = 1;


$paginacja = '';
if($podstron > 1)
{
if($strona == 1)
$wczesniejsze = '';
else
$wczesniejsze = '<a href="' . append_sid("portal.$phpEx?strona=" . ($strona - 1)) . '">&#171; wcześniejsze</a>';

if($strona == $podstron)
$pozniejsze = '';
else
$pozniejsze = '<a href="' . append_sid("portal.$phpEx?strona=" . ($strona + 1)) . '">poźniejsze &#187;</a>';

$pasek = '';
if($podstron > 15)
{
if($strona <= 6)
{

for($str=1; $str <= 5; $str++)
{
if($str == 1)
{
if($str == $strona)
$pasek .= '<b>1</b>';
else
$pasek .= '<a href="' . append_sid("portal.$phpEx?strona=1") . '">1</a>';
}
else
{
if($str == $strona)
$pasek .= ' <b>' . $str .'</b>';
else
$pasek .= ' <a href="' . append_sid("portal.$phpEx?strona=" . $str) . '">' . $str .'</a>';
}
}
if($strona == 5)
$pasek .= ' <a href="' . append_sid("portal.$phpEx?strona=6") . '">6</a>';

if($strona == 6)
{
$pasek .= ' <b>6</b> <a href="' . append_sid("portal.$phpEx?strona=7") . '">7</a>';
}
$pasek .= ' ... <a href="' . append_sid("portal.$phpEx?strona=" . ($podstron - 4)) . '">' . ($podstron - 4) . '</a> <a href="' . append_sid("portal.$phpEx?strona=" . ($podstron - 3)) . '">' . ($podstron - 3) . '</a> <a href="' . append_sid("portal.$phpEx?strona=" . ($podstron - 2)) . '">' . ($podstron - 2) . '</a> <a href="' . append_sid("portal.$phpEx?strona=" . ($podstron - 1)) . '">' . ($podstron - 1) . '</a> <a href="' . append_sid("portal.$phpEx?strona=" . $podstron) . '">' . $podstron . '</a>';

}
else if($podstron - $strona <= 5)
{
$pasek .= '<a href="' . append_sid("portal.$phpEx?strona=1") . '">1</a> <a href="' . append_sid("portal.$phpEx?strona=2") . '">2</a> <a href="' . append_sid("portal.$phpEx?strona=3") . '">3</a> <a href="' . append_sid("portal.$phpEx?strona=4") . '">4</a> <a href="' . append_sid("portal.$phpEx?strona=5") . '">5</a> ... ';

if($strona == $podstron - 5)
{
$pasek .= ' <a href="' . append_sid("portal.$phpEx?strona=" . ($podstron - 6)) . '">' . ($podstron - 6) . '</a> <b>' . ($podstron - 5) . '</b>';
}

if($strona == $podstron - 4)
{
$pasek .= ' <a href="' . append_sid("portal.$phpEx?strona=" . ($podstron - 5)) . '">' . ($podstron - 5) . '</a>';
}


$newstron = $podstron - 4;
for($str=$newstron; $str <= $podstron; $str++)
{
if($str == $strona)
$pasek .= ' <b>' . $str .'</b>';
else
$pasek .= ' <a href="' . append_sid("portal.$phpEx?strona=" . $str) . '">' . $str .'</a>';
}

}
else
{
$pasek .= ' <a href="' . append_sid("portal.$phpEx?strona=1") . '">1</a> <a href="' . append_sid("portal.$phpEx?strona=2") . '">2</a> <a href="' . append_sid("portal.$phpEx?strona=3") . '">3</a> <a href="' . append_sid("portal.$phpEx?strona=4") . '">4</a> <a href="' . append_sid("portal.$phpEx?strona=5") . '">5</a> ';
$pasek .= ' ... <a href="' . append_sid("portal.$phpEx?strona=" . ($strona - 1)) . '">' . ($strona - 1) . '</a> <b>' . ($strona) . '</b> <a href="' . append_sid("portal.$phpEx?strona=" . ($strona + 1)) . '">' . ($strona + 1) . '</a> ... ';
$pasek .= ' <a href="' . append_sid("portal.$phpEx?strona=" . ($podstron - 4)) . '">' . ($podstron - 4) . '</a>  <a href="' . append_sid("portal.$phpEx?strona=" . ($podstron - 3)) . '">' . ($podstron - 3) . '</a> <a href="' . append_sid("portal.$phpEx?strona=" . ($podstron - 2)) . '">' . ($podstron - 2) . '</a> <a href="' . append_sid("portal.$phpEx?strona=" . ($podstron - 1)) . '">' . ($podstron - 1) . '</a> <a href="' . append_sid("portal.$phpEx?strona=" . $podstron) . '">' . $podstron . '</a>';
}
}
else
{
for($str=1; $str <= $podstron; $str++)
{
if($str == 1)
{
if($str == $strona)
$pasek .= '<b>1</b>';
else
$pasek .= '<a href="' . append_sid("portal.$phpEx?strona=1") . '">1</a>';
}
else
{
if($str == $strona)
$pasek .= ' <b>' . $str .'</b>';
else
$pasek .= ' <a href="' . append_sid("portal.$phpEx?strona=" . $str) . '">' . $str .'</a>';
}
}
}
$paginacja = '<table width="100%" cellpadding="0" cellspacing="0" border="0"><tr>
<td align="left" width="20%"><object><div class="pagination">' . $wczesniejsze . '</div></object></td>
<td align="center" width="60%"><object><div class="pagination">' . $pasek . '</div></object></td>
<td align="right" width="20%"><object><div class="pagination">' . $pozniejsze . '</div></object></td>
</tr></table>';
}

#-- [ FIND ] --
        $fetchposts = phpbb_fetch_posts($portal_config_witch_news_forum, $portal_config
['number_of_news'], $portal_config['news_length']);

#-- [ REPLACE WITH ]--
        $fetchposts = phpbb_fetch_posts($portal_config_witch_news_forum, $portal_config
['number_of_news'], $portal_config['news_length'], $strona);

#-- [ FIND ] --
    'L_RECENT_TOPICS' => $lang['Recent_topics'],

#-- [ AFTER, ADD ] --
    'PAGINACJA' => $paginacja,

#-- [ OPEN ] --
fetchposts.php

#-- [ FIND ] --
function phpbb_fetch_posts($forum_sql, $number_of_posts, $text_length)

#-- [ REPLACE WITH  ] --
function phpbb_fetch_posts($forum_sql, $number_of_posts, $text_length, $strona)

#-- [ FIND ] --
if ( $number_of_posts != 0 )

#-- [ BEFORE ADD ]--
$start = ($strona-1) * $number_of_posts;

#-- [ FIND ] --
 LIMIT 0,' . $number_of_posts;

#-- [ REPLACE WITH  ] --
LIMIT ' . $start . ', ' . $number_of_posts;

#-- [ OPEN ] --
templates/*/portal_body.tpl

#-- [ FIND ] --
<!-- END fetch_post_row -->

#-- [ AFTER ADD ]--
<center>{PAGINACJA}</center>
_________________
Poza forum pomagam tylko odpłatnie
• przenoszenie/łączenie/naprawianie baz danych
• instalacja/pisanie modów, aktualizacja for z zachowaniem modów
• programowanie php/mysql
Ostatnio zmieniony przez Boltex 20-08-2010, 21:02, w całości zmieniany 2 razy  
 
     
Gadatliwa Kasia 

   
mephy

Posty: 15
Wysłany: 21-11-2007, 09:52   

mam pytanie, zainstalowalem ta modyfikacje i wszystko gra, z jednym wyjatkiem, slowo wcześniejsze i późniejsze jest wyswietlane z bledem, tzn. nie wyswietla polskich liter, gdzie moge to poprawic, albo chociaz zamienic na wyswietlany text bez polskich znakow ??
 
     
kAzek29

Pomógł: 6 razy
Posty: 41
Wysłany: 23-11-2007, 10:46   

mephy, do edycji pliku portal.php użyj edytora który pozwala na zapis w standardzie kodowania ISO-8859-2 popraw Polskie znaki (wpisz je jeszcze raz) w tym fragmencie kodu i zapisz plik

Kod:
else
$wczesniejsze = '<a href="' . append_sid("portal.$phpEx?strona=" . ($strona - 1)) . '">&laquo; wcześniejsze</a>';

if($strona == $podstron)
$pozniejsze = '';
else
$pozniejsze = '<a href="' . append_sid("portal.$phpEx?strona=" . ($strona + 1)) . '">poźniejsze &raquo;</a>';
 
     
mephy

Posty: 15
Wysłany: 24-11-2007, 15:46   

zainstalowalem modyfikacje PAGINATION [STRONNICOWANIE] stad :

wszystko gra i jest ok

zamontowalem to w newsach i gra idealnie.

jednoczesnie zalozylem dzial forum, gdzie dodaje tematy z linkami ktore wyswietlaja sie w dziale Download, uzywam tego za pomoca wywolania : .../portal.php?s=20

jednakze, tutaj rowniez dochodzi do stronicowania. Wszystko byloby w porzadku, gdyby nie to...ze gdy klikam w numer strony, albo "wczesniejsze", "pozniejsze" to zawsze przechodza do tematow z NEWSow a nie do kolejnych stron dzialu download

ciezki przypadek, wiem...moze ktos mi pomoze ???? z gory piekne dzieki
 
     
zmora150

Pomógł: 1 raz
Posty: 58
Wysłany: 08-01-2008, 15:16   

Witam mam problem jak to ustawiam to mi nie działa opcja "czytaj więcej" proszę o pomoc
 
     
Centurion



Pomógł: 543 razy
Posty: 1974
Wysłany: 08-01-2008, 15:49   

Dzięki za zgłoszenie błędu, oto rozwiązanie (będzie wkrótce uwzględnione w tym kodzie w pierwszym poście):

w portal.php

znajdz
Kod:
'U_READ_FULL' => append_sid('portal.'.$phpEx.'?article=' . $i . ( ($show_forum) ? '&s=' . $show_forum : '')),


zamień na
Kod:
'U_READ_FULL' => append_sid('portal.'.$phpEx.'?article=' . (($strona * $portal_config['number_of_news']) + $i) . ( ($show_forum) ? '&s=' . $show_forum : '')),


znajdz
Kod:
$fetchposts = phpbb_fetch_posts($portal_config_witch_news_forum, $portal_config['number_of_news'], 0);

$i = intval($HTTP_GET_VARS['article']);


zamien na
Kod:
$ile = intval($HTTP_GET_VARS['article']);
$strona = floor($ile/$portal_config['number_of_news']); // poprawione
$i = $ile - ($portal_config['number_of_news'] * $strona);

$fetchposts = phpbb_fetch_posts($portal_config_witch_news_forum, $portal_config['number_of_news'], 0, $strona);
_________________
Poza forum pomagam tylko odpłatnie
• przenoszenie/łączenie/naprawianie baz danych
• instalacja/pisanie modów, aktualizacja for z zachowaniem modów
• programowanie php/mysql
Ostatnio zmieniony przez Centurion 08-01-2008, 17:35, w całości zmieniany 1 raz  
 
     
zmora150

Pomógł: 1 raz
Posty: 58
Wysłany: 08-01-2008, 16:30   

Dzięki wielkie to już mi działa teraz jest drugi problem zamiast późniejszy jest po?niejszy itp. :( a do tego dziala mi jedynie "czytaj więcej" na pierwszej stronie na następnych już nie :(

Edit. teraz dokładniej sprawdziłem działa jedynie pierwszy news na każdej stronie
 
     
Centurion



Pomógł: 543 razy
Posty: 1974
Wysłany: 08-01-2008, 17:34   

ech moj blad przepraszam

powinno byc
Kod:
$strona = floor($ile/$portal_config['number_of_news']);


zamiast
Kod:
$strona = ceil($ile/$portal_config['number_of_news']);


a co kodowania to trzba sciagnac jakis edytor typu notepad++ i zapisac strone jako iso-8859-2
_________________
Poza forum pomagam tylko odpłatnie
• przenoszenie/łączenie/naprawianie baz danych
• instalacja/pisanie modów, aktualizacja for z zachowaniem modów
• programowanie php/mysql
 
     
zmora150

Pomógł: 1 raz
Posty: 58
Wysłany: 08-01-2008, 19:26   

Dziękuje tobie bardzo wszystko ładnie piękniej działa ;]
 
     
mephy

Posty: 15
Wysłany: 09-01-2008, 19:42   

Centurion napisał/a:


czy moglbys pomoc mi w tym problemie:

zainstalowalem modyfikacje PAGINATION [STRONNICOWANIE] stad :

zamontowalem to w newsach i gra idealnie.

jednoczesnie zalozylem dzial forum, gdzie dodaje tematy z linkami ktore wyswietlaja sie w dziale Download, uzywam tego za pomoca wywolania : .../portal.php?s=20

jednakze, tutaj rowniez dochodzi do stronicowania. Wszystko byloby w porzadku, gdyby nie to...ze gdy klikam w numer strony, albo "wczesniejsze", "pozniejsze" to zawsze przechodza do tematow z NEWSow a nie do kolejnych stron dzialu download

ciezki przypadek, wiem...moze ktos mi pomoze ???? z gory piekne dzieki
 
     
Centurion



Pomógł: 543 razy
Posty: 1974
Wysłany: 09-01-2008, 20:41   

po
Kod:
$paginacja = '<table width="100%" cellpadding="0" cellspacing="0" border="0"><tr>
<td align="left" width="20%"><object><div class="pagination">' . $wczesniejsze . '</div></object></td>
<td align="center" width="60%"><object><div class="pagination">' . $pasek . '</div></object></td>
<td align="right" width="20%"><object><div class="pagination">' . $pozniejsze . '</div></object></td>
</tr></table>';

dodaj
Kod:
if ( isset($HTTP_GET_VARS['s']) && intval($HTTP_GET_VARS['s']) )
{
$s=$HTTP_GET_VARS['s'];
$paginacja = str_replace("strona", "s=$s&amp;strona", $paginacja);
}


zobacz czy działa
_________________
Poza forum pomagam tylko odpłatnie
• przenoszenie/łączenie/naprawianie baz danych
• instalacja/pisanie modów, aktualizacja for z zachowaniem modów
• programowanie php/mysql
 
     
mephy

Posty: 15
Wysłany: 10-01-2008, 18:52   

dziala! serdeczne dzieki za pomoc, wreszcie moj vortal jest w pelni funkcjonalny :)
 
     
Nostry


Pomógł: 4 razy
Posty: 94
Wysłany: 13-01-2008, 14:29   

Zainstalowałem sobie zgodnie z instrukcją (sprawdzałem 2x), ale niestety 'coś' nie praży w portal.php (po zamianie na oryginalny działa). Wyskakuje takie oto cuś: http://wesolosci.pl/portal.php
Dodam, że mam tam najnowszą paczkę, może mieć to jakiś wpływ?
_________________
ópa
 
     
zmora150

Pomógł: 1 raz
Posty: 58
Wysłany: 06-02-2008, 06:57   

Mam mały (chyba) problem czy ten moduł jest ustawiony by jakoś skracał te liczby ?? bo już mi pokazuje 10 stron do wyboru i się trochę boje ze jak będzie 20 to to się nie skróci

[code]1 2 3 4 5 6 7 8 9 10 poźniejsze >>/code]


Z góry dziękuje.
 
     
Gadatliwa Kasia 

   
Centurion



Pomógł: 543 razy
Posty: 1974
Wysłany: 06-02-2008, 10:29   

zobacz u mnie na stronie to bedziesz wiedzial ;]
_________________
Poza forum pomagam tylko odpłatnie
• przenoszenie/łączenie/naprawianie baz danych
• instalacja/pisanie modów, aktualizacja for z zachowaniem modów
• programowanie php/mysql
 
     
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Nie możesz ściągać załączników na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Kopiowanie wszelkich treści zawartych na forum, modyfikacji oraz instrukcji bez zgody administracji i autorów tematów/postów zabronione!

Powered by phpBB modified by Przemo © 2003 phpBB
Strona wygenerowana w 0,04 sekundy. Zapytań do SQL: 13
Polecane serwisy



Najlepsze oprogramowanie do prowadzenia sklepu internetowegoNajlepszy program do sklepu firmowany przez Przem'a



Koszulki informatyczne



phpbb

serwis laptopów

Design Cart

darujsobie.pl - Sklep z gadżetami

• Zamów reklamę