Przesunięty przez: Matteo 09-11-2013, 09:29 |
Paginacja (stronnicowanie) newsów w portalu |
Autor |
Wiadomość |
Centurion
Pomógł: 543 razy Posty: 1972
|
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)) . '">« wcześniejsze</a>';
if($strona == $podstron)
$pozniejsze = '';
else
$pozniejsze = '<a href="' . append_sid("portal.$phpEx?strona=" . ($strona + 1)) . '">poźniejsze »</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)) . '">« wcześniejsze</a>';
if($strona == $podstron)
$pozniejsze = '';
else
$pozniejsze = '<a href="' . append_sid("portal.$phpEx?strona=" . ($strona + 1)) . '">poźniejsze »</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: 1972
|
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: 1972
|
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
|
|
|
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: 1972
|
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&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: 1972
|
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 |
|
|
|
|
|