View Single Post
  #719  
Old 12-08-2011, 12:49 AM
Rocket2009 Rocket2009 is offline
 
Join Date: Mar 2009
Posts: 19
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

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
Reply With Quote
 
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01111 seconds
  • Memory Usage 1,825KB
  • Queries Executed 11 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD_SHOWPOST
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (2)bbcode_html
  • (2)bbcode_php
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_box
  • (1)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (1)post_thanks_postbit_info
  • (1)postbit
  • (1)postbit_onlinestatus
  • (1)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • reputationlevel
  • showthread
Included Files:
  • ./showpost.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
  • showpost_start
  • bbcode_fetch_tags
  • bbcode_create
  • postbit_factory
  • showpost_post
  • 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
  • showpost_complete