Posts: 7
Threads: 2
Joined: May 2017
Reputation:
0
2017-05-30, 02:04 PM
Hi there,
I've been hunting around for guides on how to get my "news" forum posts to show up on my main index.php page and I was wondering if anyone could help me out?
I'm currently using MyBB 1.8.12 and all of the guides I've been able to track down appear to be for much earlier versions. Any help would be much appreciated.
Posts: 21,678
Threads: 5
Joined: Aug 2011
Reputation:
2,313
2017-05-30, 02:50 PM
you can follow this method & improve depending on your requirement
you can replace WHERE 1=1 with WHERE fid = x (where x is fid number of required news forum)
if you want to select a number of forums then you can use WHERE fid IN (x,y,z) ..
Posts: 7
Threads: 2
Joined: May 2017
Reputation:
0
2017-05-30, 07:38 PM
(2017-05-30, 02:50 PM).m. Wrote: you can follow this method & improve depending on your requirement
you can replace WHERE 1=1 with WHERE fid = x (where x is fid number of required news forum)
if you want to select a number of forums then you can use WHERE fid IN (x,y,z) ..
This is excellent, the only issue is that this actually only shows the post thread and not the content of the post itself. Which is what I'm aiming for.
Posts: 132
Threads: 11
Joined: Nov 2014
Reputation:
31
2017-05-31, 12:49 AM
(This post was last modified: 2017-05-31, 12:50 AM by Mipher.)
Try with this query:
$query = $db->query("
SELECT t.tid, t.fid, t.uid, t.username, t.subject, t.replies, t.views, t.lastposter, p.message
FROM ".TABLE_PREFIX."threads t
INNER JOIN ".TABLE_PREFIX."posts p ON (p.tid=t.tid)
WHERE t.fid='2' AND t.visible='1' AND t.closed NOT LIKE 'moved|%' AND t.firstpost=p.pid
ORDER BY t.lastpost DESC
LIMIT 6" // Change the last digit to how many recent post you want to be shown
);
If you want the order by the date of publication of the thread (so not the last post) use in the ORDER BY keyword:
ORDER BY t.dateline DESC
To show the message, use inside the while loop:
$fetch['message']
If you want to limit the characters of the message insert inside the while loop:
$message = htmlspecialchars_uni($fetch['message']);
if(my_strlen($message) > 140) {
$message = my_substr($message, 0, 140) . "...";
}
Replacing 140 with the maximum characters that you want.
Posts: 7
Threads: 2
Joined: May 2017
Reputation:
0
2017-06-01, 12:38 AM
(2017-05-31, 12:49 AM)Mipher Wrote: Try with this query:
$query = $db->query("
SELECT t.tid, t.fid, t.uid, t.username, t.subject, t.replies, t.views, t.lastposter, p.message
FROM ".TABLE_PREFIX."threads t
INNER JOIN ".TABLE_PREFIX."posts p ON (p.tid=t.tid)
WHERE t.fid='2' AND t.visible='1' AND t.closed NOT LIKE 'moved|%' AND t.firstpost=p.pid
ORDER BY t.lastpost DESC
LIMIT 6" // Change the last digit to how many recent post you want to be shown
);
If you want the order by the date of publication of the thread (so not the last post) use in the ORDER BY keyword:
ORDER BY t.dateline DESC
To show the message, use inside the while loop:
$fetch['message']
If you want to limit the characters of the message insert inside the while loop:
$message = htmlspecialchars_uni($fetch['message']);
if(my_strlen($message) > 140) {
$message = my_substr($message, 0, 140) . "...";
}
Replacing 140 with the maximum characters that you want.
Absolutely perfect. This gives me the perfect baseline to get started on what I want to accomplish. I'll be sure to post my finished product (with a link to my site) in case anyone else wants to do something similar to me.
Thanks for the awesome support!
Posts: 7
Threads: 2
Joined: May 2017
Reputation:
0
2017-06-02, 09:41 PM
Alright, for those of you that were wondering I was able to get this working exactly how I wanted it. It displays the subject of the post as well as the post content.
Here is the code... Thanks to everyone that helped me!
<?php
chdir("./forum/"); // path to MyBB
define("IN_MYBB", 1);
require("./global.php");
global $mybb, $db, $cache, $lang, $plugins; // Trim this list of global vars, if you want to.
?>
<?php
$query = $db->query("
SELECT t.tid, t.fid, t.uid, t.username, t.subject, t.replies, t.views, t.lastposter, p.message
FROM ".mybb_."threads t
INNER JOIN ".mybb_."posts p ON (p.tid=t.tid)
WHERE t.fid='3' AND t.visible='1'
ORDER BY t.dateline DESC
LIMIT 6
"// Change the last digit to how many recent post you want to be shown
);
$list = '';
while($fetch = $db->fetch_array($query))
{
$list .= "<strong><a href=\"forum/showthread.php?tid={$fetch['tid']}\">".htmlspecialchars_uni($fetch['subject'])."</a></strong><br />";
$list .= "".htmlspecialchars_uni($fetch['message'])."<br>";
$poster = "<a href=\"forum/member.php?action=profile&uid=".$fetch['uid']."\">{$fetch['username']}</a>";
$list .= "Posted by: {$poster}<br /><br />";
}
//output
echo $list;
?>
Posts: 158
Threads: 14
Joined: Apr 2015
Reputation:
6
2021-06-14, 01:00 AM
(This post was last modified: 2021-06-14, 11:02 PM by skrilaxrev.)
(2017-06-02, 09:41 PM)DemonReborn Wrote: Alright, for those of you that were wondering I was able to get this working exactly how I wanted it. It displays the subject of the post as well as the post content.
Here is the code... Thanks to everyone that helped me!
<?php
chdir("./forum/"); // path to MyBB
define("IN_MYBB", 1);
require("./global.php");
global $mybb, $db, $cache, $lang, $plugins; // Trim this list of global vars, if you want to.
?>
<?php
$query = $db->query("
SELECT t.tid, t.fid, t.uid, t.username, t.subject, t.replies, t.views, t.lastposter, p.message
FROM ".mybb_."threads t
INNER JOIN ".mybb_."posts p ON (p.tid=t.tid)
WHERE t.fid='3' AND t.visible='1'
ORDER BY t.dateline DESC
LIMIT 6
"// Change the last digit to how many recent post you want to be shown
);
$list = '';
while($fetch = $db->fetch_array($query))
{
$list .= "<strong><a href=\"forum/showthread.php?tid={$fetch['tid']}\">".htmlspecialchars_uni($fetch['subject'])."</a></strong><br />";
$list .= "".htmlspecialchars_uni($fetch['message'])."<br>";
$poster = "<a href=\"forum/member.php?action=profile&uid=".$fetch['uid']."\">{$fetch['username']}</a>";
$list .= "Posted by: {$poster}<br /><br />";
}
//output
echo $list;
?>
Thanks, but I get a 500 error (PHP 7.3).
There is an error somewhere here:
$query = $db->query("
SELECT t.tid, t.fid, t.uid, t.username, t.subject, t.replies, t.views, t.lastposter, p.message
But I don't know what.
|