Рекурсивное построение меню

Фанат
Та не, просто некоторые считают что это типа хелперы и это типа нормально.
В некоторых модных фреймворках подобное дерьмецо чуть не центральное место занимает.
 
Да не, ну ты читай переписку :)
Это был вопрос конкретному клиенту. Я очень надеюсь на положительный ответ ;)
 
Нет, не понимаешь.
вот это -

- к шаблонам не имеет ни малейшего отношения.
Это называется "спагетти".

Меня тут одна мысль озарила.
Скажи, употребляя слово "препроцессор", не имеешь ли ты в виду, что вот этот вот код генерирует код шаблона со смартиподобным иснтаксисом?
Употребляя слово препроцессор я подразумеваю что есть конструкция вида {menu.1}, препроцессор ищет подобные конструкции, "понимает" что нужно запросить у контроллера данные по модулю меню и параметру 1 - контроллер смотрит, видит что есть такой модуль, отправляет в модель, модель в базе берет все данные по меню с параметром 1 и отдает их контроллеру, контроллер отдает их функции из-за которой и началась эта самая тема:)
 
понятно.
классический случай - шаблоном мы считаем только шапку, а весь остальной HTML ничтоже сумняшеся пихаем в код
садись, два
 
понятно.
классический случай - шаблоном мы считаем только шапку, а весь остальной HTML ничтоже сумняшеся пихаем в код
садись, два
Какую-то хрень несешь если честно))
PHP:
{page.doctype}
<html>
	<head>
		<title>{page.title}</title>
		{page.keywords}
		{page.description}
	</head>
	<body>
		<div id="wrapper">
			<div id="head">
				<p>{const.phone}</p>
				<p>{const.address}</p>
				{module.catalog}
			</div>
			<div id="topnav">
				{menu.1}
				{const.bugaga}
			</div>
			<div id="content">
				{page.h1}
				{page.text}
				{module.gallery}
			</div>
		</div>
	</body>
</html>
Вот так выглядит тестовый шаблон) по описаной аналогии в предыдущем сообщении обработка идет, если это не правильно, объясни, пожалуйста, почему, а не бросайся красноречивыми отговорками, никак и никому не помогающими)
 
Когда у тебя menu.1, page.text и module.gallery будет выводиться через шаблоны - вот тогда можно будет сказать, что ты понимаешь, что такое шаблоны и пользуешься ими. А сейчас у тебя ни "препроцессоров", ни "похожих на смарти шаблонизаторов" и в помине нету. Есть только бесполезный фантик и куча умных слов.
 
Когда у тебя menu.1, page.text и module.gallery будет выводиться через шаблоны - вот тогда можно будет сказать, что ты понимаешь, что такое шаблоны и пользуешься ими. А сейчас у тебя ни "препроцессоров", ни "похожих на смарти шаблонизаторов" и в помине нету. Есть только бесполезный фантик и куча умных слов.
Под шаблонами подразумеваешь конструкции вроде:
require_once('path/to/module/menu.php');
а в menu.php:
<ul>
<? foreach(bla as blabla=>blablabla):?>
теги теги теги
<?endforeach;?>
 
Я говорил не о конкретном синтаксисе, который может быть таким, может быть "смартиподобным", или XML-подобным, что не принципиально.
Я говорил о подходе.
При котором отображение отделено от получения и обработки данных, что позволяет легкую смену дизайна с одной стороны, и правку кода не затрагивая оформление - с другой.
В твоем же случае это невозможно - оформление перемешано с кодом.

Такая лапша работает на упрощённом дизайне, приведенном тобой в пример.
В реальном коде, где кучи стилей, яваскрипта,гораздо больше html тегов - запихивать всё это в кавычки пхпшных строк и отслеживать глюки синтаксиса будет в разы сложнее
 
GusakovNick А вот поясни, откуда взялся код из первого поста? Он появляется из того шаблона парой постов выше? Каким образом?
 
GusakovNick А вот поясни, откуда взялся код из первого поста? Он появляется из того шаблона парой постов выше? Каким образом?
Не совсем, я тяну шаблон из файла, построчно ищу в нем {*}, далее по определенным правилам выполняю какие-то действия, записываю в массив пары *=>замена и второй раз прохожусь по шаблону, попутно заменяя {*} значениями из массива, это основной принцип
То есть написав {menu.100500} в функцию уйдут данные по меню с id 100500
 
Я говорил не о конкретном синтаксисе, который может быть таким, может быть "смартиподобным", или XML-подобным, что не принципиально.
Я говорил о подходе.
При котором отображение отделено от получения и обработки данных, что позволяет легкую смену дизайна с одной стороны, и правку кода не затрагивая оформление - с другой.
В твоем же случае это невозможно - оформление перемешано с кодом.

Такая лапша работает на упрощённом дизайне, приведенном тобой в пример.
В реальном коде, где кучи стилей, яваскрипта,гораздо больше html тегов - запихивать всё это в кавычки пхпшных строк и отслеживать глюки синтаксиса будет в разы сложнее
А почему тут отображение не отделено он логики? данный скрипт составляет очень подрбное меню, до каждого элмента фактически можно достучаться стилями или js
 
Фанат Человек, как видишь, мастерит свой шаблонизатор и возражения по лапше и стилю не совсем приемлемы.

GusakovNick Ошибка этого топика в том, что нужно было обсуждать ИСХОДНЫЙ синтаксис шаблона и явно рассказать откуда ноги растут.

Вопрос первого поста таким образом, разрешается вводом специального тега "начало макрокоманды", "конец макрокоманды" и еще одного - "вызов макрокоманды".
 
ksnk
Да с чего ты взял? Ничего он не мастерит. Нету у него ни шаблона, ни синтаксиса.
Классический "шаблон" вида
PHP:
шапка
{контент}
подвал
в котором контент выводится старым добрым говнокодом без шаблонов.
Я о таком еще года три назад писал:
Самое простое и очевидное заблуждение состоит в том, что новички называют шаблоном вынесенный в отдельный файл "дизайн" - обший html для всех страниц сайта. И на этом успокаиваются. Динамическую информацию, ничтоже сумняшеся, выводя старым добрым echo :-)
 
ksnk
Да с чего ты взял? Ничего он не мастерит. Нету у него ни шаблона, ни синтаксиса.
Классический "шаблон" вида
PHP:
шапка
{контент}
подвал
в котором контент выводится старым добрым говнокодом без шаблонов.
Я о таком еще года три назад писал:
У тебя неприлично предвзятое мнение о новичках, если я выложил тестовый шаблон и в нем отнюдь не так, как ты указал - стоит задуматься, над тем что лучше что-то посоветовать дельное, нежели сидеть и ворчать)
 
Фанат
Ну так хелперы это то же самое, только в меньшем объеме. ;)
Не вижу в контексте генерации html вызовом php функции концептуальной разницы между { tree } и { content } ;)

Притом что если { content } просто поначалу от непонимания, то с этими хелперами смешно - накрутили иерархии классов, эм вэ мать его цэ, шаблонизаторы-хренизаторы, и тут опа вышли опять на Дерибасовскую =)
 
GusakovNick Вопрос про код из первого поста, все-таки,остается открытым. Откуда он взялся? Он написан вручную и это "значение", которое будет "подставлено" в место шаблона с каким-нибудь {menu.100500}
 
У тебя неприлично предвзятое мнение о новичках
На зеркало не надо пенять.
стоит задуматься, над тем что лучше что-то посоветовать дельное
Во-первых, если тебя интересует дельный совет, надо задуматься над тем, чтобы не спорить, называя черное - белым, а этот самый совет попросить.
Вот, к примеру, как задача решается в "смартиподобных языках": http://www.smarty.net/docs/en/language.function.function.tpl (see ex. 7.43)
 
Сверху