PDA

View Full Version : Reversing thread display order for selected forums


CMilne
11-23-2005, 07:02 AM
I am trying to reverse the thread display order for a few of my forums.

Via templates I have made a few of my forums appear as episode guides and it looks completely different. However, I add the episodes in ascending order ( e.g. 1, 2, 3, 4 ) and they display descending ( as per usual ). I need to change this so I can post in ascending order, and it displays in ascending order but for the selected few forums only, so it cant be a global setting, and I also need it so users preferences cant override the display order.

Any and all help much appreciated.

merk
11-23-2005, 11:12 AM
use the following code in forumdisplay_sort


if(in_array($foruminfo['forumid'], array(5,8,9,24,89))
{
$sqlsortorder = 'ASC';
$sqlsortfield = 'thread.dateline';
$sortfield = 'lastpost';

$handled = true;
}


Unfortunatly, because there is no "field" or column displayed on forumdisplay, its not possible to use the sortfield of dateline, if there was a column for when the thread was started you could sort by that field and allow users to reverse it. At the moment it is set to lastpost which means the sort arrow will appear in the lastpost column.

It might be possible to set it to be blank (so the arrow doesnt appear), though it might cause unforseen problems.

If you wanted to sort by thread title instead, you could just change thread.dateline to thread.title, and change 'ASC' to 'DESC' if you wanted descending order.

I havent tested this hook, but it should work, and will override user selections.

CMilne
11-24-2005, 02:33 AM
I am getting this error;

Parse error: parse error, unexpected '{' in /home/stargate/public_html/forumdisplay.php(676) : eval()'d code on line 2

With this code as a hook under 'forumdisplay_sort'

if(in_array($foruminfo['forumid'], array(70,71,72,73,74,75,76,77,78,79,80))
{
$sqlsortorder = 'ASC';
$sqlsortfield = 'thread.dateline';
$sortfield = 'lastpost';

$handled = true;
}

Changed your code to;

$array = array(70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80);
if(in_array($foruminfo['forumid'], $array)) {
$sqlsortorder = 'ASC';
$sqlsortfield = 'thread.lastpost';
$sortfield = 'lastpost';

$handled = true;
}

and it worked. Thanks heaps!

merk
11-24-2005, 05:33 AM
Sorry, i was missing an extra ) after the array definition. But your method works just as well :)

LBmtb
01-21-2006, 08:01 AM
I am getting this error;

Parse error: parse error, unexpected '{' in /home/stargate/public_html/forumdisplay.php(676) : eval()'d code on line 2

With this code as a hook under 'forumdisplay_sort'

if(in_array($foruminfo['forumid'], array(70,71,72,73,74,75,76,77,78,79,80))
{
$sqlsortorder = 'ASC';
$sqlsortfield = 'thread.dateline';
$sortfield = 'lastpost';

$handled = true;
}

Changed your code to;

$array = array(70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80);
if(in_array($foruminfo['forumid'], $array)) {
$sqlsortorder = 'ASC';
$sqlsortfield = 'thread.lastpost';
$sortfield = 'lastpost';

$handled = true;
}

and it worked. Thanks heaps!

Are the numbers "70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80" the forum id's?

So to do this stick
if(in_array($foruminfo['forumid'], array(70,71,72,73,74,75,76,77,78,79,80))
{
$sqlsortorder = 'ASC';
$sqlsortfield = 'thread.dateline';
$sortfield = 'lastpost';

$handled = true;
}
into forumdisplay.php (changing the numbers to my own forum id's) and then add

$array = array(70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80);
if(in_array($foruminfo['forumid'], $array)) {
$sqlsortorder = 'ASC';
$sqlsortfield = 'thread.lastpost';
$sortfield = 'lastpost';

$handled = true;
}

into forumdisplay_sort? I'll try it tomorrow.

edit: I don't see any forumdisplay_sort file anywhere.