PDA

View Full Version : Enhanced syndication script (external2.php)


Ahmad
16 Apr 2004, 21:53
Hi,

This is my first public hack. I hope I'm not breaking any rules! :rolleyes:

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:
---------------
Code is only visible to licensed users, and only when logged into the forums.
---------------



Add these lines above them:


Code:
---------------
Code is only visible to licensed users, and only when logged into the forums.
---------------



Then find these two lines:


Code:
---------------
Code is only visible to licensed users, and only when logged into the forums.
---------------



And replace them with:


Code:
---------------
Code is only visible to licensed users, and only when logged into the forums.
---------------



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.

´ÀÉ`SÌLVÉR´ÀÉ`
16 Apr 2004, 23:27
nice enhancement

poetic
17 Apr 2004, 00:33
any demo's??

MrNase
17 Apr 2004, 08:20
Nice, now that feature can be used better :)

But please make a *.txt file for the instructions and attach it :)

Ahmad
17 Apr 2004, 09:47
any demo's??
Sure. Here is the code for an HTML file that will get 25 threads by their dates of last post and display them in a marquee:



Code:
---------------
Code is only visible to licensed users, and only when logged into the forums.
---------------



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.

Ahmad
17 Apr 2004, 09:50
Nice, now that feature can be used better :)

But please make a *.txt file for the instructions and attach it :)
I've just did :)

Ahmad
17 Apr 2004, 09:53
nice enhancement
I'm glad you liked it :)

TCB
06 Sep 2004, 17:36
Is this thread looking for the last x posts (in the database), everytime someone visits the site? Or does it has an interval (to save some serverload)?

TCB
10 Sep 2004, 15:51
Is this thread looking for the last x posts (in the database), everytime someone visits the site? Or does it has an interval (to save some serverload)?

I meant: does external.php work with something like cachefiles, or does it generates the lists realtime?

Ahmad
18 Sep 2004, 07:34
No, actually, there is no caching, but it can be added.

TCB
18 Sep 2004, 11:39
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?

eblivion
26 Sep 2004, 07:11
Sure. Here is the code for an HTML file that will get 25 threads by their dates of last post and display them in a marquee:



Code:
---------------
Code is only visible to licensed users, and only when logged into the forums.
---------------



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>&nbsp;<a class=smallfont href=\"/forum/showthread.php?t="+threads[t].threadid + "&goto=lastpost\">"+newTitle+"</a><br>&nbsp;&nbsp;" + threads[t].threaddate + " : " + threads[t].threadtime + "<br />&nbsp;&nbsp;by: <a href=\"/forum/member.php?find=lastposter&t="+threads[t].threadid+"\">"+threads[t].poster+"</a><br /><br /></div>");
}
//-->
</script>