Smarty+php скрипт: не работают глобальные переменные

Mira

Guest
Smarty+php скрипт: не работают глобальные переменные

вообщем, проблема в след ..
есть скрипт который самостоятельно работает
поис по сайту
вот когда я его встраиваю в смарти ... то он не видет ни глобалтные переменные передающиеся из функций
что я подразумиваю встраивание в смарти: сайт написан с использованием смарти ... в который инклудится (да как только уже не делал) этот поисковой скрипт

вот такой пример
f_global();
echo $aa;

function f_global(){
global $aa;

$aa = 'dd';
}

должен выводить dd, отдельно в скрипте так и делает.
а вот когда я его через смарти инклудю, то выводит - ничего
 

Mira

Guest
спасибо....
на сколько я понял нужно поставить $request_use_auto_globals=true в пхп файл из которого уже вызывается теплейт, который в свою очередь инклудит пхп скрипт....?!!

но у меня не работат :(

не могли бы вы, если вам не сложно обьяснить мне подоходчивей?:))

спасибо
 

tony2001

TeaM PHPClub
>на сколько я понял нужно поставить $request_use_auto_globals=true в пхп файл
>из которого уже вызывается теплейт, который в свою очередь инклудит пхп
>скрипт....?!!
нет, это надо выставить в самом Smarty.
например, так:
PHP:
$tpl = new Smarty;
$tpl->request_use_auto_globals = true;
/* ... остальные настройки ... */
 

Mira

Guest
templates/search.tpl
---------------------------
{config_load file=page.conf section=$section}

{include file=header.inc.tpl}

{php}
include "search/search3.php";
{/php}

{include file=footer.inc.tpl}

-~{}~ 24.03.04 12:51:

search.php

<?

include 'file_name.inc';

require 'smarty/Smarty.class.php';
$smarty = new Smarty;

//$smarty->compile_check = true;
//$smarty->debugging = true;

//$smarty->assign("section", "search/search1.php");
$smarty->request_use_auto_globals = true;

$smarty->display('search.tpl');

?>
 

Mira

Guest
здесь вызывается файл для поиска.... скрипт отдельно от смарти работающий.

в нем куски кода в которых шас прдемонстрирую проблему...
PHP:
......
get_query();
echo "dd";
print_r ($query_arr);
......
function get_query() {

    global $HTTP_GET_VARS;
    global $query, $stpos, $stype, $query_arr, $wholeword, $querymode, $stop_words_array;
    global $min_length;
    global $numbers;
    
    $query = @$HTTP_GET_VARS["query"];
    $stpos = @$HTTP_GET_VARS["stpos"];
    $stype = @$HTTP_GET_VARS["stype"];
    
    
    $query = strtolower($query);
    $query = preg_replace("/[^a-zр-_$numbers +!-]/"," ",$query);
    $query_arr_dum = preg_split("/\s+/",$query);

    foreach($query_arr_dum as $word) {
        if (strlen($word) < $min_length) { continue; }
//        if (array_key_exists($word,$stop_words_array)) { continue; }
        $query_arr[] = $word;
    }    

    for ($i=0; $i<count($query_arr); $i++) {
        if (preg_match("/\!/", $query_arr[$i]))   { $wholeword[$i] = 1;} # WholeWord
        $query_arr[$i] = preg_replace("/[\! ]/","",$query_arr[$i]);
        if ($stype == "AND")     { $querymode[$i] = 2;} # AND
        if (preg_match ("/^\-/", $query_arr[$i])) { $querymode[$i] = 1;} # NOT
        if (preg_match ("/^\+/", $query_arr[$i])) { $querymode[$i] = 2;} # AND
        $query_arr[$i] = preg_replace("/^[\+\- ]/","",$query_arr[$i]);
    }
    
    if ($stpos <0) {$stpos = 0;};    
	print_r ($query_arr);
}
-~{}~ 24.03.04 13:01:

----
выводит
Array ( [0] => design ) dd
а дожнен
Array ( [0] => design ) dd Array ( [0] => design )
 

tony2001

TeaM PHPClub
>здесь вызывается файл для поиска.... скрипт отдельно от смарти работающий.
а почему скрипт, работающий отдельно от Смарти инклудится в шаблон?
какой смысл в использовании шаблонов, если ты все равно в результате смешиваешь логику и представление?
 

Mira

Guest
ну это только в одном файле.... так как поиск этот не мой...
могу конечно код полнвтью вставить в тплку но какая разница?
 

tony2001

TeaM PHPClub
>>какой смысл в использовании шаблонов, если ты все равно в результате смешиваешь логику и представление?
>могу конечно код полнвтью вставить в тплку но какая разница?
а в чем разница? код вставлять или инклудить - все равно шаблоны тут уже за уши притянуты.
 

Mira

Guest
да пофик , я и такое делал .... вопрос то не в этом
 

tony2001

TeaM PHPClub
Mira
как обращаться к глобальным переменным в шаблоне - описано по ссылке, которую я дал.
остальное - это ваши трудности, созданные вами же.
 

Mira

Guest
ок, огромное спасибо ... я оценил вашу помощь. позвольте если будут еще какие то вопросы обрашаться к вам.

еще раз спасибо....
 

tony2001

TeaM PHPClub
Mira
ты можешь выполнить чужой скрипт, получить его результаты и результаты уже назначить в шаблон через $smarty->assign ?
имхо это решит все твои проблемы.
 

Mira

Guest
о, этом я не думал .....
спасибо обязательно попробую

-~{}~ 24.03.04 16:09:

хм ... подожди а что значит через $smarty->assign ?


search.php
PHP:
<?

include 'file_name.inc';

require 'smarty/Smarty.class.php';
$smarty = new Smarty;

//$smarty->compile_check = true;
//$smarty->debugging = true;

$smarty->assign("html_search_page", "search/search3.php");
$smarty->request_use_auto_globals = true;

$smarty->display('search.tpl');

?>
templates/search.tpl
PHP:
{config_load file=page.conf section=$section}

{include file=header.inc.tpl}

{php}
echo $html_search_page
{/php}

{include file=footer.inc.tpl}
-~{}~ 24.03.04 16:10:

мне кажеться я не правильно понял .. не думаю что это сработает :(
 

tony2001

TeaM PHPClub
>$smarty->assign("html_search_page", "search/search3.php");
..
>мне кажеться я не правильно понял .. не думаю что это сработает
вот-вот..
не имя файла, а результат.
что там возвращается?
массив записей?
вот и назначь этот массив в шаблон.
 

Mira

Guest
хм .... но файл сеарч огромный, в нем не только одна функция которую я описываю ....

лоично предположить, что при том варианте который я предложил все должно работать
search.php > search.tpl > search3.php

с удовольсвием выслушаю другие советы...

-~{}~ 25.03.04 19:43:

всеравно все глухо как в танке....

зы. посоветуйте , с линками желательно, хороший поиск на пхп (и с базами и без) спасибо
 
Сверху