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

 
 
Thread Tools Display Modes
Prev Previous Post   Next Post Next
  #4  
Old 07-02-2011, 09:26 AM
kh99 kh99 is offline
 
Join Date: Aug 2009
Location: Maine
Posts: 13,185
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I was just figuring out the same thing. As it turns out, the compile function is supposed to return php code that results in a string. I think maybe my example worked by accident because a single word is a 'bare word' that gets interpreted as a string. So sorry about that.

So I changed your compile function to be like this:

Code:
    public static function compile(vB_Node $main_node, vB_TemplateParser $parser)
    {
        $output = "'";

        foreach ($main_node->attributes AS $template)
        {
            if ( strripos($template, '.js') )
            {
                $output .= vB_Template::create($template)->render();
            }
        }

        return $output . "'";
    }

and the error goes away, but there's still no output. I get this in the output:

Code:
<!-- BEGIN TEMPLATE: headerjs -->
 
<!-- END TEMPLATE: headerjs -->

as you pointed out. I don't know know why the '.' is missing from the template name.

At this point I'm confused about what's going on.

BTW, you probably know that your tag code only runs when the template is compiled, so if you use that code to insert another template then that other template gets changed, it won't be reinserted unless you go back and edit the template with the tag. Maybe what you want to do is something like some of the other curly tag functions do - insert a call to a function that will render the .js template, then it will be called when template with the jsinline tag is rendered.

ETA: actually that seems to work, although I don't really understand why. This is what I ended up with:

Code:
require_once(DIR . '/includes/template_curly_defs.php');

class vB_TemplateParser_CurlyJsinline extends vB_TemplateParser_Curly
{
    public static function validate(vB_Node $main_node, vB_TemplateParser $parser)
    {
        $errors = array();
        if (!array_key_exists(0, $main_node->attributes))
        {
            $errors[] = 'no_variable_specified';
        }

        return $errors;
    }

    public static function compile(vB_Node $main_node, vB_TemplateParser $parser)
    {
        $output = '';

        foreach ($main_node->attributes AS $template)
        {
            if ( strripos($template, '.js') )
            {
                $output .= 'vB_Template::create(\'' . $template . '\')->render()';
            }
        }

        return $output;
    }
}
Reply With Quote
 


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 09:42 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.04429 seconds
  • Memory Usage 2,623KB
  • Queries Executed 12 (?)
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
  • (9)bbcode_code
  • (2)bbcode_html
  • (8)bbcode_php
  • (1)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)showthread_list
  • (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_threadedmode.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_threaded
  • showthread_threaded_construct_link
  • 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