vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vB5 Programming Discussions (https://vborg.vbsupport.ru/forumdisplay.php?f=263)
-   -   Make array usable in template (https://vborg.vbsupport.ru/showthread.php?t=326943)

BulliM 12-05-2018 02:03 PM

Make array usable in template
 
I need an array of userids in template "conversation_userinfo". This array is written in a html or php file.

HTML-File: 1,2,3,4....
PHP-File:echo array(1,2,3,4...);

It should be used like:

Code:

<vb:if condition="in_array($conversation['userid'], $arrayofuserids)">...</vb:if>
How can I get and set that array as $arrayofuserids in template "conversation_userinfo" ?

noypiscripter 12-05-2018 07:40 PM

Try this:
Code:

{vb:set arrayofuserids, {vb:php array, 1, 2, 3, 4}}

BulliM 12-06-2018 09:20 AM

Hey noypiscripter,

thanks, but this is not, what I ask for. I ask for an example, how to get the array from file into a variable in template. I set a hook:

Code:

ob_start();
include('path/arrayofuserids.php');
$arrayofuserids=ob_get_contents();
ob_end_clean();

Normally, I would expect variable $arrayofuserids is available in template, but is not. Don't know why. May I use the wrong hook (conversation_before_display_controls) ?

shka 12-06-2018 09:30 AM

You have to register your variable for your template (or register global)

In vB4 you can
PHP Code:

ob_start();
include(
'path/arrayofuserids.php');
$arrayofuserids=ob_get_contents();
ob_end_clean();

vB_Template::preRegister('templateUsingYourArray',array('arrayofuserids' => $arrayofuserids)); 

Is vB5 the same syntax?
http://vb5support.com/resources/api/...ethod_register

BulliM 12-06-2018 09:35 AM

Here: https://www.vbulletin.com/docs/html/..._externalfiles they say it is needed on 4+. Logic, 5>4.

I'll try.

EDIT: I get no result. Neither for {vb:raw $arrayofuserids} nor {vb:raw arrayofuserids}

shka 12-06-2018 10:08 AM

Try {vb:debugvardump $arrayofuserids}

BulliM 12-06-2018 10:10 AM

Result: NULL

shka 12-06-2018 12:00 PM

Ok, my mistake. It seems that vB5 doesn't have a plugin/hook system like vB4. The hooks you see are template hooks, you need php hooks.

For my addons I use only api extensions
Simple example:
- create in /forum/core/packages a subdir /testimportarray/api
- create a file arr.php
PHP Code:

<?php

if (!defined('VB_ENTRY')) {
    die(
'Access denied.');
}

class 
TestImportArray_Api_Arr extends vB_Api_Extensions
{
    public 
$product 'testimportarray';
    public 
$developer 'testdev';
    public 
$minver '5.0.0';
    public 
$maxver '6.0.0 Alpha 1';
    public 
$infourl '';
    public 
$checkurl '';
    public 
$AutoInstall 1;
    public 
$title 'TestImportArray';
    public 
$version '1.0.0';

    public 
$extensionOrder 5;

    public static function 
getArray($prevResult)
    {
        return [
1,2,3,4];
    }
}

The subdir name /testimportarray has to be the same as in class TestImportArray_Api_Arr and public $product = 'testimportarray';
The subsubdir name /api is repeated in class TestImportArray_Api_Arr
The filename arr.php has to be the same like in class TestImportArray_Api_Arr

Then check in AdminCP/Add-ons & Hooks/Api Extensions and PHP Hooks if your Api is listed without error

Code:

Add-on: testimportarray
TestImportArray  (1.0.0)        TestImportArray_Api_Arr        Ja        5.0.0        6.0.0 Alpha 1        Ja        5

Then you can use the api function getArray in each template
PHP Code:

{vb:data userIdsarrgetArray}
{
vb:debugvardump $userIds


BulliM 12-06-2018 12:03 PM

I'll try that tomorrow. Thank you.

noypiscripter 12-07-2018 12:22 AM

Quote:

Originally Posted by BulliM (Post 2597678)
Here: https://www.vbulletin.com/docs/html/..._externalfiles they say it is needed on 4+. Logic, 5>4.

vB4 mod system != vB5 mod system, so that isn't logically always true.

Anyway, follow what @shka suggested which is using API extensions. An alternative is to use frontend controller. Frontend controller functions are also accessible from the template. But using API extensions is cleaner and more elegant.


All times are GMT. The time now is 03:18 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.01210 seconds
  • Memory Usage 1,747KB
  • 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
  • (4)bbcode_code_printable
  • (3)bbcode_php_printable
  • (1)bbcode_quote_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (1)pagenav_pagelink
  • (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