Version: 1.00, by Ahmad
Developer Last Online: Jul 2014
Version: 3.0.0
Rating:
Released: 04-15-2004
Last Update: Never
Installs: 4
Is in Beta Stage
No support by the author.
Hi,
This is my first public hack. I hope I'm not breaking any rules!
This is an enhanced version of external.php that gives you two little useful features:
1. Control the number of threads you want to get (up to 50 threads, or even more).
2. Change the order of threads from the date of the thread to the date of the last post.
This will allow you to make an external list of your latest XX posts using JavaScript, XML, or RSS.
Installation
1. Make a copy of the file external.php in the same directory and call it external2.php.
2. Open external2.php in your favorite text editor.
3. Look for these lines:
Code:
if ($forumchoice != '')
{
// query last 15 threads from visible / chosen forums
Add these lines above them:
PHP Code:
// see if there is a count preference
if ($_REQUEST['limit'])
{
$limit = intval($_REQUEST['limit']);
if ($limit > 50)
{
$limit = 50;
}
}
else
{
$limit = 15;
}
// see if there is an ordering preference
if ($_REQUEST['orderby'] == 'lastpost') {
$orderby = 'thread.lastpost DESC';
}
else
{
$orderby = 'thread.dateline DESC';
}
Then find these two lines:
Code:
ORDER BY thread.dateline DESC
LIMIT 15
And replace them with:
Code:
ORDER BY $orderby
LIMIT $limit
Usage
Just like you would use external.php, but with the following extra parameters:
1. limit: this controls the number of threads you want to be displayed. You cannot go beyond 50 here. If not set to anything, it will return 15 threads.
2. orderby: if set to 'lastpost', it will give you the last XX number of threads based on the last post to the thread. If set to anything else (or not set at all), it will give you the last XX number of threads based on their start date (this order doesn't change when someone replies to a thread).
If you ignore both extra parameters limit and orderby, the script will act just like the normal external.php. So, you can use it in place of external.php, instead of as an second (external2.php) script.
I hope you will find it useful.
Show Your Support
This modification may not be copied, reproduced or published elsewhere without author's permission.
No, actually, there is no caching, but it can be added.
So everytime this external2.php is included on a page, the list gets completely renewed at each visit, from each visitor? Doesn't that cost an immense amount of servercapacity?
Wouldn't it be better when it gets cached for about a few minutes?
i =0 ;
for (t in threads) {
document.write('<a href="', URL, 'showthread.php?t=', threads[t].threadid, '" target="_blank">', threads[t].title, '</a> :: ');
}
</script>
</marquee>
</body>
</html>
Notes:
1. This file is designed for right-to-left languages. If you want it for a left-to-right language, then you will have to change the "dir" attribute in the "html" tag to "ltr" and the "direction" attribute in the "marquee" tag to "left".
2. This file was not checked for best browser compatability and standards compliance.
3. The file is static (server-wise). It doesn't have to be a ".php" file. The "magic" happens by the interaction between the client-side javascript code and the external2.php content provider.
4. You will also need to change the "src" attribute of the first "script" tage, and the URL variable in the second script to point to your own forum.
5. The best way of making use of this script is to insert it in your forum as an iframe. This way, you will always have the threads with the latest posts displayed on all pages.
I installed this mod and changed it a bit to include a link to the last poster's post and their profile. The poster link correctly goes to the last's poster's profile, but the username displayed is the thread starter instead of the last poster.
Does anyone know what I need to replace threads[t].poster with to get the name of the last poster instead of the original? Below is my code:
<script src="/forum/external2.php?type=JS&limit=5&orderby=lastpost"></script>
<script type="text/javascript">
<!--
i =0 ;
for (t in threads) {
var titleAsString = new String(threads[t].title);
if (titleAsString.length > 20)
{
var newTitle = titleAsString.substring(0,20);
newTitle = newTitle + "...";
}
else
{
var newTitle = titleAsString;
}
document.writeln("<div class=smallfont><img src=/images/dot_o.gif width=5 height=5 border=0> <a class=smallfont href=\"/forum/showthread.php?t="+threads[t].threadid + "&goto=lastpost\">"+newTitle+"</a><br> " + threads[t].threaddate + " : " + threads[t].threadtime + "<br /> by: <a href=\"/forum/member.php?find=lastposter&t="+threads[t].threadid+"\">"+threads[t].poster+"</a><br /><br /></div>");
}
//-->
</script>