(03-14-2012 07:21 AM)ZiNgA BuRgA Wrote: [ -> ]You can check MyBB's debug page ("advanced details" link at bottom of each page) and see if the query is sorting by the thread field.
Interesting, thank you for the direction !
Am not sure how to interpret the debug info.
Have attached a PDF copy.
In the sample case in this thread, the sorting threadfield key was ct_ .
In this real case (the PDF) it is cl_ , along with several other customfields... sl_, hrn_, hrp_, bp_, bpg_, and tow_ (not used in sorting).
The templateprefix is cr_.
The sorting is setup (theoretically) to be done with either the 'subject' or 'cl_' .
The test of 'subject' sorting is working, but the cl_ is not... actually it acts like it is being sorted by post date.
Hopefully you have a chance to take a look at the PDF and pass on some clue/s.
Can see Sort Queries with (among other things) threadfield 'keys' and with 'lastpost' (default shown at forumdisplay.php, whatever that means)...
Code:
// Sort by which field?
if(!isset($mybb->input['sortby']) && !empty($foruminfo['defaultsortby']))
{
$mybb->input['sortby'] = $foruminfo['defaultsortby'];
}
$t = "t.";
$sortby = htmlspecialchars($mybb->input['sortby']);
switch($mybb->input['sortby'])
{
case "subject":
$sortfield = "subject";
break;
case "replies":
$sortfield = "replies";
break;
case "views":
$sortfield = "views";
break;
case "starter":
$sortfield = "username";
break;
case "rating":
$t = "";
$sortfield = "averagerating";
$sortfield2 = ", t.totalratings DESC";
break;
case "started":
$sortfield = "dateline";
break;
default:
$sortby = "lastpost";
$sortfield = "lastpost";
$mybb->input['sortby'] = "lastpost";
break;
}
|
Yes, it is by lastpost as you can see from the query (note the ORDER BY clause):
SQL Code
SELECT t.*, tfd.`cl_` AS `xthreads_cl_`, tfd.`sl_` AS `xthreads_sl_`, tfd.`hrn_` AS `xthreads_hrn_`, tfd.`hrp_` AS
`xthreads_hrp_`, tfd.`bp_` AS `xthreads_bp_`, tfd.`bpj_` AS `xthreads_bpj_`, tfd.`tow_` AS `xthreads_tow_`, t.username AS
threadusername, u.username
FROM mybb_threads t LEFT JOIN mybb_users u ON (u.uid = t.uid) LEFT JOIN `mybb_threadfields_data` tfd ON t.tid=tfd.tid
WHERE t.fid='24' AND (t.visible='1' OR t.visible='0')
ORDER BY t.sticky DESC, t.lastpost desc
LIMIT 0, 20
|
If it's "cl_", then you need to use that as the key, ie sort by "tf_cl_"
(03-14-2012 10:26 AM)ZiNgA BuRgA Wrote: [ -> ]Yes, it is by lastpost as you can see from the query (note the ORDER BY clause):
SQL Code
SELECT t.*, tfd.`cl_` AS `xthreads_cl_`, tfd.`sl_` AS `xthreads_sl_`, tfd.`hrn_` AS `xthreads_hrn_`, tfd.`hrp_` AS
`xthreads_hrp_`, tfd.`bp_` AS `xthreads_bp_`, tfd.`bpj_` AS `xthreads_bpj_`, tfd.`tow_` AS `xthreads_tow_`, t.username AS
threadusername, u.username
FROM mybb_threads t LEFT JOIN mybb_users u ON (u.uid = t.uid) LEFT JOIN `mybb_threadfields_data` tfd ON t.tid=tfd.tid
WHERE t.fid='24' AND (t.visible='1' OR t.visible='0')
ORDER BY t.sticky DESC, t.lastpost desc
LIMIT 0, 20
|
If it's "cl_", then you need to use that as the key, ie sort by "tf_cl_"
Well, that seems to have done it, sorts correctly, and shows on the debug info accordingly, thanks much !
Guess just got confused with terminology 'names' and 'keys' in the undoc.
Seems almost like tf_ could be called a threadfilter 'prefix' or 'key' with cl_ the threadfield 'key', and the word 'name' just confuses the question... then tf_ used kinda like a template prefix with threadfield keys, ie tf_cl_
But then thats just me (an my beginner logic), am sure others understand better the way it is.
But for now, seems like the question is answered !
Yeah, it basically is a prefix. It's needed to force uniqueness in names.