Строение системы. Ряд вопросов.

WP

^_^
Строение системы. Ряд вопросов.

Вкратце. main.php (в него в попадают все запросы) include'ит system.php, там грузятся библеотеки, и т.д. и т.д. Затем main.php выполняет main.tpl, а в нём уже через {module_load...} подключаются модули, которые в свою очередь, после бизнес-логики вызывают другие шаблоны. Такая схема мне показалась удобной, и вполне устроила. Но можно сначала полностью отработать бизнес-логику, а уже потом показывать шаблонами. Как думаете, как лучше?
Столкнулся с такой задачей, значение тега <title> заполняется заголовком из шаблона, вызванного одним из модулей (главным, так сказать =), а тег этот выводится в начале main.tpl до вызова модуля. Ничего путного на ум не пришло, кроме написания в main.tpl нечта вроде <title>{~pagetitle}</title>, и замены output-фильтром на нужное значение. Естественно с защитой в виде дописывания Случайной последовательности символов до и после псевдо-тега, и замены с учетом этой последовательности.
За ломаный рассказ извиняйте, ночь за компом. Спасибо.

-~{}~ 02.07.06 11:26:

А также хотел бы услышать мнение по поводу того как добится наилучшего строения если сначала полностью отрабатывать бизнес-логику. Боюсь будет путаница с названиями переменных.

-~{}~ 03.07.06 19:15:

И тишина =)
 

WP

^_^
Какой еще поток сознания? =) Вполне конкретная ситуация и вопрос =)
 

Franzusow

Новичок
<<За ломаный рассказ извиняйте, ночь за компом. Спасибо.>>
да ты отдохни немного, а потом есче разок попробуй :)

<<И тишина =)>>
ну да
 

Develar

Новичок
WP
На дворе 2006 год как никак. Отрасль развита. Читай не хочу.
 

maxru

МИФИст
http://ngine.byethost24.com/
ГЫ, самореклама. Там есть ссылка Download Sources. Скачай и посмотри.
Валяется старая версия. Есть новая переработанная. Если надо - вышлю.
(Тебе нужен класс ./system/tplmgr/library.php)

З.Ы. У меня шаблон - царь, Бог и королева паучиха 8)
//REMOVED//Никто его не вызывает, это он всех вызывает 8)
То есть там прописано, кого вызывать, и как вызывать 8)
 

StUV

Rotaredom
WP
имхо, шаблон должен получать объекты "нагруженные данными" (причем, не содержащие неиспользуемых на странице данных) и не имеющими прав на чтение каких-либо данных из каких-либо дополнительных источников.

организация кратко:
main.php парсит request, на его основе строит "нагруженный" необходимыми клиенту данными response (подключая необходимые библиотеки) и передает последний в шаблон.
 

maxru

МИФИст
StuV , ты рассказал принцип действия движка, на который я кинул сцылу 8)

Хотя нет,
у меня... ну скажем main.php парсит входную строку
$_REQUEST['path']. Делает выборку по БД, находит соответствующий шаблон.
А уже в шаблоне прописаны "псевдо-тэги"(я их так называю).
Скажем path=news/archive/2004/12/23
Парсер выдаёт из БД, что для пути news/archive существует шаблон
"news.archive.main", а остальная часть разбивается и идёт, как входные параметры, т.к. в БД у псевдопапки (да, я люблю давать всему новые имена)
"archive" установлен флаг islast=1.
Далее путь разбивается так:
[0]main
[1]archive.main
[2]news.archive.main

Открываются файлы шаблонов main.tpl, archive.main.tpl и т.д.
Далее парсер шаблонов парсит main.tpl

main.tpl:
<html>
...
<body>
...
[container]id=C1[/container]
...
[macro]id=login.system[/macro]
...
</body>
</html>
Пропарсили, увидели дочерний 'container'
Парсим контейнер "C1" в archive.main.tpl,
попутно заменяя макросы на результат их действия. (А вот уже в макросе и бизнес-логика, и всё, что душа пожелает...)

archive.main.tpl

[C1]
Бла-бла-бла. Данные контейнера.
[/C1]

[C2]
А это показано не будет, т.к. в родительском шаблоне нет контейнера "C2"
[/C2]

Фух... запарился


З.Ы. Скорость выполнения (парсер не regex) - около 0.01 секунды
 
Сверху