Go Back   vb.org Archive > vBulletin 4 Discussion > vB4 Programming Discussions
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools Display Modes
  #1  
Old 10-14-2011, 09:49 PM
SpikeSaunders SpikeSaunders is offline
 
Join Date: Oct 2011
Posts: 47
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default How to get Php code that worked in VB3 to work in Vb4?

Hello all,

As we all know the changes from VB3-4 were major, and one such change is how PHP code and variables worked. I have an issue however that despite the articles read here and vbteam, I still can not get it to function as needed.

A little background, this site in question uses the Web Templates mod (a great one!) by Logician. What's going on is in the content/template portion there are three variables
$r2d_pageNr
$r2d_navBar
$r2d_prevNext

Then on the bottom of the actual editor for this new Web Template, is the php include section, which has the code that I included below.

Now here is the kicker, as it is in this way, it works flawlessly on VB3. But when attempting to set this up for VB4 by registering the variables and such, I still can not get it to work.

Any help would be greatly appreciated!

PHP Code:
$r2d_navBar_array = array(
   
"primer_intro" => "Primer intro",
   
"primer_tcg" => "What is a TCG?",
   
"primer_thespoils" => "What is The Spoils?",
   
"primer_why" => "Why play The Spoils?",
   
"primer_trades" => "The five trades",
   
"primer_world" => "The world",
   
"primer_products" => "The products"
);


   
$r2d_currentPage $pg;
   
$r2d_navBarNumberOfPages count($r2d_navBar_array);       // Number of pages
   
$r2d_navBarCurrentPageNr 0;
   
   
$r2d_navBar_html["navbar"] = "
         <table class=\"r2d_navbar\">
            <tr>
               <td>\n"
;

   foreach(
$r2d_navBar_array as $r2d_navBarLink => $r2d_navBarText)
   {
      
$r2d_navBarPages[] = $r2d_navBarLink;
   }
   
   
reset($r2d_navBar_array);

   foreach(
$r2d_navBar_array as $r2d_navBarLink => $r2d_navBarText)
   {
      
      if (
$r2d_navBarLink == $r2d_currentPage)
      {
         
$r2d_navBar_html["navbar"] .= "<a class=\"r2d_navbar_current\" href=\"" $_SERVER["PHP_SELF"] . "?pg=" $r2d_navBarLink "\"><span></span></a>\n";

         
$r2d_navBarDispCurrentPageNr $r2d_navBarCurrentPageNr 1;
         
         
$r2d_navBarPrevPageNr $r2d_navBarCurrentPageNr 1;
         
$r2d_navBarNextPageNr $r2d_navBarCurrentPageNr 1;
         
$r2d_navBarCurrentPage $r2d_navBarPages[$r2d_navBarCurrentPageNr];
         
$r2d_navBarPrevPage $r2d_navBarPages[$r2d_navBarPrevPageNr];
         
$r2d_navBarNextPage $r2d_navBarPages[$r2d_navBarNextPageNr];
      }
      else
      {
         
$r2d_navBar_html["navbar"] .= "<a class=\"r2d_navbar\" href=\"" $_SERVER["PHP_SELF"] . "?pg=" $r2d_navBarLink "\"><span></span></a>\n";
      }
      
$r2d_navBarCurrentPageNr++;
   }

   
$r2d_navBar_html["navbar"] .= "
               </td>
            </tr>
         </table>"
;



   
$r2d_navBar_html["pagenr"] .= "
         <table class=\"r2d_navbar_prevnext\">
            <tr>
               <td class=\"r2d_navbar_pagenr\">Page 
$r2d_navBarDispCurrentPageNr of $r2d_navBarNumberOfPages</td>
            </tr>"
;
   
$r2d_navBar_html["pagenr"] .= "
               </td>
            </tr>
         </table>\n"
;



   
$r2d_navBar_html["prevnext"] .= "
         <table class=\"r2d_navbar_prevnext\">
            <tr>
               <td class=\"r2d_navbar_prev\">"
;
               
   if (
$r2d_navBarPrevPage)
      
$r2d_navBar_html["prevnext"] .= "<a href=\"" $_SERVER["PHP_SELF"] . "?pg=$r2d_navBarPrevPage\"><img style=\"float: left;\" class=\"r2d_arrow\" src=\"images/arrow_left.gif\" alt=\"Previous\" /><br />Previous page:<br />$r2d_navBar_array[$r2d_navBarPrevPage]</a>";

   
$r2d_navBar_html["prevnext"] .= "
               </td>
               <td  class=\"r2d_navbar_next\">"
;
   
   if (
$r2d_navBarNextPage)
      
$r2d_navBar_html["prevnext"] .= "<a href=\"" $_SERVER["PHP_SELF"] . "?pg=$r2d_navBarNextPage\"><img style=\"float: right;\" class=\"r2d_arrow\" src=\"images/arrow_right.gif\" alt=\"Next\" /><br />Next page:<br />$r2d_navBar_array[$r2d_navBarNextPage]</a>";
               
   
$r2d_navBar_html["prevnext"] .= "
               </td>
            </tr>
         </table>\n"
;

$r2d_navBar $r2d_navBar_html["navbar"];
$r2d_pageNr $r2d_navBar_html["pagenr"];
$r2d_prevNext $r2d_navBar_html["prevnext"]; 
Reply With Quote
  #2  
Old 10-16-2011, 06:24 AM
SpikeSaunders SpikeSaunders is offline
 
Join Date: Oct 2011
Posts: 47
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I don't mean to impose, but this one issue is keeping the website from being functional. So any assistance that can be provided would be great! It may just be something simple I'm missing here.
Reply With Quote
  #3  
Old 10-16-2011, 11:40 AM
kh99 kh99 is offline
 
Join Date: Aug 2009
Location: Maine
Posts: 13,185
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I looked it over and I'm confused. I don't notice anything that's version-specific in the code you posted, and I'm not familiar with that mod. Did you try posting your question in the mod thread?
Reply With Quote
  #4  
Old 10-16-2011, 12:25 PM
nerbert nerbert is offline
 
Join Date: May 2008
Posts: 784
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

If you're getting any result at all look at your page source, messed up HTML is easy to pick out there.

When you have a string of HTML it ought to be enclosed in single quotes -- that way all the double quotes around attribute values don't need to be escaped.

Why do you have \n at the end of so many strings? Do you want line breaks? I have no idea what those will do.
Reply With Quote
  #5  
Old 10-16-2011, 05:45 PM
SpikeSaunders SpikeSaunders is offline
 
Join Date: Oct 2011
Posts: 47
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Hey guys,
First just to be clear, I didn't write the code. Not sure why it is how it is

And yeah I posted this in the mod's thread but this seems more v3-4 specific, then mod related.

Anybody care to school me in how to take a PHP blob of code such as the above, and have it execute off the template? I thought I understood the changes, with having to register the variables and all but that didn't seem to do any good.
Reply With Quote
  #6  
Old 10-16-2011, 09:52 PM
kh99 kh99 is offline
 
Join Date: Aug 2009
Location: Maine
Posts: 13,185
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Well, I'm still not sure. I understand you didn't write the code, but if what you posted were code that rendered a template in vb3, then I could show you how to rewrite it for vb4. But I don't see any template code in what you posted, so it's hard to know what's going on. But I'll take a shot (keep in mind I don't know anything about the mod).

Quote:
Originally Posted by SpikeSaunders View Post
What's going on is in the content/template portion there are three variables
$r2d_pageNr
$r2d_navBar
$r2d_prevNext

OK, if you have a vb3 template that you want to convert to vb4, and it includes only the above three variables, then you should be able to convert it by changing all occurances of those variables to

Code:
{vb:raw r2d_pageNr} (or r2d_navBar or r2d_prevNext)

also, any <if...></if> needs to change to <vb:if...></vb:if> (and any <else/> needs to be <vb:else/>). There are other changes, but let's hope this gets you most of the way.

Here's the vb manual on template syntax, in case that helps: https://www.vbulletin.com/docs/html/...emplates_intro



In the php code, in vb3 you'd just need to define the variables (like in the code you posted) then render the template like maybe:

Code:
eval('$output = "' . fetch_template('template_name') . '";');

In vb4 you have to register the variables. There are two ways to do that, either before the template is being rendered, or "during", I guess you'd say. I'll guess (since I don't see the template code in what you posted) that you want to do it before. So you'd do something like this:

PHP Code:
$templatevalues = array('r2d_pageNr' => $r2d_pageNr
                        
'r2d_navBar' => $r2d_navBar
                        
'r2d_prevNext' => $r2d_prevNext);
vB_Template::preRegister('template_name'$templatevalues); 

Of course you'd change template_name to the actual template name you're using.

Here's an article on how vb templates work (from the php side), if you haven't seen it already: https://vborg.vbsupport.ru/showthread.php?t=228078
Reply With Quote
  #7  
Old 10-16-2011, 10:29 PM
SpikeSaunders SpikeSaunders is offline
 
Join Date: Oct 2011
Posts: 47
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Thanks Kh99, I'll give it a try tomorrow on my day off. I think I may have had the rendering backwards, and wasn't aware the php code would need the IF's changed. Missed that one!

Thanks again,
Reply With Quote
  #8  
Old 10-16-2011, 10:38 PM
kh99 kh99 is offline
 
Join Date: Aug 2009
Location: Maine
Posts: 13,185
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by SpikeSaunders View Post
...wasn't aware the php code would need the IF's changed.
The templates need the <if condition=... tags changed. if's in the php code don't need to change.
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 12:13 PM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2024, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.04094 seconds
  • Memory Usage 2,272KB
  • Queries Executed 13 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)ad_showthread_beforeqr
  • (1)ad_showthread_firstpost
  • (1)ad_showthread_firstpost_sig
  • (1)ad_showthread_firstpost_start
  • (2)bbcode_code
  • (2)bbcode_php
  • (2)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (8)post_thanks_box
  • (8)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (8)post_thanks_postbit_info
  • (8)postbit
  • (8)postbit_onlinestatus
  • (8)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available:
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files:
  • ./showthread.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/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_post_thanks.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_postinfo_query
  • fetch_postinfo
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showthread_start
  • showthread_getinfo
  • forumjump
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • fetch_musername
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete