vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vB3 General Discussions (https://vborg.vbsupport.ru/forumdisplay.php?f=111)
-   -   Help with simple plug-in please... (https://vborg.vbsupport.ru/showthread.php?t=112437)

Razasharp 04-07-2006 11:23 PM

Help with simple plug-in please...
 
Would appreciate some help with this plug-in please :)

I am trying to add something to the hook:

($hook = vBulletinHook::fetch_hook('forumdisplay_sort')) ? eval($hook) : false;

in forumdisplay.php

I simply want to add:

case 'dateline':

so that I can sort threads in a particular forum in the order they were created (rather than by last-post).

I found this thread which outlines how to do it by hacking files - but I'd rather it be a plug-in if possible: https://vborg.vbsupport.ru/showthrea...d+forumdisplay

Here is a snippet of the forum display code so you don't have to hunt it out :)

PHP Code:

// look at sorting options:
    
if ($vbulletin->GPC['sortorder'] != 'asc')
    {
        
$sqlsortorder 'DESC';
        
$order = array('desc' => 'selected="selected"');
        
$vbulletin->GPC['sortorder'] = 'desc';
    }
    else
    {
        
$sqlsortorder '';
        
$order = array('asc' => 'selected="selected"');
    }

    switch (
$sortfield)
    {
        case 
'title':
            
$sqlsortfield 'thread.title';
            break;
        case 
'lastpost':
            
$sqlsortfield 'thread.lastpost';
            break;
        case 
'replycount':
        case 
'views':
        case 
'postusername':
            
$sqlsortfield $vbulletin->GPC['sortfield'];
            break;
        case 
'voteavg':
            if (
$foruminfo['allowratings'])
            {
                
$sqlsortfield 'voteavg';
                break;
            } 
// else, use last post
        
default:
            
$handled false;
            (
$hook vBulletinHook::fetch_hook('forumdisplay_sort')) ? eval($hook) : false;
            if (!
$handled)
            {
                
$sqlsortfield 'thread.lastpost';
                
$sortfield 'lastpost';
            }
    }
    
$sort = array($sortfield => 'selected="selected"');

    if (!
can_moderate($forumid'canmoderateposts'))
    {
        if (!(
$forumperms $vbulletin->bf_ugp_forumpermissions['canseedelnotice']))
        {
            
$visiblethreads " AND visible = 1 ";
        }
        else
        {
            
$visiblethreads " AND visible IN (1,2)";
        }
    }
    else
    {
        
$visiblethreads " AND visible IN (0,1,2)";
    }

    
$hook_query_fields $hook_query_joins $hook_query_where '';
    (
$hook vBulletinHook::fetch_hook('forumdisplay_query_threadscount')) ? eval($hook) : false

Thanks in advance!

Royalridge 04-08-2006 01:34 PM

Ok, my need was similar and I experimented to find a way to implement what you are looking for.

In this example forum ID 77 will be changed so that threads are listed in creation order.

You need to change TWO hooks.

forumdisplay_start:
Code:

if ($forumid == 77) {
  $vbulletin->GPC['sortfield'] = 'Custom';
}

forumdisplay_sort:
Code:

if ($forumid = 77) {
  $sqlsortfield = "thread.dateline";
  $sqlsortorder = "asc";
  $handled = true;
}

I suppose you could also code this like:

forumdisplay_start:
Code:

if ($forumid == 77) {
  $vbulletin->GPC['sortfield'] = 'dateline';
}

forumdisplay_sort:
Code:

if ($vbulletin->GPC['sortfield'] == 'dateline';) {
  $sqlsortfield = "thread.dateline";
  $sqlsortorder = "asc";
  $handled = true;
}

Then you only need to change the code in forumdisplay_start if you wanted multiple forums to use "dateline" as the sort.

I'm sure there's a more elegant way to get what you want to achieve and I'm looking forward to seeing other peoples solutions.

The problem with my solution is that it's quick, dirty and doesn't allow the user to select the sort fields / orders from the normal menu.

Sussed it, leave forumdisplay_sort: as above but change:

forumdisplay_start:
Code:

if ($_REQUEST['sort'] == '') {
  if ($forumid == 77) {
    $vbulletin->GPC['sortfield'] = 'dateline';
  }
}


Razasharp 04-08-2006 02:05 PM

Thanks!

I got the first option to work - but the second one didn't (second would make it slightly easier to add more as it would only need one oplug-in changed).

I'll give the third option a go too in a minute :)

Its not working :(

I get:

Parse error: parse error, unexpected ';' in /home/mysite/public_html/forums/forumdisplay.php(676) : eval()'d code on line 1


---

(Also option one doesnt work as no matter which forum you go to it shows the contents of the forum specified in the plug in)

Any ideas?

Thanks again for your help.

Royalridge 04-08-2006 03:10 PM

My bad, for option 1 it should have been:

forumdisplay_sort:
Code:

if ($forumid == 77) {
  $sqlsortfield = "thread.dateline";
  $sqlsortorder = "asc";
  $handled = true;
}

As for the other versions, I'm actually in the process of tidying up our 3.5.4 upgrade and will have a look at 'em when the heat dies down ;)

Razasharp 04-08-2006 03:23 PM

Thats it Thanks!

Duh - I should've spotted the typo myself... took me 5 minutes to see what was changed lol

- will look forward to any updates too :)

Razasharp 04-30-2006 03:26 PM

How did you get on with this after Royalridge?

Did you manage to update your code so users can use other sort options too?

:)

Royalridge 04-30-2006 05:20 PM

To be honest, I only had the requirement to sort one forum by thread title so I didn't really do anything more on it.

Razasharp 05-05-2006 10:28 PM

Ah right, thanks for replying :)

JamieM-UK 05-22-2006 04:45 PM

Quote:

Originally Posted by Royalridge
My bad, for option 1 it should have been:

forumdisplay_sort:
Code:

if ($forumid == 77) {
  $sqlsortfield = "thread.dateline";
  $sqlsortorder = "asc";
  $handled = true;
}

As for the other versions, I'm actually in the process of tidying up our 3.5.4 upgrade and will have a look at 'em when the heat dies down ;)

Can anyone help a novice out here please? Where would this code actually be inserted?

Razasharp 05-22-2006 04:55 PM

Jamie - as far as I remb there is a plug-in that does the same thing so will be easier for you... do a search for it in the mods section ;)

(or if you want to use the above code, you need to create a plug-in and enter that code, again, theres a help guide about plug-ins on this site)


All times are GMT. The time now is 11:34 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.02146 seconds
  • Memory Usage 1,764KB
  • 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
  • (7)bbcode_code_printable
  • (1)bbcode_php_printable
  • (1)bbcode_quote_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (1)pagenav_pagelink
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (10)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
  • pagenav_page
  • pagenav_complete
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete