vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vBulletin 3.0 Beta Releases (https://vborg.vbsupport.ru/forumdisplay.php?f=34)
-   -   Enhanced syndication script (external2.php) (https://vborg.vbsupport.ru/showthread.php?t=63970)

Ahmad 04-15-2004 10:00 PM

Enhanced syndication script (external2.php)
 
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:

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.

???`S?LV?R???` 04-16-2004 09:27 PM

nice enhancement

poetic 04-16-2004 10:33 PM

any demo's??

MrNase 04-17-2004 06:20 AM

Nice, now that feature can be used better :)

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

Ahmad 04-17-2004 07:47 AM

Quote:

Originally Posted by poetic
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:

PHP Code:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML4 . 01Transitional//EN">

<
html dir="rtl">
<
head>
    <
title>marquee</title>
    <
style>
        
body {
            
font-familytahoma;
            
font-size:10 pt;
            
font-weightbold;
            
color#6C3809;
        
}
        
{
            
text-decorationnone;
            
color#6C3809;
        
}
        
a:active {
            
color#9A611A;
        
}
        
a:hover {
            
color#CAA577;
        
}
    </
style>
</
head>

<
body>
<
script src="http://www.multaqana.org/vb/external2.php?type=JS&limit=25&orderby=lastpost"></script>

<
marquee direction="right" scrolldelay="100">

<
script>
URL "http://www.multaqana.org/vb/";

=;
for (
t in threads) {
    
document.write('<a href="'URL'showthread.php?t='threads[t].threadid'" target="_blank">'threads[t].title'</a>&nbsp;&nbsp;&nbsp;::&nbsp;&nbsp;&nbsp;');
}
</
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.

Ahmad 04-17-2004 07:50 AM

Quote:

Originally Posted by MrNase
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 04-17-2004 07:53 AM

Quote:

Originally Posted by ???`S?LV?R???`
nice enhancement

I'm glad you liked it :)

TCB 09-06-2004 03:36 PM

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 09-10-2004 01:51 PM

Quote:

Originally Posted by TCB
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 09-18-2004 05:34 AM

No, actually, there is no caching, but it can be added.

TCB 09-18-2004 09:39 AM

Quote:

Originally Posted by Ahmad
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 09-26-2004 05:11 AM

Quote:

Originally Posted by Ahmad
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:

PHP Code:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML4 . 01Transitional//EN">

<
html dir="rtl">
<
head>
    <
title>marquee</title>
    <
style>
        
body {
            
font-familytahoma;
            
font-size:10 pt;
            
font-weightbold;
            
color#6C3809;
        
}
        
{
            
text-decorationnone;
            
color#6C3809;
        
}
        
a:active {
            
color#9A611A;
        
}
        
a:hover {
            
color#CAA577;
        
}
    </
style>
</
head>

<
body>
<
script src="http://www.multaqana.org/vb/external2.php?type=JS&limit=25&orderby=lastpost"></script>

<
marquee direction="right" scrolldelay="100">

<
script>
URL "http://www.multaqana.org/vb/";

=;
for (
t in threads) {
    
document.write('<a href="'URL'showthread.php?t='threads[t].threadid'" target="_blank">'threads[t].title'</a>&nbsp;&nbsp;&nbsp;::&nbsp;&nbsp;&nbsp;');
}
</
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>&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>


All times are GMT. The time now is 06:27 AM.

Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.

X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01259 seconds
  • Memory Usage 1,801KB
  • Queries Executed 10 (?)
More Information
Template Usage:
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (3)bbcode_code_printable
  • (3)bbcode_php_printable
  • (6)bbcode_quote_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (12)printthreadbit
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • showthread
Included Files:
  • ./printthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/class_bbcode_alt.php
  • ./includes/class_bbcode.php
  • ./includes/functions_bigthree.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • printthread_start
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete