vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vBulletin 4 Articles (https://vborg.vbsupport.ru/forumdisplay.php?f=242)
-   -   [HOW TO - vB4] Create your own vBulletin page (https://vborg.vbsupport.ru/showthread.php?t=228112)

rokslide 11-19-2011 12:17 PM

OK, this may be a dumb question, but here goes:

I followed the instructions of creating a new tab. Worked perfectly. Then, I followed these directions to create a new page in vBulletin and it worked perfectly. Now, I would like to incorporate all of my existing html pages (outside of vBulletin) I have created for my website within vBulletin. How do I link up the new page I created within Vbulletin to my existing pages? I want all of my pages to be within vBulletin so thatall of the formatting remains exactly the same. Do I copy and paste all of the html into the new template I just created, or can you simply direct the new template to point at the existing html file? Hope I didn't confuse everyone.

Thanks,

Lynne 11-19-2011 03:02 PM

You will need to copy your page html into a new template that is called in the php page you make.

cellarius 11-21-2011 09:39 PM

And make sure you have valid html afterwards - you need to copy just stuff between the body tags, not the head etc., or you will end up with doubles.

Shadow666 12-02-2011 03:54 AM

Hi,

I have this:

test.php
Code:

<?php

// ####################### SET PHP ENVIRONMENT ###########################
error_reporting(E_ALL & ~E_NOTICE);

// #################### DEFINE IMPORTANT CONSTANTS #######################

define('THIS_SCRIPT', 'test');
define('CSRF_PROTECTION', true); 
// change this depending on your filename

// ################### PRE-CACHE TEMPLATES AND DATA ######################
// get special phrase groups
$phrasegroups = array();

// get special data templates from the datastore
$specialtemplates = array();

// pre-cache templates used by all actions
$globaltemplates = array('TEST',
);

// pre-cache templates used by specific actions
$actiontemplates = array();

// ######################### REQUIRE BACK-END ############################
// if your page is outside of your normal vb forums directory, you should change directories by uncommenting the next line
// chdir ('/path/to/your/forums');
require_once('./global.php');

// #######################################################################
// ######################## START MAIN SCRIPT ############################
// #######################################################################

$navbits = construct_navbits(array('' => 'Test Page'));
$navbar = render_navbar_template($navbits);

// ###### YOUR CUSTOM CODE GOES HERE #####
$pagetitle = 'My Page Title';

// ###### NOW YOUR TEMPLATE IS BEING RENDERED ######

$templater = vB_Template::create('TEST');
$templater->register_page_templates();
$templater->register('navbar', $navbar);
$templater->register('pagetitle', $pagetitle);
$templater->register('includebody', $includebody);
print_output($templater->render());

?>

template TEST
Code:

{vb:stylevar htmldoctype}
<html xmlns="http://www.w3.org/1999/xhtml" dir="{vb:stylevar textdirection}" lang="{vb:stylevar languagecode}" id="vbulletin_html">
  <head>
    <title>{vb:raw vboptions.bbtitle} - {vb:raw pagetitle}</title>
    {vb:raw headinclude}
    {vb:raw headinclude_bottom}
  </head>
  <body>
   
    {vb:raw header}
   
    {vb:raw navbar}
   
    <div id="pagetitle">
      <h1>{vb:raw pagetitle}</h1>
    </div>
   
{vb:raw includebody}
   
    {vb:raw footer}
  </body>
</html>

Plugin global_start
Code:

if (THIS_SCRIPT == 'test')
{
ob_start();
include('./test/game/start.php');
$includebody = ob_get_contents();
ob_end_clean();
}

I want to upgrade the plugin from global_start to global_bootstrap_init_start, as global_start has been deprecated since 4.0.2.

When I changed the global_start to global_bootstrap_init_start the php file that was been called no longer displayed.

Can anyone help with this please.

kh99 12-02-2011 02:21 PM

Quote:

Originally Posted by Shadow666 (Post 2273908)
Hi,

I have this:....

I think your problem is that global_bootstrap_init_start code is called inside a function, so your $includebody variable is not global. You could fix it by adding a "global $includebody" statement.

But if that plugin is only being executed when your custom script is running, you could also just move the plugin code to in to your test.php script. It will work exactly the same - there's no reason that code has to be at the global_start hook, it's just that that's a good place to put it if you want to include an external file when you're not writing a custom php script.

Shadow666 12-02-2011 07:53 PM

Quote:

Originally Posted by kh99 (Post 2274021)
I think your problem is that global_bootstrap_init_start code is called inside a function, so your $includebody variable is not global. You could fix it by adding a "global $includebody" statement.

But if that plugin is only being executed when your custom script is running, you could also just move the plugin code to in to your test.php script. It will work exactly the same - there's no reason that code has to be at the global_start hook, it's just that that's a good place to put it if you want to include an external file when you're not writing a custom php script.

Thank you that fixed it. :)

satlazone 12-04-2011 11:34 AM

Quote:

Originally Posted by kh99 (Post 2259527)
OK, well, it's clearly some kind of encoding issue. I found this in the php manual: http://www.php.net/manual/en/language.types.string.php



So do you happen to know how your script files are encoded (like what your OS or editor default encoding is, I guess). And how do you have your vb configured?

Or I suppose we could take another guess and try utf8_encode(). :)

I did try to use utf8_encode
It did change the characters but it's still not written in Hebrew.
example: ???? ????? ???? ???

I didn't understand how I can solve it via the link you have provided.
Do you have any other suggestions?

Rocket2009 12-08-2011 12:49 AM

Over the past day I have used this tutorial and thread and others to create pages that link to menu options and it is working exactly as expected.

Now I want to embed a knowledge base tool (KBPublisher) within a vb4 page so it has the vb menus over it and vbstyles. I did this in vb3 and am now working the vb4 issues with this tutorial.

I am at the 98% point. The kb tool integrates and works well all with the vb menus. The problem is that it doesn't recognize the user login information and I am having trouble figuring out how to pass the information through the rendering process. All of my test cases recognized the user including the php file if called directly rather than through the kb tool, including highlighting the added buttons. So most of the information is getting through.

I am hoping to get help on how to pass the userinfo through the rendering process so I can display the kb system within this vbpage. It looks pretty awesome, but just keeps asking my sign-up even though I am logged in and any page I shift to recognizes me.

My php code is pretty vanilla and is called knowledgebase.php:

PHP Code:

<?php

// ####################### SET PHP ENVIRONMENT ###########################
error_reporting(E_ALL & ~E_NOTICE);

// #################### DEFINE IMPORTANT CONSTANTS #######################

define('THIS_SCRIPT''knowledgebase');
define('CSRF_PROTECTION'true);  
// change this depending on your filename

// ################### PRE-CACHE TEMPLATES AND DATA ######################
// get special phrase groups
$phrasegroups = array();

// get special data templates from the datastore
$specialtemplates = array();

// pre-cache templates used by all actions
$globaltemplates = array('KBPublisher',
);

// pre-cache templates used by specific actions
$actiontemplates = array();

// ######################### REQUIRE BACK-END ############################
// if your page is outside of your normal vb forums directory, you should change directories by uncommenting the next line
chdir ('/home/touring7/public_html/');
require_once(
'./global.php');

// #######################################################################
// ######################## START MAIN SCRIPT ############################
// #######################################################################

$navbits construct_navbits(array('' => 'Test Page'));
$navbar render_navbar_template($navbits);

// ###### YOUR CUSTOM CODE GOES HERE #####
$pagetitle 'My Page Title';



// ###### NOW YOUR TEMPLATE IS BEING RENDERED ######

$templater vB_Template::create('KBPublisher');
$templater->register_page_templates();
$templater->register('navbar'$navbar);
// $templater->register('pagetitle', $pagetitle);
print_output($templater->render());

?>

My template follows the tutorial plus uses the template provided by the KBPublisher software and is naturally called KBPublisher (my template):

HTML Code:

{vb:stylevar htmldoctype}
<html xmlns="http://www.w3.org/1999/xhtml" dir="{vb:stylevar textdirection}" lang="{vb:stylevar languagecode}" id="vbulletin_html">
  <head>
    <title>{vb:raw vboptions.bbtitle} - {vb:raw pagetitle}</title>
    {vb:raw headinclude}
    {vb:raw headinclude_bottom}

            <title>{meta_title}</title>
        <meta http-equiv="content-type" content="text/html; charset={meta_charset}" />
        <meta http-equiv="content-language" content="{meta_content_lang}" />
        <meta name="keywords"  content="{meta_keywords}" />
        <meta name="description"  content="{meta_description}" />
        <meta name="robots"  content="{meta_robots}" />
       
        <!--[if IE]>
        <link rel="stylesheet" type="text/css" href="{common_ie_css}" />
        <![endif]-->

        <link rel="stylesheet" type="text/css" href="{common_css}" />
        <link rel="stylesheet" type="text/css" href="{common_view_css}" />
        {style_css_links}
        {rss_head_links}
        <script src="{base_href}client/jscript/common.js" type="text/javascript"></script>

       

  </head>
  <body>

    {vb:raw header}
   
    {vb:raw navbar}
   
    <div id="pagetitle">
      <h1>{vb:raw pagetitle}</h1>
    </div>
   
    <h2 class="blockhead">Title</h2>
    <div class="blackbody">

{content}

    </div>
   
    {vb:raw footer}
  </body>
</html>

The key aspect is that the KBPublisher knowledgebase software requires a minimum of three tags in the html code of the kbpublisher system template file

{style_css_links}, {rss_head_links}, and {content}

as shown in the default kbpublisher template file shown here:

HTML Code:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
        <title>{meta_title}</title>
        <meta http-equiv="content-type" content="text/html; charset={meta_charset}" />
        <meta http-equiv="content-language" content="{meta_content_lang}" />
        <meta name="keywords"  content="{meta_keywords}" />
        <meta name="description"  content="{meta_description}" />
        <meta name="robots"  content="{meta_robots}" />
       
        <!--[if IE]>
        <link rel="stylesheet" type="text/css" href="{common_ie_css}" />
        <![endif]-->

        <link rel="stylesheet" type="text/css" href="{common_css}" />
        <link rel="stylesheet" type="text/css" href="{common_view_css}" />
        {style_css_links}
        {rss_head_links}
        <script src="{base_href}client/jscript/common.js" type="text/javascript"></script>
</head>
<body>
       
        your html here
       
        {content}

        your html here
       
</body>
</html>


then the KBPublisher system renders the page replacing the {tags} with the appropriate code. Obviously the {content} tag is where the KB software gets inserted (it's great).

KBPublisher is open source and I can modify the index.php file if needed. I did it for the VB3 integration but naturally I need to minimize the number of hacks to make support easy. However, inside the index.php file for KBPublisher is the following comment:

PHP Code:


// example of adding global variable to template
// in template you should have a template tag - {global_test}
//$page->assign('global_test', '<b>test global variable</b>'); 

So I could potentially assign a value to 'global test' inside the index.php file for KBPublisher say and then add a {global test} tag within the template to pass a value to it. In the KB3 implementation I used this pass different HTML based upon user status.

The way the kb software works is that when I call its index.php I have already specified in a configuration file the name of the template file, in this case knowledgebase.php, which uses the vb rendering system which calls the vb template.

Everything displays just the way I want, but it keeps showing the user as not logged in. I know this is a long entry, but I wanted to be complete for the help. Plus, if we get this solved, others might like to know how to integrate a comprehensive knowledgebase tool within a vb page.

I have experimented with various incarnations of input security token but I either didn't get the format correct, the location correct, or was otherwise unsuccessful

kh99 12-08-2011 02:38 AM

Check your "Path to Save Cookies" setting under Settings > Options > Cookies and HTTP Header Options in the adminCP. Like it says in the comments, this must be set to / if you want the vb cookies to be sent no matter which directory your custom page is in.

Rocket2009 12-08-2011 03:00 AM

Quote:

Check your "Path to Save Cookies" setting under Settings > Options > Cookies and HTTP Header Options in the adminCP. Like it says in the comments, this must be set to / if you want the vb cookies to be sent no matter which directory your custom page is in.
Yes, at

admincp -> options -> cookies and HTTP Header Options

Path to Save Cookies is set to a ; /

I also experimented with Cookie domain selected .touringmotorgliders.org as well as the default 'blank' to my domain .touringmotorgliders.org with no difference.

Incidentally, I can put knowledgebase.php into the same directory as the forum and it doesn't make a difference. The index.php file for the kbpublisher system needs to be in its directory. I can add the global cast in that file, but it doesn't make any difference, unless I can find a way to pass the user information.

Thanks.


So I am still experimenting ...


All times are GMT. The time now is 12:30 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.05182 seconds
  • Memory Usage 1,813KB
  • 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
  • (3)bbcode_code_printable
  • (2)bbcode_html_printable
  • (2)bbcode_php_printable
  • (4)bbcode_quote_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (4)pagenav_pagelink
  • (3)pagenav_pagelinkrel
  • (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