Магазин интернет

_RVK_

Новичок
меня интерисует красота программирования
красиво програмировать сразу не начнешь. Это только опыт. Оформлять красиво код, это еще пол дела. Об этом можно почитать например здесь: http://pear.php.net/manual/ru/standards.php но в остальном опыт, опыт и еще раз опыт....
 

Alexandre

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

каждый блок выдает свой НTML код, а главная страница
- вызывает соответствующицй модуль
- вставляет HTML код, туда куда нужно

Это и есть шаблонный подход:
- определяешь страницу в ввиде одного или нескольких шаблонов
к каждой странице разрабатываешь свой шаблон

в конце концов у беля должно быть:
шаблон гл. страницы
шаблон типовой стр.
шаблоны модулей

код клавной стр.
коды модулей
 

arXon

Новичок
спасибо вам огромное
перевариваю все

-~{}~ 06.08.04 08:35:

Посмотрел вчера все проверил и вот понял стандарта никакого нет, кто как хочет, так и пишет. Я не знаю, насколько правильно в моей ситуации применять Smarty.

Не совсем стало понятно вот что, каждой переменной присваивается ТЭГ или блок ТЭГов,
Вот не пойму от чего мы тогда ушли, какая разница тогда если я напишу так <HTML><BODY> или я это присвою $name = ‘<HTML><BODY>’; Наверное только запутаюсь или я не прав (хотя скорее всего)


Alexandre вот у тебя опыт есть в этом, может есть супер маленький твой пример, вот так глянуть если не жалко.
 

voland

Guest
Alexandre
- вызывает соответствующицй модуль
шаблоны модулей
Что ты подразумевал под модулем?

-~{}~ 06.08.04 09:11:

это диплом так что любая инфа останется у меня на веке
А где это учаться, что диплом по интернет-магазину?
 

_RVK_

Новичок
А где это учаться, что диплом по интернет-магазину?
Ну и что? У меня был диплом "Web система " Кадровое агенство"

-~{}~ 06.08.04 09:44:

arXon
чего мы тогда ушли
Мы добились разделения логики и представления. HTML отдельно, код отдельно. Но в случае со смарти это лишь видимость. За то я и не люблю Smarty, но это, как говорится, уже совсем другая история....
 

Alexandre

PHPПенсионер
Что ты подразумевал под модулем?
Модуль - законченный php-код, выполняющий одну или несколько бизнес-функций, оформленный в едином скрипте.

Модуль может, как непосредственно выдавать в выходной поток сгенерированный HTML, либо передавать, сгенерированный код вызывающему его модулю.
Пример: модуль обзора новостей, на главной странице.

-~{}~ 06.08.04 10:19:

Как правило, модуль имеет только один оператор вывода print или echo, который выводит все содержимое в HTML выходной поток.
 

arXon

Новичок
значинт грубо это выглядит так

Хтмл страница а в нее вставленна ну там в таблицу например ПХП код ну примерно вот так

<table>
<tr>
<td>
<?
require("db/catalogue.php");
?>
</td>
</tr>
</table>
 

Alexandre

PHPПенсионер
НЕТ, грубо это выглядит так:
1)модуль 1 вызывае модуль 2
2)модуль 2 генерит html код и отдает его переменной $outprint ='<font color="red">****</font>';
3)в модуле 1 генерится код:
Код:
<table><tr>
<td>$outprint</td>
</tr></table>
4) далее отрабатывает функция eval(), которая подставляет html код (с нашем случае '<font color="red">****</font>') модуля 2 в таблицу и это все присваивается переменной $outprint2
5) далее отрабатывает модуль 3 (если он есть)
6) и в конце echo $outprint2; выводит
Код:
<table><tr>
<td>
     <font color="red">****</font>
</td>
</tr></table>
:eek: :(
 

Alexandre

PHPПенсионер
операторы типа
require("db/catalogue.php");
должны вызывать исключительно для отработки кода php без использования функций ptint() echo()

а то, через определенное кол-во написания кода (критическая масса 1000 -1500 строк),
ты посто умрешь в море тегов, запутаешься, кто , что и где генерит


теперь все вообще запутался
а ты думал программировать порталы просто?;) ;)

этоя написал общий принцип, на самом деле все просто:
есть класс $template (любой шаблонный движок в том числе и смарти) у которого есть два метода:
$template->assign( <имя шаблонной переменной>, <ее значение> )
$template->fetch(<имя шаблона>);

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

Имеем шаблон
Код:
<table><tr>
<td>$outprint</td>
</tr></table>
1) производим
$template->assign( "outprint", $outprint )
где значение $outprint - это значение есть значение отработки предыдущего модуля.
далее отрабатываем свои остальные переменные

и в конце осуществляем вывод
print ($template->fetch(' modul.tpl' ) );

нет ничего сложного

-~{}~ 06.08.04 14:17:
 

arXon

Новичок
Все выходные эксперементировал
все равно код HTMLый фигурирует в скрипте

эх...........................
чето совсем тупой я что ли
 

Alexandre

PHPПенсионер
ну сказали же читай смарти http://smarty.php.net/

делай все по ману (инструкции ) и экспереминтируй сколько тебе влезет

аналог смарти - учи XML/XSLT преобразования,
все так же красиво можно программировать
только все шаблоны ложаться не в стиле "смарти"
а в стиле XSLT-преобразований.,

т.е. немного иное шаблонное "мышление"
а принцип тотже:

строится один общий шаблон template.xsl
один или несколько частных

головной модуль формирует XML в одной из переменных
далее к этому XML привешивается еще один или более xml, результат работы одного или нескольких модулей....

xml = xml+xml1 (рез отработки одного из модулей)

потом запускается XSLT процессор и на базе шаблонных формирований (xsl) получается выходная страница, которую формируют выводом
result = xslt_process($xh,'arg:/_xml', 'arg:/_xsl', NULL, $arguments)
print result
 

_RVK_

Новичок
Alexandre зачем новичка грузить такими сложными вещами. Ну пусть сначала простенький шаблонизатор попробует, там fast_template какой-нить... На самом деле не факт что он после этого захочет смарти использовать. Вот я например никогда его юзать не буду.

arXon
все равно код HTMLый фигурирует в скрипте
Покажи код. Покажи шаблон, тебе скажуть что делаешь неправильно.
 

arXon

Новичок
ну вот пример


<?PHP
require_once("main/top.inc.php");
require_once("main/navigator.inc.php");
?>

<div id="content">
<?PHP require_once("main/pod.inc.php");?>
<h2 id="pageName">Прайс</h2>
<div class="feature">
<?
require_once("db/DB.php");

$db = new DB('localhost','root','','MyShop');

if (!$db->open()) {
die($db->error());
}

if (!$db->query("SELECT * FROM PRICE")) {
die($db->error());
}

//Вывод прайса и по необходимости добовление его в корзину

echo "<form action='#' method=post>";
$i=1;
while($row = $db->fetchAssoc()){
echo "<table width='100%' border='1' bordercolor='#9CB1DB'><td width='30'><center>$row[PR_CODE]</center></td>";
echo "<td width='300'>$row[PR_FULLNAME]</td>";
echo "<td width='50'><center>$row[PR_REGISTRPRICE]</center></td>";
echo "<td width='50'><center><input type=checkbox name=v[$i] value=$i></center></td>";
} // while

echo "</table><br><center><input type=submit value='Добавить отмеченные товары в корзину?'></center></form>";
$db->freeResult();
$db->close();
?>

</div>
</div>

<?PHP
require_once("main/left.inc.php");
require_once("main/bottom.inc.php");
?>
 

arXon

Новичок
мне смарти ни как
я просто хочу отделить код РНР от НТМ

ну вот если так делать сойдет наверное ?
 

_RVK_

Новичок
arXon
Нет. Где ты тут код отделил? Приспичит дизайн менять, о суициде подумаешь. Твой вариант для админской части пойдет, там дизайн прстой и меняется в основном css да шапка... Не надо смарти, попробуй что попроще. Sigma например или tplTemplatez. У последнего неплохие примеры есть.
 

Alexandre

PHPПенсионер
while($row = $db->fetchAssoc()){
echo "<table width='100%' border='1' bordercolor='#9CB1DB'><td width='30'><center>$row[PR_CODE]</center></td>";
echo "<td width='300'>$row[PR_FULLNAME]</td>";
echo "<td width='50'><center>$row[PR_REGISTRPRICE]</center></td>";
echo "<td width='50'><center><input type=checkbox name=v[$i] value=$i></center></td>";
} // while
это ни есть отделение кода от дизайна
 

arXon

Новичок
короче выход один, писать класс TEMPLATE и работать с ним

да дорого мне это втанет млин ..........
 
Сверху