1.12.7 i starsze - Paginacja (stronnicowanie) newsów w portalu
Centurion - 15-11-2007, 16:00 Temat postu: 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> |
mephy - 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 - 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 - 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 - 08-01-2008, 15:16
Witam mam problem jak to ustawiam to mi nie działa opcja "czytaj więcej" proszę o pomoc
Centurion - 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); |
zmora150 - 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 - 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
zmora150 - 08-01-2008, 19:26
Dziękuje tobie bardzo wszystko ładnie piękniej działa
mephy - 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 - 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
mephy - 10-01-2008, 18:52
dziala! serdeczne dzieki za pomoc, wreszcie moj vortal jest w pelni funkcjonalny
Nostry - 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?
zmora150 - 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.
Centurion - 06-02-2008, 10:29
zobacz u mnie na stronie to bedziesz wiedzial
|
|
|