[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: шаблонизатор вывода
45king
как сделать шаблонизатор например есть файл индекс пхп там пхп код и есть файл индекс тпл

нужно в индекс тпл вывести инфу с индекса пхп типа такого вида

<tr>

<td>
{PM_IMG}</td>
</tr>


как такое реализовать



Спустя 1 минута, 58 секунд (4.01.2012 - 00:47) Игорь_Vasinsky написал(а):
file_get_contents()
str_replace()
preg_replace()

ob_start() даже можно.

1.получил шаблон в переменную
2.произвёл замену
3.вывел шаблон

Спустя 23 минуты, 21 секунда (4.01.2012 - 01:10) 45king написал(а):
Игорь_Vasinsky
а пример можно

Спустя 6 минут, 47 секунд (4.01.2012 - 01:17) Игорь_Vasinsky написал(а):
файл шаблона template.tpl

<html>
<title>
{TITLE}</title>
<body>

{HEADER}
<hr />
{TEXT}
</body>
</html>


файл модуля (+ фронт контроллера) - modul.php

<?php

$content = file_get_contents('template.tpl');

$marks = array('{TITLE}', '{HEADER}', '{TEXT}');
$data = array('Мой титл страницы', 'Заголовок страницы', 'бла-бла-бла-бла-бла-');

echo str_replace($marks, $data, $content);

?>



запусти modul.php

Спустя 46 минут, 35 секунд (4.01.2012 - 02:03) 45king написал(а):
Игорь_Vasinsky
а если я замени массиф на такой

array(
'SHOW_FORUMS' => $forums_count);

то как мне произвести замену

Спустя 2 минуты, 41 секунда (4.01.2012 - 02:06) Игорь_Vasinsky написал(а):
слушай.. я не пробывал... вот и проверь - в теории - просто кол-во элементов обоихх массивов должно совпадать, а вот должны ли они быть индексными или с ассоц. - ми... я не пробывал..

а нафиг?

Спустя 6 минут, 42 секунды (4.01.2012 - 02:13) Winston написал(а):
Цитата (45king @ 4.01.2012 - 01:03)
а если я замени массиф на такой
то как мне произвести замену

Спустя 3 минуты, 23 секунды (4.01.2012 - 02:16) Игорь_Vasinsky написал(а):
Winston
можно и так, но мне чёт по не понятным причинам str_replace нравиться, хотя с strtr() писать вродь меньше и элегантность выше....

взял на заметку.

Спустя 5 минут, 40 секунд (4.01.2012 - 02:22) 45king написал(а):
Winston
спс помогло

Игорь_Vasinsky
чтобы два масифа не писать проще одинить все в один

<?php

$content = file_get_contents('1.tpl');

$marks = array('{TITLE}' =>'Мой титл страницы', '{HEADER}'=> 'Заголовок страницы', '{TEXT}'=> 'бла-бла-бла-бла-бла-');

echo strtr($content,$marks);

?>

Спустя 1 минута, 3 секунды (4.01.2012 - 02:23) Игорь_Vasinsky написал(а):
всё верно. я тож на strtr() перепрыгнул ;)

тока стилизировать:

$marks = array(
'{TITLE}' =>'Мой титл страницы',
'{HEADER}'=> 'Заголовок страницы',
'{TEXT}'=> 'бла-бла-бла-бла-бла-'
);


тогда удобней работать.

Спустя 30 минут, 37 секунд (4.01.2012 - 02:53) 45king написал(а):
в чем сделал ошибку или не так написал почму не выводит

<?php
include "config.php";
$content = file_get_contents('1.tpl');
$sql=mysql_query("SELECT title FROM novosti");
$vivd=mysql_fetch_array($sql);
while($vivd=mysql_fetch_array($sql))$groups = $vivd['title'];
$marks = array('{TITLE}' =>'Мой титл страницы',
'{HEADER}'=> $groups,
'{TEXT}'=> 'бла-бла-бла-бла-бла-');

echo strtr($content,$marks);

?>

Спустя 1 минута, 43 секунды (4.01.2012 - 02:55) killer8080 написал(а):
Цитата (Игорь_Vasinsky @ 4.01.2012 - 01:16)
Winston
можно и так, но мне чёт по не понятным причинам str_replace нравиться, хотя с strtr() писать вродь меньше и элегантность выше....

На самом деле strtr() использовать правильней чем str_replace. У последней есть свои подводные камни wink.gif

Спустя 5 минут, 50 секунд (4.01.2012 - 03:01) killer8080 написал(а):
45king
Во первых зачем дважды mysql_fetch_array()
Во вторых операторы цикла нужно взять в фигурные скобки.
include "config.php"; 
$content = file_get_contents('1.tpl');
$sql = mysql_query("SELECT title FROM novosti");

while($vivd = mysql_fetch_assoc($sql)){
$groups = $vivd['title'];
$marks = array('{TITLE}' =>'Мой титл страницы',
'{HEADER}'=> $groups,
'{TEXT}'=> 'бла-бла-бла-бла-бла-');
echo strtr($content,$marks);
}

Спустя 8 минут, 40 секунд (4.01.2012 - 03:10) 45king написал(а):
мне нужно чтобы в {HEADER} вывел всю инву из базы а он выводит числа мне почмуто

Спустя 1 минута, 58 секунд (4.01.2012 - 03:12) 45king написал(а):
killer8080получилось он все повторил а мне нужно чтоб он только
{HEADER} повторял а остальное оставел как есть

Спустя 49 минут, 30 секунд (4.01.2012 - 04:01) 45king написал(а):
подскажите хоть куда копать


Спустя 11 часов, 31 минута, 31 секунда (4.01.2012 - 15:33) killer8080 написал(а):
45king
1.tpl это шаблон всей страницы, или только фрагмент?
Цитата (45king @ 4.01.2012 - 02:10)
мне нужно чтобы в {HEADER} вывел всю инву из базы а он выводит числа мне почмуто

А что в базе?

Спустя 16 часов, 51 минута, 55 секунд (5.01.2012 - 08:25) 45king написал(а):
killer8080
1тпл эта вся страница
в базе нет цифер

Спустя 5 часов, 5 минут, 29 секунд (5.01.2012 - 13:30) killer8080 написал(а):
45king
покажи свой код.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.