форум vBSupport.ru > vBSupport.ru > Гурушник > Кодер
  • »
VBsupport перешел с домена .ORG на родной .RU Ура! Пожалуйста, обновите свои закладки - VBsupport.ru
 
 
 
 
Cybermama
Эксперт
 
Cybermama's Avatar
Default Передать переменную из плагина в шаблон
0

Всю голову сломала, ничего не понимаю...

в общем, есть плагин на blog_entry_start c кодом

PHP Code:
$myvar='12345';
$search='$bloginfo[comments_visible]</span>';
$vbulletin->templatecache['blog_show_entry']=str_replace($search,$search.fetch_template('mytemplate'), $vbulletin->templatecache['blog_show_entry']); 
(это вывод конкретной записи блога с комментами)

и плагин на blog_list_entries_start c кодом
PHP Code:
$myvar='12345';
$search='<!-- trackbacks -->';
$vbulletin->templatecache['blog_entry']=str_replace($search,$search.fetch_template('mytemplate'), $vbulletin->templatecache['blog_entry']); 
(это вывод списка записей)

ну и в mytemplate
Code:
$myvar
бла-бла-бла-текст

Оба плагина выполняются, текстовая фраза выводится во всех нужных местах, а переменная $myvar в первом плагине передаётся и отображается шаблоном, а во втором - нет Что не так...

Last edited by Cybermama : 09-30-2009 at 03:56 PM.
Bot
Yandex Bot Yandex Bot is online now
 
Join Date: 05.05.2005
Реклама на форуме А что у нас тут интересного? =)
 
 
OldEr
Специалист
Master
 
OldEr's Avatar
Default
1

Cybermama, "местоположение модуля" проверь.
 
 
Cybermama
Эксперт
 
Cybermama's Avatar
Default
0

OldEr, местоположение модуля по идее правильное, потому что остальная часть шаблона выводится, если в другое место поместить - то вообще ничего не выводится.
Я пробовала отдельно ещё сделать модуль с определением переменной $myvar в других местах (всех, связанных с нужной страницей), всё равно не берёт её :-(
 
 
Yoskaldyr
Специалист
Default
1

Cybermama, надо проверять видимость переменной не там где идет замена внутри templatecache, а там где идет fetch_template
т.е. сам код шаблона то мы изменили и подставили внутрь не значение переменной а фразу с именем переменной, т.е. там где
PHP Code:
eval('$somevar = '.fetch_template('blog_show_entry').';'); 
переменная $myvar видна, а там где
PHP Code:
eval('$somevar1 = '.fetch_template('blog_entry').';'); 
- нет (из-за того что это внутри класса или внутри функции). Обойти можно передавая через $show переменную - обычно видна везде (ну или в очень многих местах кода)

Last edited by Yoskaldyr : 10-01-2009 at 12:53 AM.
 
 
Cybermama
Эксперт
 
Cybermama's Avatar
Default
0

Ну я примерно так и думала
Quote:
Originally Posted by Yoskaldyr View Post
Обойти можно передавая через $show переменную
а это как? А если переменная у меня - массив?
 
 
kerk
k0t
 
kerk's Avatar
Default
1

Quote:
Originally Posted by Cybermama View Post
а это как?
PHP Code:
if($your_condition)
{
     
$show['something'] = true;
}else{
     
$show['something'] = false;

 
 
Yoskaldyr
Специалист
Default
1

Cybermama, Так $show - это обычный массив и в него можно что угодно поместить - т.е. получим просто вложенный массив:
PHP Code:
$myvar=array('one' => 1'two' => 2);

$show['name_for_myvar'] = $myvar;

//или по ссылке так если потом $myvar разростется до больших размеров:

$show['name_for_myvar'] =& $myvar
 
 
Cybermama
Эксперт
 
Cybermama's Avatar
Default
0

Урра!! Кажется всё получилось :-)))))
 


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




All times are GMT +4. The time now is 10:06 AM.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Loading...