View Full Version : How to get Prev Post / Next Post working in 4.2.4?
chloe101
06-07-2017, 01:55 AM
Hi,
Each thread has a Prev Post/Next Post navigational feature. In the hybrid mode, it's right undr the hybrid window. Unfortunately, it's not working on my forum and I don't see any setting to control it.
When I hover above Prev Post/Next Post, there's a little message saying "javascript:showPreveNextPost(0)"
Have I overlooked a setting? Or is this a VBulletin error?
I already tried with add-on/hooks disabled. It still didn't work
Thank you!
On edit: The "Prev Post/Next Post" navigation works in the threaded view, but not the hybrid view. Is this something I should ask over at VB.com instead?
BirdOPrey5
07-01-2017, 12:54 PM
So this turned out to be harder than I thought, and I know the solution isn't optimal because while the next/previous links will work in Hybrid mode it doesn't cache the post so the entire page reloads.
What you need to do is edit showthread.php file.
Find the line:
if ($threadedmode == 2) // hybrid display mode
And "comment it out" (make it)
//if ($threadedmode == 2) // hybrid display mode
then find the line
else // threaded display mode
and comment it out too...
//else // threaded display mode
Then save changes. (Maybe backup the original file first.)
In my testing the next/previous worked in Hybrid mode after these changes.
chloe101
07-02-2017, 01:43 AM
So this turned out to be harder than I thought, and I know the solution is optimum because while the next/previous links will work in Hybid mode it doesn't cache the post so the entire page reloads.
It worked!!! You rock! Thank you SO much :up:
--------------- Added 1498990892 at 1498990892 ---------------
So this turned out to be harder than I thought, and I know the solution is optimum because while the next/previous links will work in Hybid mode it doesn't cache the post so the entire page reloads.
What you need to do is edit showthread.php file.
Find the line:
if ($threadedmode == 2) // hybrid display mode
And "comment it out" (make it)
//if ($threadedmode == 2) // hybrid display mode
then find the line
else // threaded display mode
and comment it out too...
//else // threaded display mode
Then save changes. (Maybe backup the original file first.)
In my testing the next/previous worked in Hybrid mode after these changes.
Oh dear. Next/previous worked great but unfortunately it duplicated all the posts in the thread creating a mirror copy underneath with the exact same post ids.
Also, when I retraced my steps to see if I'd done something wrong, I noticed there are two lines of
if ($threadedmode == 2) // hybrid display mode
one on line 1355 and one on line 1606
and two lines of
else // threaded display mode
one on line 1405 and one on line 1610
Can you please clarify which lines I should comment out in case that's what caused the duplication? The combinations I tried either duplicated all the posts or gave me errors.
I'm so sorry for coming back with a problem. Thanks for taking your time to help me. I really appreciate it.
BirdOPrey5
07-02-2017, 12:14 PM
Hmmm, it would have been the first instance of each I edited. You can always copy an unedited file back from an original download zip if you need to restore back.
BirdOPrey5
07-02-2017, 12:23 PM
After restoring back to an original showthread.php file for VB 4.2.4 instead of the edits above instead do this edit-
Go to line 1356. after the { hit enter a few times for some blank lines.
Paste this code into the middle of the blank lines, save, and try again. I haven't tested it but I have a feeling it may work. Worst case you restore back to the original showthread.php file, it won't hurt anything.
$FIRSTPOSTID = $curpostid;
$LASTPOSTID = $curpostid;
// sort out which posts to cache:
if (!$vbulletin->options['threaded_maxcache'])
{
$vbulletin->options['threaded_maxcache'] = 999999;
}
// cache $vbulletin->options['threaded_maxcache'] posts
// take 0.25 from above $curpostid
// and take 0.75 below
if (sizeof($postorder) <= $vbulletin->options['threaded_maxcache']) // cache all, thread is too small!
{
$startat = 0;
}
else
{
if (($curpostidkey + ($vbulletin->options['threaded_maxcache'] * 0.75)) > sizeof($postorder))
{
$startat = sizeof($postorder) - $vbulletin->options['threaded_maxcache'];
}
else if (($curpostidkey - ($vbulletin->options['threaded_maxcache'] * 0.25)) < 0)
{
$startat = 0;
}
else
{
$startat = intval($curpostidkey - ($vbulletin->options['threaded_maxcache'] * 0.25));
}
}
unset($curpostidkey);
foreach ($postorder AS $postkey => $pid)
{
if ($postkey > ($startat + $vbulletin->options['threaded_maxcache'])) // got enough entries now
{
break;
}
if ($postkey >= $startat AND empty($morereplies["$pid"]))
{
$cache_postids .= ',' . $pid;
}
}
// get next/previous posts for each post in the list
// key: NAVJS[postid][0] = prev post, [1] = next post
$NAVJS = array();
$prevpostid = 0;
foreach ($postorder AS $pid)
{
$NAVJS["$pid"][0] = $prevpostid;
$NAVJS["$prevpostid"][1] = $pid;
$prevpostid = $pid;
}
$NAVJS["$toppostid"][0] = $pid; //prev button for first post
$NAVJS["$pid"][1] = $toppostid; //next button for last post
$navjs = '';
foreach ($NAVJS AS $pid => $info)
{
$navjs .= "pn[$pid] = \"$info[0],$info[1]\";\n";
}
}
unset($ipostarray, $postparent, $postorder, $NAVJS, $postid, $info, $prevpostid, $postkey);
(The above is code from threaded mode that I believe makes the next/previous links work.)
chloe101
07-02-2017, 05:36 PM
After restoring back to an original showthread.php file for VB 4.2.4 instead of the edits above instead do this edit- .....
Sadly no, I did that and got "Parse error: syntax error, unexpected 'else' (T_ELSE) in (...)/showthread.php on line 1477"
the error line, my 1477, is else // threaded display mode
BirdOPrey5
07-02-2017, 09:00 PM
OK, let me try playing with it a bit more, you're still on VB 4.2.4, right?
chloe101
07-02-2017, 09:04 PM
OK, let me try playing with it a bit more, you're still on VB 4.2.4, right?
Yes :) Still on 4.2.4. Thanks
chloe101
07-10-2017, 01:58 AM
OK, let me try playing with it a bit more, you're still on VB 4.2.4, right?If it's too much of a pain to get this working, please don't feel obligated to spend a ton of time on it. Could you maybe help me instead to remove the previous/next post text on the hybrid page? Thanks :)
BirdOPrey5
07-10-2017, 12:47 PM
Let's try this one more time before we go about removing the links. I tested this, seemed to work for me.
Again, edit an original showthread.php file.
Find this code:
}
else // threaded display mode
It's at or about line 1404 (the first instance of else // threaded display mode)
But also above the closing bracket }
So really, directly below this text in the file:
$pagenav = construct_page_nav(
$vbulletin->GPC['pagenumber'],
$perpage,
$numhybrids,
'',
'',
'',
'thread',
$threadinfo,
$pageinfo
);
Paste in the following code:
// get next/previous posts for each post in the list
// key: NAVJS[postid][0] = prev post, [1] = next post
$NAVJS = array();
$prevpostid = 0;
foreach ($postorder AS $pid)
{
$NAVJS["$pid"][0] = $prevpostid;
$NAVJS["$prevpostid"][1] = $pid;
$prevpostid = $pid;
}
$NAVJS["$toppostid"][0] = $pid; //prev button for first post
$NAVJS["$pid"][1] = $toppostid; //next button for last post
$navjs = '';
foreach ($NAVJS AS $pid => $info)
{
$navjs .= "pn[$pid] = \"$info[0],$info[1]\";\n";
}
So in the end the code looks like:
$pagenav = construct_page_nav(
$vbulletin->GPC['pagenumber'],
$perpage,
$numhybrids,
'',
'',
'',
'thread',
$threadinfo,
$pageinfo
);
// get next/previous posts for each post in the list
// key: NAVJS[postid][0] = prev post, [1] = next post
$NAVJS = array();
$prevpostid = 0;
foreach ($postorder AS $pid)
{
$NAVJS["$pid"][0] = $prevpostid;
$NAVJS["$prevpostid"][1] = $pid;
$prevpostid = $pid;
}
$NAVJS["$toppostid"][0] = $pid; //prev button for first post
$NAVJS["$pid"][1] = $toppostid; //next button for last post
$navjs = '';
foreach ($NAVJS AS $pid => $info)
{
$navjs .= "pn[$pid] = \"$info[0],$info[1]\";\n";
}
}
else // threaded display mode
That is working for me, Please try it.
chloe101
07-13-2017, 03:49 AM
Let's try this one more time before we go about removing the links. I tested this, seemed to work for me.
-snip-
WOW! It works!! You should see the huge smile on my face right now :) Thank you SO much.
This, THIS, is why I love VB.org so much. If I were Internet Brands, I'd be paying the support staff and coders here serious money. Since I'm not, all I can offer you is my joyful thanks for all the volunteer time and effort it took you to help me
I really appreciate it. And you :)
Thank you
On edit: Oh gosh, I "cannot like anymore posts today". It seems I used up all my likes earlier. Well, consider it liked until tomorrow when I can.
BirdOPrey5
07-13-2017, 09:57 AM
WOW! It works!! You should see the huge smile on my face right now :) Thank you SO much.
This, THIS, is why I love VB.org so much. If I were Internet Brands, I'd be paying the support staff and coders here serious money. Since I'm not, all I can offer you is my joyful thanks for all the volunteer time and effort it took you to help me
I really appreciate it. And you :)
Thank you
On edit: Oh gosh, I "cannot like anymore posts today". It seems I used up all my likes earlier. Well, consider it liked until tomorrow when I can.
You're welcome, you were the last random person I helped as a staff member. https://vborg.vbsupport.ru/showthread.php?t=325300
chloe101
07-14-2017, 12:37 AM
You're welcome, you were the last random person I helped as a staff member. https://vborg.vbsupport.ru/showthread.php?t=325300
I'm happy that my timing was so perfect but even a day later, I'm extremely upset over the news in that thread. I hope IB reconsiders because they just shot themselves in both feet. You really rock for fixing this for me. Thank you :)
vBulletin® v3.8.12 by vBS, Copyright ©2000-2025, vBulletin Solutions Inc.