Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » Работа с темплейтами

Ответить
Настройки темы
Работа с темплейтами

Аватара для Strange_V

Старожил


Сообщения: 222
Благодарности: 29


Конфигурация

Профиль | Отправить PM | Цитировать


Как лучше организовать роботу с темплейтами?
Видел такие варианты:
1. Вместо переменный пишут %some_var%, потом реплейсом заменяют их на значения.
2. Пишут $some_var, и выводят с помощью eval.

И как реализовать такое:
темплейт
HTML код: Выделить весь код
<table> <tr><td bgcolor="#eeeeee">$name<br>$text<br>$date</td></tr> <tr><td bgcolor="#cccccc">$read<hr>$date_c</td></tr> </table>

если существуют все переменные - все ок, но когда $read и $date_c нет, выйдет нехорошо… т.е. в идеальном варианте при их отсутствии второго рядка не должно быть вообще.
Легко написать
PHP код: Выделить весь код

if ( isset ($read) and isset ($date_c) )

echo 
'<tr><td bgcolor="#cccccc">',$read,'<hr>',$date_c,'</td></tr>'

но это уже смешивание кода и дизайна…

-------
Жизнь-это шахматная партия, по окончании которой и короли, и пешки ложатся в один ящик.


Отправлено: 13:52, 24-09-2006

 

Ветеран


Сообщения: 1862
Благодарности: 132

Профиль | Сайт | Отправить PM | Цитировать


Про смешивание кода и дизайна на phpclub-е спорили старожилы, кажется в итоге решили, что без него никак. А стоит начать писать какие-то функции, так получаем php написанный на php Так смысл, если сам php и разрабатывался для использования вместе с html кодом. Можно, допустим, загнать таблицу в массив, а в потом его выводить при помощи foreach.
А вообще есть резон и писать велосипеды, и использовать сложные решения.

-------
ДИЛЕТАНТ - это курьезный человек, который испытывает удовольствие делать то, чего не умеет.
AMD 4200+, MSI Neo2Platinum, 2Gb, ATI 9600, D-Link DWL-G510, FreeBSD 8.0, KDE 4.3.4


Отправлено: 21:36, 28-09-2006 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Strange_V

Старожил


Сообщения: 222
Благодарности: 29

Профиль | Отправить PM | Цитировать


Vlad Drakula
Во первых, использую то что хотя б немного знаю (чего не могу сказать о XML + XSLT + XSL) т.е. PHP+HTML.
Во вторых, отвечу цитатой с твоего же поста
Цитата:
2) XSLT это стандарт W3C а FastTemplate и php-templates нет... по этому это более перспективный выбор особенно в крупных проектах... т.к. позволяет полностью разграничить функции функциональности и представления...
возможно и незачем изобретать велосипед, но есть же и другие варианты (каждый делает свой выбор).

mar
Толковое разъяснение, спасибо.

benya
Может и правильно на счет не заглядывайте к ним внутрь. Хотя я так и не люблю… но наверное придется.

Arrest
Спасибо, уже смотрю.
жаль комменты не русские

Igor_I
Цитата:
А стоит начать писать какие-то функции, так получаем php написанный на php
пришел к тому же…

-------
Жизнь-это шахматная партия, по окончании которой и короли, и пешки ложатся в один ящик.


Отправлено: 00:08, 29-09-2006 | #12


Аватара для Arrest

runs with scissors


Сообщения: 642
Благодарности: 77

Профиль | Отправить PM | Цитировать


Strange_V
Кстати есть совсем простая система темплейтов(даже и не темплейтов, а вывод от PHP):
Значится у нас есть некий index.php:
PHP код: Выделить весь код

<?php

//много кода
$page_title="Шаблоны на php";
$page_text="Много текста, хорошего и разного.";
?>

Надо заставить его выводить $page_title в заголовке страницы, а $page_text в теле, причем сделать это непременно надо с помощью темплейтов.
Для этого создаем файлик index_design.php, кидаем его в ту же папку где index.php, и в него(index_design.php) пишем:
PHP код: Выделить весь код

<html>

<head>
<title><?=$page_title?></title>
</head>
<body>
<?=$page_text?>
</body>
</html>

А в index.php в конец перед ?> пишем:
PHP код: Выделить весь код

include("index_design.php"); 


Что нам выдаст index.php? А вот что:
Код: Выделить весь код
<html>
<head>
<title>Шаблоны на php</title>
</head>
<body>
Много текста, хорошего и разного.
</body>
</html>
И не надо мороки с регулярными выражениями.

Что-то очень много написал. Ну ладно.

Отправлено: 14:46, 29-09-2006 | #13


Ночной странник


Contributor


Сообщения: 4050
Благодарности: 83

Профиль | Сайт | Отправить PM | Цитировать


Strange_V
1) у меня был коллега который не очень хорошо знал XSL... и вместо него использовал JS... в итоге весь его код был викинут... и заменен на XSL...
2) был опыт написания шаблинизатора который на XML лейаут натянет скин... по разработывали... а потом выкинули и стали использовать стандартный XSL...
3) XSL позволит легко интегрировать разные XML в системму, к примеру ленты новостей в RSS.

-------
можно практически все, но просто мы это еще не знаем.
главный враг програмиста это копипастинг
За хорошее сообщение не забываем нажимать ссылочку "Полезное сообщение"!


Отправлено: 21:26, 29-09-2006 | #14


Аватара для benya

Старожил


Сообщения: 302
Благодарности: 5

Профиль | Сайт | Отправить PM | Цитировать


Vlad Drakula,
Цитата:
3) XSL позволит легко интегрировать разные XML в системму, к примеру ленты новостей в RSS.
Ну, вобщем то и без XSL это можно сделать почти также легко

Отправлено: 21:38, 30-09-2006 | #15


Ночной странник


Contributor


Сообщения: 4050
Благодарности: 83

Профиль | Сайт | Отправить PM | Цитировать


benya
Цитата:
Ну, вобщем то и без XSL это можно сделать почти также легко
прошу привести код в по дтверждение!

-------
можно практически все, но просто мы это еще не знаем.
главный враг програмиста это копипастинг
За хорошее сообщение не забываем нажимать ссылочку "Полезное сообщение"!


Отправлено: 22:11, 30-09-2006 | #16

mar mar вне форума

Аватара для mar

just mar


Moderator


Сообщения: 3904
Благодарности: 163

Профиль | Отправить PM | Цитировать


Цитата:
benya
Цитата:
Ну, вобщем то и без XSL это можно сделать почти также легко
Vlad Drakula
прошу привести код в по дтверждение!
а также принести сюда клей и ножницы и вручить их Владу, тк тема сейчас плавно перетечет в кусок этой

Отправлено: 00:06, 01-10-2006 | #17


Аватара для Strange_V

Старожил


Сообщения: 222
Благодарности: 29

Профиль | Отправить PM | Цитировать


Vlad Drakula
Цитата:
Агитатор
Arrest
Знаю, не подходит. Нужны блоки.

mar
Цитата:
а также принести сюда клей и ножницы и вручить их Владу, тк тема сейчас плавно перетечет в кусок этой


Немного переделал парсер с miniBB (сделал поддержку блоков). Результат не ахти, но в принципе мне подходит (и не надо бросать в меня камнями, что на XSL выйдет много лучше и быстрее )
про скорость, при небольшом темплейте, скрипт крутится около 250 раз в секунду (Cel 1.7, 256MB, WinXP)

-------
Жизнь-это шахматная партия, по окончании которой и короли, и пешки ложатся в один ящик.


Отправлено: 18:07, 01-10-2006 | #18


Аватара для benya

Старожил


Сообщения: 302
Благодарности: 5

Профиль | Сайт | Отправить PM | Цитировать


Vlad Drakula,
Ну примерно так... )
Код: Выделить весь код
#!/usr/bin/perl
use XML::LibXML;
print "Content-type:text/html\n\n";
my $parser = XML::LibXML->new();
my $doc  = $parser->parse_file("news.xml");
my @items = $doc->getElementsByTagName("item");
for my $item  (@items) {
my @node = $item->childNodes;
print "<b>".$node[1]->textContent."</b><br>\n";
print $node[7]->textContent."<br>\n";
};

А на XSL где-то так (||apply-templates):
Код: Выделить весь код
<xsl:template match="/">
<xsl:for-each select="document('news.xml')/item">
<b><xsl:value-of select="title"/></b><br/>
<xsl:value-of select="description"/><br/>
</xsl:for-each>
</xsl:template>
Ну наверное если сайт весь на XSL, то проще последний пример. А если нет, то нечего городить огород, можно и так (см. 1 прим.)

Последний раз редактировалось benya, 02-10-2006 в 18:14.


Отправлено: 15:59, 02-10-2006 | #19


Ночной странник


Contributor


Сообщения: 4050
Благодарности: 83

Профиль | Сайт | Отправить PM | Цитировать


benya
а если чтонибуть по сложне... например с группировкой по дню недели?

-------
можно практически все, но просто мы это еще не знаем.
главный враг програмиста это копипастинг
За хорошее сообщение не забываем нажимать ссылочку "Полезное сообщение"!


Отправлено: 23:32, 02-10-2006 | #20



Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » Работа с темплейтами

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - Работа с файлом hhh8486 Вебмастеру 1 23-11-2007 20:43
Работа БП Surround Хочу все знать 5 05-03-2006 21:40
Работа ХР с CD LamerOK Microsoft Windows 2000/XP 8 17-04-2004 23:51
Автономная работа IPMC Сетевые технологии 1 19-09-2003 23:20
работа ХР в домене muha II Сетевые технологии 1 28-06-2003 10:57




 
Переход