2013-07-22 50 views
3

我想在vbulletin的另一頁上使用{vb:raw human_verify}嗎?如何在全球範圍內使用vbulletin變量?

當我在另一個模板中使用這個變量時,它不起作用。

它完美對一些模板(註冊,搜索,..)但在另一個模板從來沒有工作..

我嘗試添加新的插件,它使全球瓦爾:

vB_Template::preRegister('activity_home',array('includedphp ' => $includedphp)); 

但這隻適用於新(自定義)vbulletin vb:原始變量。

如何克服這一點?

在此先感謝

回答

2

我假設你使用VB4和你的變量在includedphp設置。 然後,你需要改變:

activity_home

有了,你需要使用變量(如果你想將其添加到幾個模板做多次)模板的名稱。所以基本上:使用「FORUMHOME」把它放到你的論壇主目錄或「標題」中以將它放在標題上...

This link可能有幫助(參見「保存到數組中並預註冊以用於現有/股票模板「部分)。 希望有所幫助。

編輯:

{vb:raw my_insertvar} 
+0

我知道這篇文章,但沒有注意到它也包含了現有的模板。但我無法查看代碼塊。你可以在這裏複製它嗎? –

+0

@DZZZO:看我的編輯 – loudev

+0

運氣不好。不工作。 –

1

我只是糾結這個時間太長了......那個例子就是:

$templater = vB_Template::create('mytemplate'); // Define a template 
$templater->register('my_var', $my_var); // define some variables 
$templater->register('my_array', $my_array); 
$templatevalues['my_insertvar'] = $templater->render(); // Save the template into a variable, "note that the data needs to be saved into an array a simple variable will throw an error" 
vB_Template::preRegister('FORUMHOME', $templatevalues); // "insert" your variable into the FORUMHOME template 

然後你就可以與線FORUMHOME模板添加新模板可怕。 Niak的沒有錯。我感覺原作者並不十分清楚如何向現有模板註冊簡單變量。

我把上面的例子直接複製/粘貼到插件中,將$ my_var設置爲「test」,FORUMHOME模板中的{vb:raw my_insertvar}就不起作用。這是我最初試圖代碼:

$my_var = "test"; 

$templater = vB_Template::create('mytemplate'); // Define a template 
$templater->register('my_var', $my_var); // define some variables 
$templatevalues['my_insertvar'] = $templater->render(); 
vB_Template::preRegister('FORUMHOME', $templatevalues); 

請,如果有人知道我在不能夠訪問原始的例子my_var值做錯了,讓我知道!我無法爲我的生活工作。它不斷吐出<!-- BEGIN TEMPLATE: mytemplate --><!-- END TEMPLATE: mytemplate -->

===============================工作示例============= ==================

然後,我找到了一個更好的例子。原來你只需要兩條線就可以工作:

  1. 轉到Plugins & Products>Plugin Manager
  2. 滾動至底部,然後單擊[Add New Plugin]
  3. 我選擇了鉤global_bootstrap_init_start
  4. 插入以下兩行(navbar是我註冊testVar_output到模板):

    $testVar = "This is a test."; 
    
    vB_Template::preRegister('navbar',array('testVar_output' => $testVar)); 
    
  5. 將這個鱈魚E在navbar

    {VB:原料testVar_output}

  6. 注意,vb:raw變量名是在array()LEFT的值。
  7. 似乎沒有必要使用$templater->render()函數來預先註冊變量,儘管我見過所有的例子,說你需要它。只需註冊變量,然後使用變量!就這麼簡單!
  8. 我知道這不允許模板緩存,這就是爲什麼我很擔心,我不能讓最初的例子的工作...(幫助!)
+0

@Niak - 想法? – SeanKendle

+0

我只能假設,因爲'navbar'是一個內置模板,它被緩存了,並且這個變量會被緩存,所以不需要創建自己的模板然後緩存它......這是一個錯誤的假設? – SeanKendle

相關問題