Спустя 2 минуты, 32 секунды (17.03.2012 - 22:00) inpost написал(а):
echo str_replace('{name}','text',$text);
Аналогично, если бы в коде сразу писал бы правильно: <?php echo $name; ?>
Аналогично, если бы в коде сразу писал бы правильно: <?php echo $name; ?>
Спустя 6 минут, 14 секунд (17.03.2012 - 22:06) Shkiper написал(а):
А я видел там пишут например "Меня зовут {name}" это как сделать????
Спустя 16 минут, 59 секунд (17.03.2012 - 22:23) inpost написал(а):
Я тебе выше код дал. Что ещё надо?
Спустя 10 минут, 8 секунд (17.03.2012 - 22:33) redreem написал(а):
Deert
это называется "использовать шаблонизатор". их 100500 на разный вкус и цвет. поищи по запросу "простейший шаблонизатор php"... полюбому найдешь простую реализацию с примером.
это называется "использовать шаблонизатор". их 100500 на разный вкус и цвет. поищи по запросу "простейший шаблонизатор php"... полюбому найдешь простую реализацию с примером.
Спустя 13 часов, 26 минут, 4 секунды (18.03.2012 - 11:59) Shkiper написал(а):
inpost ты мне дал не совсем то что я хотел.
redreem а что такое шаблонизатор????(гугл выдает слишклм замудренные ответы)
redreem а что такое шаблонизатор????(гугл выдает слишклм замудренные ответы)
Спустя 1 час, 9 минут, 11 секунд (18.03.2012 - 13:09) sergeiss написал(а):
Цитата (Deert @ 18.03.2012 - 12:59) |
гугл выдает слишклм замудренные ответы |
Тогда спроси у Яндекса Например, вот так: php шаблонизатор - запрос у Яндекса
И дальше только успевай читать то, что в ссылках получаешь.
Спустя 4 часа, 11 минут, 9 секунд (18.03.2012 - 17:20) Guest написал(а):
Кстати, было бы не плохо сделать шаблоны как в Википедии, с параметрами
Спустя 7 минут, 30 секунд (18.03.2012 - 17:27) inpost написал(а):
Deert
Я тебе дал то, что из себя представляет шаблонизатор. Давай я лучше код непонятный тебе скину, чтобы ты потом понял, что для тебя сложно и бросил это дело, или ещё хуже, молиться начал на шаблонизаторы, так как сам толком не понимаешь как они работают...
Я тебе дал то, что из себя представляет шаблонизатор. Давай я лучше код непонятный тебе скину, чтобы ты потом понял, что для тебя сложно и бросил это дело, или ещё хуже, молиться начал на шаблонизаторы, так как сам толком не понимаешь как они работают...
Спустя 21 час, 56 минут, 5 секунд (19.03.2012 - 15:23) Shkiper написал(а):
inpost - +1
Выучю шаблонизатор и все(если что к вам обрашюсь )
Выучю шаблонизатор и все(если что к вам обрашюсь )
Спустя 17 часов, 52 минуты, 17 секунд (20.03.2012 - 09:16) Гость_Володя Шишкин написал(а):
А что если просто:
<?
$name = 'Volodya';
$os = 'xp';
echo "
<html>
<head>
<title>Страница участника {$name}</title>
</head>
<body>
Меня зовут {$name} и я использую операционную систему {$os}
</body>
</html>
";
Спустя 42 минуты, 18 секунд (20.03.2012 - 09:58) Shkiper написал(а):
Цитата (Гость_Володя Шишкин @ 20.03.2012 - 06:16) |
А что если просто:<? |
Обязательно протестирую!!!!
Спустя 22 минуты, 19 секунд (20.03.2012 - 10:20) sergeiss написал(а):
Цитата (Гость_Володя Шишкин @ 20.03.2012 - 10:16) |
А что если просто: |
Это верно полностью, да. Но только это не шаблонизатор, вобщем-то, а просто работа с текстовой строкой. Или совсем уж "простейший" шаблонизатор. Никаких условий тут нет и быть не может. То есть, например, нельзя исключить показ чего-нибудь при выполнении некоторых условий.
Спустя 48 минут, 12 секунд (20.03.2012 - 11:08) Игорь_Vasinsky написал(а):
В моём журнале есть примеры реализации, на подобии шаблонизатора, вместо str_REPLACE использовал strtr()
но щас понял - что эти движения мне не нужны, пишу так
но щас понял - что эти движения мне не нужны, пишу так
<?=$name?>
Спустя 8 минут, 22 секунды (20.03.2012 - 11:17) Shkiper написал(а):
А что за журнал???
Спустя 2 минуты, 2 секунды (20.03.2012 - 11:19) caballero написал(а):
вы уж определитесь о каком шаблонизаторе речь активном или пассивном
Спустя 4 часа, 9 минут, 23 секунды (20.03.2012 - 15:28) Shkiper написал(а):
/Хех а чем различаються активный или пассивный????
Спустя 58 минут, 26 секунд (20.03.2012 - 16:27) m4a1fox написал(а):
С вероятностью 90% ты увидел это в шаблонизаторе smarty...
Спустя 4 часа, 20 минут, 37 секунд (20.03.2012 - 20:47) Shkiper написал(а):
Вот Гость Володя Шишкин продемонстрировал вот такой код:
Там он писал вот так {$os} а как сделать {os} - я думаю можно просто использовать константу(define) можно ли там сделать????
<?
$name = 'Volodya';
$os = 'xp';
echo "
<html>
<head>
<title>Страница участника {$name}</title>
</head>
<body>
Меня зовут {$name} и я использую операционную систему {$os}
</body>
</html>
";
Там он писал вот так {$os} а как сделать {os} - я думаю можно просто использовать константу(define) можно ли там сделать????
Спустя 11 минут, 47 секунд (20.03.2012 - 20:59) Игорь_Vasinsky написал(а):
файл шаблона test.tpl
файл контроллера controller.test.php
файл модели test.php
index.php
<h1>Hello? my name is {name}!</h1>
<p>I loved {girlname}!</p>
файл контроллера controller.test.php
$name = 'Коля';
$girlname = 'Надя';
$tpl = file_get_contents('test.tpl');
$marks = array('{name}', '{girlname}');
$replacement = array($name, $girlname);
$parseTpl = strtr($marks, $replacement, $tpl);
файл модели test.php
include 'controller.test.php';
echo $parseTpl;
index.php
include 'test.php';
Спустя 53 минуты, 10 секунд (20.03.2012 - 21:52) Bodich написал(а):
Цитата (Игорь_Vasinsky @ 20.03.2012 - 08:08) |
<?=$name?> |
Вот вижу все так пишут <?=$name?> если написать <?$name?> тоже выведет это нужно или просто стиль такой ?
Спустя 12 минут, 41 секунда (20.03.2012 - 22:05) Игорь_Vasinsky написал(а):
Ну я же говорил, что раньше мудрил с таким шаблонизатором
Но дальше, с помощью других, пришло понимание того что это лишняя писанина и трата ресурсов, по этому сейчас я пользуюсь
и этим не брезгаю.
Свернутый текст
файл шаблона test.tpl
<h1>Hello? my name is {name}!</h1>
<p>I loved {girlname}!</p>
файл контроллера controller.test.php
$name = 'Коля';
$girlname = 'Надя';
$tpl = file_get_contents('test.tpl');
$marks = array('{name}', '{girlname}');
$replacement = array($name, $girlname);
$parseTpl = strtr($marks, $replacement, $tpl);
файл модели test.php
include 'controller.test.php';
echo $parseTpl;
index.php
include 'test.php';
Но дальше, с помощью других, пришло понимание того что это лишняя писанина и трата ресурсов, по этому сейчас я пользуюсь
<p><?=$text?></p>
<ul>
<?php foreach($array as $line) :?>
<li><?=$line?></li>
<?php endforeach?>
</ul>
и этим не брезгаю.
Спустя 2 минуты, 37 секунд (20.03.2012 - 22:08) Игорь_Vasinsky написал(а):
Цитата |
Вот вижу все так пишут <?=$name?> если написать <?$name?> тоже выведет это нужно или просто стиль такой ? |
тока если такие теги не отключены в php.ini, и то
<? echo $name; ?>
Спустя 10 минут, 53 секунды (20.03.2012 - 22:18) Bodich написал(а):
ну счас шорт теги на всех приличных хостингах включены
Спустя 5 часов, 46 минут, 13 секунд (21.03.2012 - 04:05) Игорь_Vasinsky написал(а):
Цитата |
ну счас шорт теги на всех приличных хостингах включены |
такие <?= ?>, но не такие <? ?>
Спустя 6 часов, 58 минут, 51 секунда (21.03.2012 - 11:03) Ramzil_Nixon написал(а):
Deert, Пиши лучше
И хлопот меньше и код короче :)
<?php echo isset($name) ? $name : ''; ?>
И хлопот меньше и код короче :)
Спустя 5 минут, 15 секунд (21.03.2012 - 11:09) Игорь_Vasinsky написал(а):
вот определять переменные в шаблонах - я бы не стал, задача то максимально отделить логику и шаблона
Спустя 3 минуты, 21 секунда (21.03.2012 - 11:12) Ramzil_Nixon написал(а):
Цитата (Игорь_Vasinsky @ 21.03.2012 - 08:09) |
вот определять переменные в шаблонах - я бы не стал, задача то максимально отделить логику и шаблона |
Ну можно и так:
<?php echo $name; ?>
Но будет синтактическая ошибка ведь :rolleyes:
Спустя 12 минут, 59 секунд (21.03.2012 - 11:25) caballero написал(а):
Цитата |
задача то максимально отделить логику и шаблона |
смотря о какой логике речь.
Логика приложения этто одно а логика страницы совсем другое. Отделять логику страницы от шаблона глупо и в большинстве случаев нереализуемо .
Еше раз. Нужно четко понимать о каких шаблонах речь.
{name} с реплейсом строки- это пассивный шаблон
<?=$name?> - активный.
Реализация принципиально разная.
Спустя 1 минута, 4 секунды (21.03.2012 - 11:26) Ramzil_Nixon написал(а):
Цитата (caballero @ 21.03.2012 - 08:25) |
<?=$name?> |
У меня почему-то такой способ не сработало.
Спустя 3 минуты, 37 секунд (21.03.2012 - 11:30) vital написал(а):
Цитата (Игорь_Vasinsky @ 20.03.2012 - 21:08) | ||
тока если такие теги не отключены в php.ini, и то <? echo $name; ?> |
В пхп 5.4
<?=?> работает всегда.
Спустя 5 минут, 26 секунд (21.03.2012 - 11:35) Игорь_Vasinsky написал(а):
Цитата |
<?=?> работает всегда. |
Цитата |
если написать <?$name?> тоже выведет это нужно или просто стиль такой ? |
не много не похожи теги то.
Спустя 8 часов, 50 минут, 52 секунды (21.03.2012 - 20:26) Shkiper написал(а):
Игорь спс за демонстрацию кода попробую реализовать у себя. То что надо, только мороки много.
Спустя 4 минуты, 28 секунд (21.03.2012 - 20:30) Игорь_Vasinsky написал(а):
ну.. мороки много, а потом и путаница отседа. при этом если проект за раз не написать, т.е. с перерывами нужно изучать свой код чтобы придерживаться одной логики.
Спустя 1 день, 17 часов, 33 минуты, 43 секунды (23.03.2012 - 14:04) Shkiper написал(а):
Цитата (Игорь_Vasinsky @ 20.03.2012 - 17:59) |
файл шаблона test.tpl<h1>Hello? my name is {name}!</h1> файл контроллера controller.test.php $name = 'Коля'; файл модели test.php include 'controller.test.php'; index.php include 'test.php'; |
Игорь опробовал твой метод >>> Выдает ошибку Warning: strtr() expects parameter 1 to be string, array given in Z:\home\skob\www\controller.test.php on line 10
10 line >>>> $parseTpl = strtr($marks, $replacement, $tpl);
Спустя 14 минут, 2 секунды (23.03.2012 - 14:18) Игорь_Vasinsky написал(а):
Опечатался
Цитата |
$parseTpl = strtr($marks, $replacement, $tpl); |
$parseTpl = strtr($tpl, $marks, $replacement);
Спустя 8 минут, 51 секунда (23.03.2012 - 14:27) Shkiper написал(а):
Все равно наработает!!!!
Спустя 24 минуты, 36 секунд (23.03.2012 - 14:52) Игорь_Vasinsky написал(а):
ну что за ошибки то? и код где?
Спустя 8 минут, 47 секунд (23.03.2012 - 15:00) Shkiper написал(а):
Код ошибки такой-же!!!
Спустя 5 минут, 35 секунд (23.03.2012 - 15:06) Игорь_Vasinsky написал(а):
а что в $tpl ????
Спустя 39 минут, 12 секунд (23.03.2012 - 15:45) Shkiper написал(а):
Всмысле?????? В tpl file_get_contents('test.tpl');
Спустя 1 минута, 36 секунд (23.03.2012 - 15:47) Игорь_Vasinsky написал(а):
а пишет что массив
Цитата |
strtr() expects parameter 1 to be string, array given |
Спустя 39 минут, 26 секунд (23.03.2012 - 16:26) Shkiper написал(а):
Нет пишет ошибку только на линии 10 (вот эта линия $parseTpl = strtr($tpl, $marks, $replacement)
Спустя 22 часа, 28 минут, 24 секунды (24.03.2012 - 14:55) Shkiper написал(а):
Ну так как Игорь????
Спустя 5 часов, 16 минут, 21 секунда (24.03.2012 - 20:11) Shkiper написал(а):
Игорь_Vasinsky на сколько мне известно из мануала функция strtr принимает 2 параметра а у тебя их 3.
Спустя 4 минуты, 58 секунд (24.03.2012 - 20:16) Игорь_Vasinsky написал(а):
фу ты... нет там и 3 может быть, но не для этого))))
вот
старею :lol:
вот
$name = 'Коля';
$girlname = 'Надя';
$tpl = file_get_contents('test.tpl');
$parseTpl = strtr($tpl, array('{name}'=>$name, '{girlname}'=>$girlname));
старею :lol:
Спустя 41 секунда (24.03.2012 - 20:17) Shkiper написал(а):
СПс
Спустя 4 минуты, 37 секунд (24.03.2012 - 20:21) Shkiper написал(а):
Значит это можно вообще "выкинуть" - $marks = array('{name}', '{girlname}');
$replacement = array($name, $girlname);?
Игорь а можно у тебя проконсультироваться??? Насколько хорош(или плох) данный механизм в написании шаблонов в моей CMS?????
$replacement = array($name, $girlname);?
Игорь а можно у тебя проконсультироваться??? Насколько хорош(или плох) данный механизм в написании шаблонов в моей CMS?????
Спустя 50 минут, 59 секунд (24.03.2012 - 21:12) Игорь_Vasinsky написал(а):
так я выше объяснял, почитай - я там популярно объяснил минусы.
Спустя 2 дня, 19 часов, 31 минута, 48 секунд (27.03.2012 - 16:44) Shkiper написал(а):
Игорь_Vasinsky можешь мне еще в кое чем помочь??? Если сможешь то слушай. Я хотел сделать вот такую структуру:
template/files.tpl
Но если посмотреть на $a и $b то этот миф полностью разрушат ошибки PHP. Как мне тогда это сделать????
$a = <?php while($files = mysql_fetch_assoc($select_files)) { ?>;
$b = <?php } ?>;
$c = $files['name'];
$v = $files['id']
$tpl = file_get_contents('template/files.tpl');
strtr($tpl, array('[files]'=>$a,'[/files]'=>$b,'{id}'=>$v,'{file_name}'=>$c));
template/files.tpl
Прикрепленные файлы:
[files]<a href=download.php/?id={id}>{file_name}</a>[/files]
Но если посмотреть на $a и $b то этот миф полностью разрушат ошибки PHP. Как мне тогда это сделать????
Спустя 59 минут, 43 секунды (27.03.2012 - 17:44) Игорь_Vasinsky написал(а):
Это ещё что за синтаксис
Цитата |
$a = <?php while($files = mysql_fetch_assoc($select_files)) { ?>; $b = <?php } ?>; |
Спустя 5 минут, 29 секунд (27.03.2012 - 17:49) ADiel написал(а):
Ну чем вы тут занимаетесь? php сам по себе отличный шаблонизатор..
Чем плох такой вариант?
И в этом духе... Просто, производительно...
Чем плох такой вариант?
<h1><?=$title?></h1>
<?php foreach($items as $item) : ?>
<a href="<?=$item['link']?>"><?=$item['name']?></a><br />
<?php endforeach; ?>
И в этом духе... Просто, производительно...
Спустя 8 минут, 39 секунд (27.03.2012 - 17:58) Shkiper написал(а):
ADiel - Мне это не подходит. Я делаю вот так {name} а для удобства пользователей CMS. Допустим он незнает PHP и как он будет на том, что ты написал шаблоны делать??? а мой способ более интересен,что ли, для шаблонов
Игорь мне нужно чтоб мне вывело в цикле все записи из БД по вот такой конструкции [files]<a href=download.php/?id={id}>{file_name}</a>[/files]. Я пробовал так как написал в посте, но ошибочки. Я хотелбы поинтерисоваться у тебя как мне это сделать????
Игорь мне нужно чтоб мне вывело в цикле все записи из БД по вот такой конструкции [files]<a href=download.php/?id={id}>{file_name}</a>[/files]. Я пробовал так как написал в посте, но ошибочки. Я хотелбы поинтерисоваться у тебя как мне это сделать????
Спустя 1 минута, 41 секунда (27.03.2012 - 18:00) ADiel написал(а):
Ну тут шило на мыло... Все равно без циклов не обойтись и разработчику шаблонов придется учить псевдоязык.
А почему не выбран готовый шаблонизатор?
У smarty аналогичная идея
А почему не выбран готовый шаблонизатор?
У smarty аналогичная идея
Спустя 1 час, 7 минут, 15 секунд (27.03.2012 - 19:07) Игорь_Vasinsky написал(а):
да. тут либо php в шаблоне, либо html в контроллере.
в общем выводишь в цикле с вёрсткой свои ссылки в контроллере и записываешь в переменную, потом strtr() на {name}
etc
теперь весь блок с сылками у тя в переменной $names - это называется буферизация.
в общем выводишь в цикле с вёрсткой свои ссылки в контроллере и записываешь в переменную, потом strtr() на {name}
etc
ob_start();
//Здесь твой цикл с версткой
$names = ob_get_contents();
$ob_end_clean;
теперь весь блок с сылками у тя в переменной $names - это называется буферизация.
Спустя 43 минуты, 43 секунды (27.03.2012 - 19:51) Shkiper написал(а):
Игорь_Vasinsky извини за тупость, но я не понял. можно продемонстрировать????
Спустя 31 минута, 56 секунд (27.03.2012 - 20:23) Игорь_Vasinsky написал(а):
//Делаешь запрос в БД на выборку
//Получаешь ассоциативный массив
ob_start();
//Здесь твой цикл с версткой, for или foreach - дело твое
while($row)
{
echo '<a href="'.$row['name'].'">'.$row['name'].'</a><br/>';
}
$names = ob_get_contents();
$ob_end_clean;
теперь в любом месте сделай
echo $names;
и всё поймёшь.
Останется тока strtr() сделать на {names} в шаблоне
Спустя 10 часов, 36 минут, 18 секунд (28.03.2012 - 06:59) Shkiper написал(а):
Игорь_Vasinsky я хотел совсем другого. Я такой метод знаю, только я делал не буферизацией, а функцией, а осознал я то, что я хочу НЕРЕАЛЬНО(бессонные ночи меня в этом убедили)
Спустя 14 минут, 7 секунд (28.03.2012 - 07:13) Игорь_Vasinsky написал(а):
как это.. Билан врёт что ли...
Спустя 37 минут, 53 секунды (28.03.2012 - 07:51) Shkiper написал(а):
Игорь_Vasinsky я не в курсе твоего юмора
Спустя 16 минут, 48 секунд (28.03.2012 - 08:08) Игорь_Vasinsky написал(а):
ну он же пел: -я знаю точно невозможное - возможно
Спустя 2 минуты, 17 секунд (28.03.2012 - 08:10) Shkiper написал(а):
это намек, или просто????
Спустя 31 минута, 37 секунд (28.03.2012 - 08:42) Shkiper написал(а):
Игорь_Vasinsky а какой функцией мне воспользоваться чтоб ней прочитать пхп файл и занести его в {name}.Пользовался file_get_contents она читает его не как скрипт, а как текст и тупо выводит код с этого файла.
Спустя 1 час, 35 минут (28.03.2012 - 10:17) Игорь_Vasinsky написал(а):
$name = eval('?>'.file_get_contents('.....'));
Спустя 6 минут, 32 секунды (28.03.2012 - 10:23) Shkiper написал(а):
работает, но с ошибками. Можно(если не трудно) еще вариант???
Спустя 9 часов, 55 минут, 25 секунд (28.03.2012 - 20:18) Shkiper написал(а):
Игорь_Vasinsky ну так как???
Цитата |
работает, но с ошибками. Можно(если не трудно) еще вариант??? |
Спустя 41 минута, 31 секунда (28.03.2012 - 21:00) Игорь_Vasinsky написал(а):
)))))) я тока про eval() знаю - она работает, но при условии правильного php кода в доноре
так что правь косяки с php в шаблоне и будет всё тип-топ.
так что правь косяки с php в шаблоне и будет всё тип-топ.
Спустя 48 минут, 31 секунда (28.03.2012 - 21:49) Shkiper написал(а):
Цитата (Игорь_Vasinsky @ 28.03.2012 - 18:00) |
)))))) я тока про eval() знаю - она работает, но при условии правильного php кода в доноре так что правь косяки с php в шаблоне и будет всё тип-топ. |
Good, попробуем!!!
Спустя 2 месяца, 24 дня, 13 часов, 21 минута, 3 секунды (23.06.2012 - 11:10) spaun написал(а):
Подскажите как с помощью этой реализации вывести блоки вместо переменной?
Спустя 4 дня, 2 часа, 6 минут, 49 секунд (27.06.2012 - 13:16) Shkiper написал(а):
Ну заноси блок в функцию или буферизируй и заноси в переменную а потом выводи.