| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Libraries > php код в smarty |
| Автор: niaz 15.8.2008, 08:19 | ||||
| Уже давно не могу понять как рализовать 2 решения! 1) передавать в assign не переменню а код php чтобы он сначала выполнился передался шаблону для вывода: (примерное такое)
1) передавать в assign не переменню а код php чтобы он выполнился в шаблоне: (примерное такое)
Я знаю что можно добавить код php в шаблон методом {php}{/php}. Но я же не могу воткнуть весь код сайта в шаблон. |
| Автор: Feldmarschall 15.8.2008, 08:38 |
| код надо сначала выполнить, получить его результат в переменную, и эту переменную передавать в смарти. неужели это не является очевидным при просмотре любых примеров приложений, работающих со смарти? |
| Автор: solenko 15.8.2008, 08:39 |
| 1. Можете объяснить зачем вы используете smarty? 2. Можете привести реальный пример того, что вы спрашиваете? |
| Автор: niaz 15.8.2008, 09:34 | ||||
Примеры приложений я не нашел. Добавлено через 1 минуту и 45 секунд
1.) Смарти использую для шаблона своего портала. А вы что все делаете без шаблона? Можете привести пример? 2.) Пример я привел выше в первом посте. |
| Автор: solenko 15.8.2008, 09:44 | ||||
| niaz, А зачем вам шаблон? Я не использую шаблонов, но суть не в этом. А в первом примере вы привели двух сферических коней. Например
эквивалентно
|
| Автор: Feldmarschall 15.8.2008, 11:07 | ||||
| niaz, http://www.smarty.net/manual/ru/ там есть примеры. но суть я, по-моему, уже объяснил. не
это, надеюсь, не слишком сложно для понимания? |
| Автор: niaz 15.8.2008, 11:31 | ||||||
| Нверное я неправильно выразился! Ну ладно попробую еще раз все обьяснить: Вот сам код шаблона:
А вот теперь сам код сценария smarty:
Мне охота выполнить в сценарии какой либо код либо функцию, чтобы результат вышел в шаблоне в блоке ($content). Код может быть любой: данные из базы, или отправка почты и .т .п. У меня есть страницы статистические, т.е. содержание не меняется, тогда я просто через:
просто передаю весь html теги данных и все. если я в шаблоне укажу {php}{/php} то ведь шаблон будет расти, и у страниц ведь разные коды. Точнее говоря я пишу портал: там есть обьявления, новости, фотки и все такое. А шаблон ведь один. Я же не могу весь код портала занести в {php}{/php} в шаблоне. Сами подумайте что тогда получиться. Пожалуйста обьясните по подробней. |
| Автор: Feldmarschall 15.8.2008, 12:10 | ||
| Ты не ответил на вопрос, зачем тебе смарти. "он мне нужен для шаблона" - это не ответ. судя по всему, ты не понимаешь, для чего нужны шаблоны. В этом случае тебе вообще не нужно ими пользоваться. "шаблон" тебе нужен для того, чтобы не писать 10 раз <html xmlns="http://www.w3.org/1999/xhtml">? ну так возьми свой "шаблон", пропиши в него все свои титлы и кейворды, и просто инклюдь в свой портал.
вот и все. |
| Автор: niaz 15.8.2008, 12:19 | ||
Шаблон мне нужен чтобы дизайн страниц был одинаков. Прикинь если на сайте 200 страниц и в каждом прописан дизайн. А если захочешь поменять стиль одной буквы или таблицы, тогда ваще пипец. Вот и использую чтобы дизайн отделить от програмного кода пхп. Можно уже дизайн менять одним кликом если нужно. А ты сам как делаешь? Или ваще ничего сам не пробовал создавать? |
| Автор: niaz 18.8.2008, 09:14 | ||||
| вы не поняли меня! Повторю вопрос снова! Вот приведу пример синтаксиса Smarty:
и приведу код шаблона.
мне охота чтобы функция test() выполнилась и результат отображался в шаблоне в переменной {$content} Добавлено через 3 минуты и 48 секунд Не уж то в Smarty нет простого решения. Как тогда пользуется весь мир? Вроде внимательно прочитал весь мануал! Наверное есть один выход, написать свой шаблонизатор! Раньше так и делал. Не надо было переходить в Смарти. |
| Автор: solenko 18.8.2008, 09:24 | ||||||
Добавлено через 2 минуты и 10 секунд
Есть еще более верное решение -- написать свой php |
| Автор: Feldmarschall 18.8.2008, 10:33 |
| solenko, очень, очень умное решение. Шаблоны и буфферинг только для этого и придуманы были. |
| Автор: niaz 18.8.2008, 12:24 | ||
а как передать такой код? ob_get_contents() - ом не получается, почему то код выполняется 2 раза!
|
| Автор: solenko 18.8.2008, 12:25 |
| Feldmarschall, естественно для этого! А вы сомневались? А что, их можно еще для чего-то использовать? Выше 10 упоминаний того, как сделать правильно. В моем последнем посте одно упоминание того как сделать правильно. Человек хочет делать неправильно -- это его проблеммы. |
| Автор: Feldmarschall 18.8.2008, 12:31 |
| solenko, вместо того, чтобы ставить человека костыли, да еще и вниз головой, надо ему объяснить, что он не понимает, что такое шаблон. Он не знает, что у страницы тоже бывает шаблон, так же, как у всего сайта. Он сделал шапку, назвал её шаблоном, и не хочет ничего больше слушать. Полагая, что знает больше всех. Так вот, ему надо объяснять, что в данном случае смарти ему нужен, как рыбке зонтик. Если он не использует его по назначению, для шаблонов страниц. Одного не послушал - может быть, к 10 прислушается. А с твоим подходом - давай, рассказывай ему, как целиком готовый скрипт, со всеми его запусками, засунуть в шаблон сайта. |
| Автор: niaz 18.8.2008, 12:43 | ||||
| вы не поняли меня! у меня на сайте один шаблон страницы! приведу пример вот он (просто скопировал без внутренних менюшек и прочемм) index.tpl:
мне хочеться чтобы результат следующего кода был в {$content} . Ребята может я и php плохо знаю. Но очень надо пишу для себя крупный портал и пишу уже давно. Не хотелось бы все переписывать! вот код сценария целиком:
это один из страниц Добавлено через 48 секунд Надеюсь теперь вы меня поймете, чего на самом деле я хочу. |
| Автор: Feldmarschall 18.8.2008, 12:45 |
| об этом и речь. его никто не понимает. его. сам он вообще ничего не слышит, даже не читает. а вот его - такого гениального, и с уникальными проблемами - никто не понимает. жестокие бессердечные люди. |
| Автор: niaz 18.8.2008, 12:54 | ||
Feldmarschall ты не прав. Я да признаю что не верно написал. Говорят "хочешь услышать умный ответ, задай умный вопрос". Вот с эти у меня проблемы, наверное я не могу спросить красиво. В последнем посте я уже полностью привел код. У меня ваще такое чувство что кроме меня нафиг никто не использует Smarty. Так мало примеров в инете и форумов нет (кроме английского на оф сайте). Я все внимательно читаю и пробую. Я уже весь смарти разворотил. Может все решается какой то функцией самого php который мне не известен. Честно говоря уже голова кругом. |
| Автор: Feldmarschall 18.8.2008, 13:08 |
| Я тебе в третий раз повторяю - тебе не нужен шаблонизатор смарти. Ты просто не понимаешь, зачем он нужен. Этот ы его не используешь, а не "все". Та "волшебная функция", о которой ты говоришь - это нарисовать шаблон страницы отправки емейла в смарти! То есть, переделать весь твой "портал". Чего ты, разумеется, не хочешь. В этом случае я предлагаю тебе самое простое решение - отказаться от смарти вообще. |
| Автор: solenko 18.8.2008, 13:14 |
| Feldmarschall, ну что ж, попробуй занятся просвятительной работой а не сказать "я ценю свое время", как обычно. //ушел за попкорном niaz, Я удивляюсь, почему так мало инфы по использованию персональных компьютеров для вспашки земли. Такое впечатление, что только я использую в качестве плуга системник. http://www.smarty.net/manual/ru/language.function.include.php вы этот раздел документации читали? Не натолкнуло на мысль, что можно иметь более одного шаблона? |
| Автор: niaz 18.8.2008, 13:36 |
| solenko да я читал этот раздел! И честно говоря в данное время так и поступаю! Но тогда приходиться держать десятка файлов шаблона. А я хочу оставить шаблон только 1 и все. |
| Автор: Feldmarschall 18.8.2008, 13:43 |
| Не "приходится". Держать десяток файлов шаблона - это именно то, для чего были придуманы шаблонизаторы. Если тебе не хочется - нет проблем - не используй шаблонизатор вовсе. То, что тебе нужно, делается двумя инклюдами. |
| Автор: niaz 18.8.2008, 13:54 |
| Feldmarschall ты прав! Я раньше инклудил и хотел попробовать раз все блоги и форумы хвалили этот шаблонизатор. Но оказалось полезного там нет, а все наоборот муторно раз никто им не пользуется. Придется все переписывать и переделывать, думаю за месяцев 4 закончу. Спасибо всем кто помагал и советовал. Но тему оставлю открытым, вдруг кто найдет решение и надумает поделиться. |
| Автор: Feldmarschall 18.8.2008, 13:57 |
| Полезное там есть. Ты просто не понимаешь, для чего нужен шаблонизатор. Он нужен для того, чтобы разделить логику приложения и отображения. А ты думаешь, что он нужен для того, чтобы сделать шапку сайта в одном файле. Со временем поймешь. Возможно. |
| Автор: niaz 21.8.2008, 21:08 | ||||
| Вот я и вернулся написать ответ. Почему то к сожалению либо модератор либо администратор удалил мои посты в другой теме. Раз никто из здешних профессионалов не смогли ответить, решил искать ответ сам. И знаете как советовал Фельдмаршал сам догадался. Все очень просто, если хотите чтобы ваш php код обрабатывался в шаблоне то надо сделать следующее: весь php код вписываете в функцию в синтаксисе Smarty:
а в шаблоне пишем следующее:
и все. Фельдмаршал, теперь обращаюсь тебе, пожалуйста не сори постами мою тему. |
| Автор: skyboy 21.8.2008, 21:31 |
| niaz, насчет функции - это, надеюсь, шутка? |
| Автор: niaz 22.8.2008, 06:24 | ||
Почему шутка? В чем? А какое решение этой проблемы у тебя? |
| Автор: Feldmarschall 22.8.2008, 09:22 |
| Этот топик интересен уже не в области технологии, а в области столкновения мировоззрений. С одной стороны мы имеем мировоззрение "все можно понять, если стараться". С другой - "я все знаю лучше всех". Отсюда и разность подходов. С одной стороны - "попробуем так объяснить. попробуем эдак рассказать" С другой - "Я! Задал! Вопрос! Как сделать, чтобы 2х2 было равно 5!!! Кто не может ответить - тот ничего не понимает" Ну, и закономерный результат: - все лохи, а я нашел правильный ответ: написать функцию function twobytwo () { return 5 } Я думаю, в таких случаях надо менять методологию ответов. |
| Автор: niaz 22.8.2008, 11:32 |
| Я не считаю никого лохом! У меня даже такой и мысли небыло. Теперь у меня есть мысля другая: "Никто не использует в своих проектах такой похвальный Smarty". И сразу отвечаю почему: Потому что если бы кто то пользовался бы смарти он бы обязательно столкнулся бы моей проблемой! И думаю если кто то знал бы ответ то бы сразу помогли. А тут вместо помочь мне говорят зачем тебе смарти лошара, пользуйся инклудом. Да чуть не забыл: Я нашел еще один вариант моего решения, надо вывести весь код в отдельный файл только вписать ее в {php}{/php} и подключить в синтаксис fetch ом. Но я свой следующий проект буду делать на инклудах! Это самое правильное решение! |
| Автор: Feldmarschall 22.8.2008, 12:07 | ||
анекдот |
| Автор: niaz 22.8.2008, 12:14 |
| Может быть! |
| Автор: Feldmarschall 22.8.2008, 12:19 |
| Эти твои "может быть" - пустые слова. Ты сначала соглашаешься, что можешь быть неправ, а потом выдаешь перл еще похлеще. Ты так и не понял, зачем нужны шаблонизаторы, и смарти в частности. Не понимая, зачем нужны шаблонизаторы, ты берешься судить тыщи людей, которые шаблонизаторами пользуются. У тебя даже не возникает мысли, что если тыщи что-то видят, а ты не видишь - что неправ можешь быть ты, а не они. Нет. единственный вывод, который ты делаешь - смарти фигня, никто не пользуется. Потому что все не понимаю того же, что и ты. Ну не смешно ли? |
| Автор: niaz 22.8.2008, 13:11 |
| Раз не понимаю что ж не обьяснил зачем шаблонизатор? Раз ползовался значит видел выгоду! А эти тысяча людей которые пользуются, что то не один не помог, и ты в их числе. Вместо того помочь ты начал допрос устравивать и говорит зачем тебе смарти. Я ведь не спрашивал пользоватся мне смарти или нет! а спросил конкретно проблему! Сам небось из языков только русский язык знаешь? А ПХП , перл и си первый раз слышишь! |
| Автор: Feldmarschall 22.8.2008, 13:26 |
| фантастическое сочетание невежества и наглости |
| Автор: skyboy 22.8.2008, 13:38 | ||||
потому что не обязан.
с такой проблемой люди не сталкиваются, потому что имеют такую структуру системы, при которой надобности в подобных фокусах попросту не возникает. о том, как должна выглядеть система тебе писали в самом начале. ты сказал, что для тебя количество файлов важнее логичности и структурированности. Вот и получил, что хотел.
|