New Posts - jak wyświetlać tylko tematy?
|
Torpex |
Dodany dnia 17.08.2006 17:56:13
|
Przedszkolak
Postów: 5
Data rejestracji: 01.06.2006 01:19
|
Bardzo, BARDZO się ucieszyłem kiedy w wersji 6 pojawił się infusion do wyświetlania nowych postów na forum. Chciałbym go jeszcze zmodyfikować tak, żeby strona...
.../infusions/forum_threads_list_panel/new_posts.php
...pokazywała listę tematów z nowymi postami (wzorem nowych postów na phpBB ), a nie wszystkie nowe posty. W php + sql jestem raczej zielony, ale umiem zrobić jeśli ktoś mi podyktuje. Z góry dzięki.
Edytowane przez Torpex dnia 17.08.2006 17:56:59
|
|
|
|
Wścibski Gość |
Dodany dnia 23.12.2024 00:06:21
|
Pan Kontekstualny
Postów: n^x
Data rejestracji: Zawsze
|
|
IP: localhost |
|
|
Lala |
Dodany dnia 17.09.2006 11:18:00
|
Przedszkolak
Postów: 27
Data rejestracji: 19.07.2006 11:38
|
Również byłbym wdzięczny jeśli ktoś pomógłby przerobić plik forum_threads_list_panel/new_posts.php żeby się pojawiały same tematy (bez ich powtarzania chociaż były w nim 2 nowe posty) |
|
|
|
slawekneo |
Dodany dnia 18.09.2006 04:27:04
|
Bywalec
Postów: 915 Pomógł: 41
Data rejestracji: 12.03.2006 07:28
|
tak wiec przysiedzialem przy tym troche :D
oto jak wyglada
a oto i kod do wstawienia w plik new_post.php
<?php
include "../../maincore.php";
include BASEDIR."subheader.php";
include BASEDIR."side_left.php";
if (!iMEMBER) fallback("../../index.php");
if (!isset($lastvisited) || !isNum($lastvisited)) $lastvisited = time();
opentable($locale['028']);
$tematow=0;
$result = dbquery(
"SELECT tp.post_datestamp, tf.forum_id FROM ".$db_prefix."posts tp
INNER JOIN ".$db_prefix."forums tf USING(forum_id)
WHERE ".groupaccess('forum_access')." AND tp.post_datestamp>'$lastvisited'"
);
$rows = dbrows($result);
if ($rows != 0) {
if (!isset($rowstart) || !isNum($rowstart)) $rowstart = 0;
[b]$result2 = dbquery(
"SELECT
tf.forum_id, tf.forum_cat, tf.forum_name,
tt.thread_id, tt.thread_lastuser, thread_lastpost, thread_subject,
tp.post_id, tp.post_datestamp, tu.user_id,user_name,
MAX(tp.post_id) as ostatni_post,
COUNT(post_datestamp) as nowych_postow
FROM ".$db_prefix."forums tf
INNER JOIN ".$db_prefix."threads tt USING(forum_id)
INNER JOIN ".$db_prefix."posts tp USING(thread_id)
INNER JOIN ".$db_prefix."users tu ON tt.thread_lastuser=tu.user_id
WHERE ".groupaccess('forum_access')." AND thread_lastpost>'$lastvisited' AND post_datestamp>'$lastvisited'
GROUP BY thread_lastpost
ORDER BY thread_lastpost DESC
LIMIT $rowstart,20"
);[/b]
echo "<table cellspacing='1' cellpadding='0' width='100%' border='0' class='tbl-border'>
<tr>
<td class='tbl2'><span class='small'><b>".$locale['030']."</b></span></td>
<td class='tbl2'><span class='small'> <b>".$locale['035']."</b></span></td>
<td align='center' class='tbl2' width='1%' style='white-space:nowrap'><span class='small'><b>Nowych</b></span></td>
<td align='center' class='tbl2' width='1%' style='white-space:nowrap'><span class='small'><b>Ostatni post</b></span></td>
<td align='center' class='tbl2' width='1%' style='white-space:nowrap'><span class='small'><b>Data</b></span></td></tr>\n";
while ($data2 = dbarray($result2)) {
echo "<tr>
<td width='2%' class='tbl1' style='white-space:nowrap'><a href='".BASEDIR."forum/viewforum.php?forum_id=".$data2['forum_id']."&forum_cat=".$data2['forum_cat']."'><span class='small'>".trimlink($data2['forum_name'], 18)."</span></a></td>
<td width='2%' class='tbl1' style='white-space:nowrap'> <a href='".BASEDIR."forum/viewthread.php?forum_id=".$data2['forum_id']."&thread_id=".$data2['thread_id']."&pid=".$data2['ostatni_post']."#post_".$data2['ostatni_post']."'><span class='small'>".trimlink($data2['thread_subject'],22)."</span></a></td>
<td align='center' width='2%' class='tbl1' style='white-space:nowrap'>".$data2['nowych_postow']."</td>
<td align='center' width='2%' class='tbl1' style='white-space:nowrap'><a href='".BASEDIR."profile.php?lookup=".$data2['user_id']."'><span class='small'>".$data2['user_name']."</span></a></td>
<td align='center' width='2%' class='tbl1' style='white-space:nowrap'><span class='small'>".showdate("%d.%m-%H:%M",$data2['thread_lastpost'])."</span></td>
</tr>\n";
$tematow++;
}
echo "<tr>\n<td align='center' colspan='5' class='tbl1'><br><span class='small'>Na forum jest <b>".$rows."</b> nowych postów w <b>".$tematow."</b> tematach od Twojej ostatniej wizyty.</span></td>\n</tr>\n</table>\n";
} else {
echo "<center><br>".sprintf($locale['039'], $rows)."<br><br></center>\n";
}
closetable();
if ($tematow > 20) echo "<div align='center' style='margin-top:5px;'>\n".makePageNav($rowstart,20,$tematow,3)."\n</div>\n";
include BASEDIR."side_right.php";
include BASEDIR."footer.php";
?>
Fajne nie :D
Pozdro!!
Edytowane przez slawekneo dnia 20.09.2006 10:21:16
|
|
|
|
Lala |
Dodany dnia 18.09.2006 09:04:16
|
Przedszkolak
Postów: 27
Data rejestracji: 19.07.2006 11:38
|
Nom dobre i wszystko było by ok, tylko że to z tego co zauważyłem wyświetla jednego usera posty (np. moje albo twoje) od ostatniej wizyty. Chyba gdzieś jest mały błądzik |
|
|
|
Pieka |
Dodany dnia 18.09.2006 09:13:03
|
Postów: 19885 Pomógł: 767
v7.02.03 Data rejestracji: 23.02.2005 18:12
|
Lala napisał/a:
Nom dobre i wszystko było by ok, tylko że to z tego co zauważyłem wyświetla jednego usera posty (np. moje albo twoje) od ostatniej wizyty. Chyba gdzieś jest mały błądzik
Jak robil screena, to mial zrobic z Twoimi ostatnimi postami?
Jestem jaki jestem
|
|
|
|
Lala |
Dodany dnia 18.09.2006 09:19:16
|
Przedszkolak
Postów: 27
Data rejestracji: 19.07.2006 11:38
|
Pieka ja 5 lat nie mam wiem że to screan i sprawdzałem u siebie, na moim koncie widzę tylko swoje ostatnie posty i podejrzewam że każdy user widzi wyłącznie swoje, które napisał prawdopodobnie od ostatniego zalogowania, albo może trochę wcześniej |
|
|
|
Pieka |
Dodany dnia 18.09.2006 09:47:33
|
Postów: 19885 Pomógł: 767
v7.02.03 Data rejestracji: 23.02.2005 18:12
|
Lala napisał/a:
Pieka ja 5 lat nie mam wiem że to screan i sprawdzałem u siebie, na moim koncie widzę tylko swoje ostatnie posty i podejrzewam że każdy user widzi wyłącznie swoje, które napisał prawdopodobnie od ostatniego zalogowania, albo może trochę wcześniej
Moze i wiesz, ale z Twojej wypowiedzi (drugiej) wnioskuje, ze jestes przewrazliwiony na tym punkcie oraz to, ze nie masz racji
Zalaczam swoj screen....
Jestem jaki jestem
|
|
|
|
slawekneo |
Dodany dnia 18.09.2006 09:57:59
|
Bywalec
Postów: 915 Pomógł: 41
Data rejestracji: 12.03.2006 07:28
|
hee @Pieka mnie dzielnie broni tzn moich modow
a tak poza to pokazuje autora tematu bo niemialem co dac jesli jest pare postow w jednym temacie to i kazdy post ma innego autora i sie robilo wielkie nico zmienie to pozniej na to aby autor ostatniego posta (w danym temacie) byl wyswietlany albo poprostu do rubryki AUTOR dopiesze "TEMATU"
Pozdro!!
Edytowane przez slawekneo dnia 18.09.2006 10:00:35
|
|
|
|
Lala |
Dodany dnia 18.09.2006 10:16:02
|
Przedszkolak
Postów: 27
Data rejestracji: 19.07.2006 11:38
|
Właśnie dopiero to zauważyłem, za co przepraszam, moja nieuwaga x]
Sam próbowałem to zmienić na autora ostatniego postu ale coś kiepsko mi to wychodzi :/ |
|
|
|
slawekneo |
Dodany dnia 18.09.2006 14:43:33
|
Bywalec
Postów: 915 Pomógł: 41
Data rejestracji: 12.03.2006 07:28
|
teraz wszystko jest poprawione na cacy w moim pierwszym poscie
Pozdro!! |
|
|
|
Lala |
Dodany dnia 18.09.2006 16:05:49
|
Przedszkolak
Postów: 27
Data rejestracji: 19.07.2006 11:38
|
Nom teraz działa. Tylko przy braku postów rozwala trochę stronę. Z tego co widzę ostatnie echo "</td>\n"; niepotrzebne i wcześniej w linijce
<td align='center' class='tbl2' width='120'><b>Data</b></td>\n"; zapomniałeś dodać </tr> :D
I jeszcze z tego co zauważyłem to chyba jest drobna pomyłka w linijce:
<td class='tbl1'><a href='".BASEDIR."forum/viewthread.php?forum_id=".$data2['forum_id']."&thread_id=".$data2['thread_id']."&pid=".$data2['post_id']."#post_".$data['post_id']."'>".trimlink($data2['post_subject'],20)."</a></td>
bo wyświetla troche błędny adres który otwiera pierwszy post w temacie zamiast otwierać ostatni ;)
No i jeszcze jeden szczegół żeby tak wszystko było dopięte na ostatni guzik. Wyświetla się numer drugiej strony gdy jest już ponad 20 postów, a powinno być dopiero gdy będzie 20 tematów x]
Edytowane przez Lala dnia 18.09.2006 16:47:15
|
|
|
|
slawekneo |
Dodany dnia 18.09.2006 18:53:03
|
Bywalec
Postów: 915 Pomógł: 41
Data rejestracji: 12.03.2006 07:28
|
ehh ten to normalnie zawsze musi cos znalesc hee (poprawione wszystkie wypisane bledy; kod zaktualizowany)
Pozdro!!
Ps.no teraz to juz napewno niema nigdzie baboli
Edytowane przez slawekneo dnia 18.09.2006 18:55:18
|
|
|
|
Lala |
Dodany dnia 18.09.2006 19:25:36
|
Przedszkolak
Postów: 27
Data rejestracji: 19.07.2006 11:38
|
Oj Sławuś żebyś wiedział ile teraz baboli się narobiło :D
To:
<a href='".BASEDIR."profile.php?lookup=".$data2['post_author']."'>".$data2['user_name']."</a>
zamień na to:
<a href='".BASEDIR."profile.php?lookup=".$data2['user_id']."'>".$data2['user_name']."</a>
No i jeszcze $data2['post_id'] wskazuje na numer tematu pierwszego a powinien na ostatni, ale tą poprawkę chyba lepiej żebyś Ty wykonał :D |
|
|
|
slawekneo |
Dodany dnia 20.09.2006 05:46:46
|
Bywalec
Postów: 915 Pomógł: 41
Data rejestracji: 12.03.2006 07:28
|
- kod poprawiony zaktualizowany (zalecene zaktualizowac caly kod)
- screen zaktualizowany
- zapytania maxymalnie zoptymalizowane do dwuch
- baboli napotkanych: 0
i to "chyba" wszystko
Pozdro!! |
|
|
|
Lala |
Dodany dnia 20.09.2006 12:01:07
|
Przedszkolak
Postów: 27
Data rejestracji: 19.07.2006 11:38
|
To może jeszcze prześle swój screen bo wydaje mi się ciągle że nie wszystko gra.
Chodzi mianowicie o to że gdy jest więcej niż 20 tematów (bo w aktualnym screenie powinno być z 50 a nie 20) to ich więcej nie pokazuje, również linku do następnej strony postów nie pokazuje
Lala dodał/a następującą grafikę:
|
|
|
|
PtRM |
Dodany dnia 13.07.2009 16:36:00
|
Przedszkolak
Postów: 11 Pomógł: 4
Data rejestracji: 24.06.2009 09:20
|
Po ponad trzech latach odkopuję temat, ponieważ wykonana przez sławkaneo modyfikacja nie działała prawidłowo z Fusion 7, a innej nie znalazłem, więc ją przerobiłem :
<?php
/*-------------------------------------------------------+
| PHP-Fusion Content Management System
| Copyright (C) 2002 - 2008 Nick Jones
| http://www.php-fusion.co.uk/
+--------------------------------------------------------+
| Filename: new_posts.php
| Author: Nick Jones (Digitanium)
+--------------------------------------------------------+
| This program is released as free software under the
| Affero GPL license. You can redistribute it and/or
| modify it under the terms of this license which you
| can read by viewing the included agpl.txt or online
| at http://www.gnu.org/licenses/agpl.html. Removal of this
| copyright header is strictly prohibited without
| written permission from the original author(s).
+--------------------------------------------------------*/
require_once "../../maincore.php";
require_once THEMES."templates/header.php";
if (!iMEMBER) { redirect("../../index.php"); }
if (!isset($lastvisited) || !isnum($lastvisited)) $lastvisited = time();
add_to_title($locale['global_200'].$locale['global_043']);
if (!iMEMBER) fallback("../../index.php");
if (!isset($lastvisited) || !isNum($lastvisited)) $lastvisited = time();
opentable ($locale['global_043']);
$tematow=0;
$result = dbquery(
"SELECT tp.post_datestamp, tf.forum_id FROM ".$db_prefix."posts tp
INNER JOIN ".$db_prefix."forums tf USING(forum_id)
WHERE ".groupaccess('forum_access')." AND tp.post_datestamp>'$lastvisited'"
);
$rows = dbrows($result);
if ($rows != 0) {
if (!isset($rowstart) || !isNum($rowstart)) $rowstart = 0;
$result2 = dbquery(
"SELECT
tf.forum_id, tf.forum_cat, tf.forum_name,
tt.thread_id, tt.thread_lastuser, thread_lastpost, thread_subject,
tp.post_id, tp.post_datestamp, tu.user_id,user_name,
MAX(tp.post_id) as ostatni_post,
COUNT(post_datestamp) as nowych_postow
FROM ".$db_prefix."forums tf
INNER JOIN ".$db_prefix."threads tt USING(forum_id)
INNER JOIN ".$db_prefix."posts tp USING(thread_id)
INNER JOIN ".$db_prefix."users tu ON tt.thread_lastuser=tu.user_id
WHERE ".groupaccess('forum_access')." AND thread_lastpost>'$lastvisited' AND post_datestamp>'$lastvisited'
GROUP BY thread_lastpost
ORDER BY thread_lastpost DESC
LIMIT $rowstart,20"
);
echo "<table cellspacing='1' cellpadding='0' width='100%' border='0' class='tbl-border'>
<tr>
<td class='tbl2'><span class='small'><b>".$locale['global_048']."</b></span></td>
<td class='tbl2'><span class='small'><b>".$locale['global_044']."</b></span></td>
<td align='center' class='tbl2' width='1%' style='white-space:nowrap'><span class='small'><b>Nowe</b></span></td>
<td align='center' class='tbl2' width='1%' style='white-space:nowrap'><span class='small'><b>Ostatni post</b></span></td>
<td align='center' class='tbl2' width='1%' style='white-space:nowrap'><span class='small'><b>Data</b></span></td></tr>\n";
while ($data2 = dbarray($result2)) {
echo "<tr>
<td width='2%' class='tbl1' style='white-space:nowrap'><a href='".BASEDIR."forum/viewforum.php?forum_id=".$data2['forum_id']."&forum_cat=".$data2['forum_cat']."'><span class='small'>".trimlink($data2['forum_name'],45)."</span></a></td>
<td width='8%' class='tbl1' style='white-space:nowrap'> <a href='".BASEDIR."forum/viewthread.php?forum_id=".$data2['forum_id']."&thread_id=".$data2['thread_id']."&pid=".$data2['ostatni_post']."#post_".$data2['ostatni_post']."'><span class='small'>".trimlink($data2['thread_subject'],45)."</span></a></td>
<td align='center' width='1%' class='tbl1' style='white-space:nowrap'>".$data2['nowych_postow']."</td>
<td align='center' width='2%' class='tbl1' style='white-space:nowrap'><a href='".BASEDIR."profile.php?lookup=".$data2['user_id']."'><span class='small'>".$data2['user_name']."</span></a></td>
<td align='center' width='1%' class='tbl1' style='white-space:nowrap'><span class='small'>".showdate("%d.%m-%H:%M",$data2['thread_lastpost'])."</span></td>
</tr>\n";
$tematow++;
}
echo "<tr>\n<td align='center' colspan='5' class='tbl1'><br><span class='small'>Na forum jest <b>".$rows."</b> nowych postów w <b>".$tematow."</b> tematach od Twojej ostatniej wizyty.</span></td>\n</tr>\n</table>\n";
} else {
echo "<center><br>".sprintf($locale['global_055'], $rows)."<br><br></center>\n";
}
closetable();
if ($tematow > 20) echo "<div align='center' style='margin-top:5px;'>\n".makePageNav($rowstart,20,$tematow,3)."\n</div>\n";
require_once THEMES."templates/footer.php";
?>
Mam nadzieję, że się komuś przyda ;) .
EDIT
Edytowałem, gdyż popełniłem zasadniczy błąd - wkleiłem zawartość pliku forum_threads_list_panel.php, a nie new_posts.php. Serdecznie przepraszam.
W tej wersji mała zmiana - szerokość tabel dostosowuje się do ilości znaków w nazwie tematu.
Edytowane przez PtRM dnia 14.07.2009 10:30:13
The Real Mendosa=mendosa=Pablo the Real Mendosa=PtRM
|
|
|