Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Вопрос по шаблонизатору!!!
 
 автор: podpole   (04.05.2007 в 22:25)   письмо автору
 
 

Здравствуйте, нашол тут на форуме несколько листингов шаблонизаторов, некоторые из них не работают вообще, а некоторые работают, но некорректно...
И я хотел бы спросить у более опытных пользователей, почему не работает вот такая функция:

<?
function replacetag($tpl_file$page_vars

        
$search = array(); 
        
$keys array_keys($page_vars); 
        for(
$i 0$i sizeof($page_vars); $i++) 
        { 
                
$search[] = "'{ "$keys[$i] ."}'i"
        } 
        return 
preg_replace($search$page_vars$tpl_file); 

$page_vars['PRICOL'] = 'Привет!'
$tpl_index=("http://site.ru/tpl//index.tpl");
$page replacetag($tpl_index$page_vars); 
include 
$page;
?>

В файле index.tpl пишу {PRICOL}, и на этом месте по идее должно появиться слово "Привет!", но так и остаёться {PRICOL}...
Что нужно изменить?

   
 
 автор: bronenos   (04.05.2007 в 22:45)   письмо автору
 
   для: podpole   (04.05.2007 в 22:25)
 

не { а \{
потому что в регулярных { это спец символ, как и его пара }

   
 
 автор: podpole   (04.05.2007 в 22:54)   письмо автору
 
   для: bronenos   (04.05.2007 в 22:45)
 

Непонял, это где нужно изменить? В шаблонизаторе или в шаблоне вставить не {PRICOL} а \{PRICOL\} или вообще не там и нетам? По подробнее, если можно!

   
 
 автор: bronenos   (04.05.2007 в 23:18)   письмо автору
 
   для: podpole   (04.05.2007 в 22:54)
 

'/\{PRICOL\}/'

   
 
 автор: podpole   (05.05.2007 в 07:56)   письмо автору
 
   для: bronenos   (04.05.2007 в 23:18)
 

Всёравно не работает(((
Темболее не очень красиво выглядит! Нужно чтобы просто было {PRICOL}...

   
 
 автор: Valick   (05.05.2007 в 08:07)   письмо автору
 
   для: podpole   (05.05.2007 в 07:56)
 

Fast Template

   
 
 автор: bronenos   (05.05.2007 в 08:54)   письмо автору
 
   для: podpole   (05.05.2007 в 07:56)
 

тогда вообще str_replace

   
 
 автор: FroNiTy   (05.05.2007 в 08:58)   письмо автору
 
   для: podpole   (04.05.2007 в 22:25)
 


<?
function replacetag($tpl_file$page_vars

        
$search = array(); 
        
$keys array_keys($page_vars); 
        for(
$i 0$i sizeof($page_vars); $i++) 
        { 
                
$search[] = "/\{"$keys[$i] ."\}/i";
        } 
        return 
preg_replace($search$page_vars$tpl_file);

$page_vars['PRICOL'] = 'Привет!'
$tpl_index=file_get_contents("file.tmpl");
$page replacetag($tpl_index$page_vars); 
echo 
$page;
?> 

   
 
 автор: podpole   (05.05.2007 в 09:38)   письмо автору
 
   для: FroNiTy   (05.05.2007 в 08:58)
 

Вот это работает! Спасибо!

   
 
 автор: podpole   (05.05.2007 в 09:46)   письмо автору
 
   для: FroNiTy   (05.05.2007 в 08:58)
 

А сюда: $page_vars['PRICOL'] = 'Привет!'; вместо слово прикол почемуто нельзя вставить чтото вроде require_once("files.php"); и даже переменные не отображает, только текст! Или я не правильно чтото делаю?

   
 
 автор: FroNiTy   (05.05.2007 в 09:52)   письмо автору
 
   для: podpole   (05.05.2007 в 09:46)
 

поясните вопрос... что куда? что на что заменить?

   
 
 автор: podpole   (05.05.2007 в 10:03)   письмо автору
 
   для: FroNiTy   (05.05.2007 в 09:52)
 

Я хочу чтобы когда дизайнер делает шаблон, на месте где он допустим хочет чтобы выводились новости, писал слово {NEWS} , а для этого требуеться чтобы скрипт обрабатывающий этот шаблон, поставил в место этого слова не слово допустим "Привет!", а присоеденил другую страницу, или допустим вызвал бы функцию какуюнибудь...
И я с этой целью хочу вставить вместо слова Привет! php-код, типа require_once($news), а он вместо страницы просто печатает его, а пробывал я в разных вариантах, и кавычки менял, и ";" ставил, но он не хочет ничего выводить...

   
 
 автор: FroNiTy   (05.05.2007 в 10:56)   письмо автору
 
   для: podpole   (05.05.2007 в 10:03)
 


<?
function replacetag($tpl_file$page_vars

        
$search = array(); 
        
$keys array_keys($page_vars); 
        for(
$i 0$i sizeof($page_vars); $i++) 
        { 
                
$search[] = "/\{"$keys[$i] ."\}/i";
                
$page_vars[$keys[$i]] = file_get_contents($page_vars[$keys[$i]]);
        } 
        return 
preg_replace($search$page_vars$tpl_file);
}
$page_vars['NEWS'] = "http://localhost/news.php";
$tpl_index=file_get_contents("names.txt");
$page replacetag($tpl_index$page_vars); 
echo 
$page;
?>  


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

   
 
 автор: podpole   (05.05.2007 в 11:13)   письмо автору
 
   для: FroNiTy   (05.05.2007 в 10:56)
 

Почему то выводит не результат работы скрипта, а сам текст скрипта.... Как же так сделать.... Я если честно из скрипта не понимаю: что значит $i, что делает $search[] = "/\{". $keys[$i] ."\}/i"; и что такое return preg_replace....
Я думал что это будет проще...

   
 
 автор: podpole   (05.05.2007 в 10:55)   письмо автору
 
   для: FroNiTy   (05.05.2007 в 09:52)
 

А... Всё понял! Только теперь появился другой вопрос!
Оказываеться нужно было писать require_once('files.php') без кавычек!
Но почемуто это всё отображаеться не в том месте где стоит {NEWS}, а выше всего содержимого, а должно быть внутри, т.е. там, где стоит {NEWS}! Как это исправить?

   
 
 автор: FroNiTy   (05.05.2007 в 10:57)   письмо автору
 
   для: podpole   (05.05.2007 в 10:55)
 

у вас просто require_once('files.php') сработал... к функции это никак не относится

   
 
 автор: podpole   (05.05.2007 в 17:49)   письмо автору
 
   для: FroNiTy   (05.05.2007 в 10:57)
 

Никто так мне и не подскажет как можно вывести результат выполнения скрипта а не его содержимое....

   
 
 автор: bronenos   (05.05.2007 в 17:57)   письмо автору
 
   для: podpole   (05.05.2007 в 17:49)
 

указать полный адрес вместе с http

   
 
 автор: podpole   (05.05.2007 в 18:09)   письмо автору
 
   для: bronenos   (05.05.2007 в 17:57)
 

СПАСИБО!!! Заработало! Если теперь будет работать и подключение результата выполнения скрипта и добавление текста то с меня бутылка и тему можно считать закрытой)))

   
 
 автор: podpole   (05.05.2007 в 21:29)   письмо автору
 
   для: podpole   (05.05.2007 в 18:09)
 

Всётаки немножко не так как хотелось работает...
Вроде всё нормально, и сценарий выводящий новости прикрепил в нужное место, но когда нажимаешь на ссылку Далее, чтобы прочитать полную новость в заголовке передаються переменные, которые не воспринимаються сценарием, потамучто он не присоеденяеться, а присоеденяеться только лишь результат работы сценария, не получившего значений переменных....
И почемуто кажеться что выход совсем рядом...
Я пытаюсь сценарий вывода новостей объеденить с индексом в один файл, но тогда нет возможности подключить шаблонизатор, а без него тоже некуда!
Какие есть мысли?

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования