Jump to content
  • 0

Кто использовал Смарти?


shkoda
 Share

Question

Возник вопрос. Если кто-нить использовал Смарти, то подскажите, как организовывается структура сайта? Для каждой страницы пишется отдельный шаблон? И для того, чтобы поменять, например, логотип, нужно изменять все шаблоны? Или шапки и футеры отдельно хранятся?

Кто что знает, пишите

Link to comment
Share on other sites

24 answers to this question

Recommended Posts

  • 0

Шаблонить можно не только страницы, но и элементы. Например надо вывести новости

{if !empty($news)}
<ul class="news-items">
{foreach from=$news item="v"}<li>{include file="e_news.tpl" news=$v}</li>{/foreach}
</ul>
{/if}

где в файле e_news.tpl верстка 1 новости. Ну и так далее все присутствующие на сайте сущности, функциональные элементы и т.д.

Цель - свести верстку разделов и страниц к разметке структуры и подключению набора шаблонов.

Link to comment
Share on other sites

  • 0
спасибо, я еще прочитала, что и данный сайт тоже использует Smarty. Теперь дело за малым самой попытаться что-нить наваять.

В книге Д. Котерова и А. Костар?ва PHP 5 в самом конце есть глава, описывающая способ использования компонентного подхода с помощью смарти. Принцип такой: в смарти можно регистрировать собственные блоки вида:

{send_mail var="result" theme="Тема письма" to="qwe@qwe.ru"}

тут шаблон

{/send_mail}

Смарти разобрав данную конструкцию вызовет функцию send_mail($theme, $to) (а лучше оформить один модуль в виде класса и вызывать какой-нибудь метод по умолчанию, например main()), которую мы до этого определили, которая верн?т массив значений необходимых в шаблоне и запишет их в смартевскую переменную $result, которая будет доступна в шаблоне.

Например:

{send_mail var="result" theme="Тема письма" to="q!!we@qweru"}

Теперь доступна переменная смарти {$result}, которая содержит, например массив значений:

'is_send' => 1

'error' => 'invalid_mail'

И теперь мы можем вывести соответствующий текст в зависимости от значения переменных.

{if $result.is_send == 1}

Письмо отправлено

{else}

Ошибка при отправке:

{if $result.error == 'invalid_mail'}

Не верно указан емаил получателя

{else}

Неизвестная ошибка

{/if}

{/if}

{/send_mail}

В итоге получаем полное отделение дизайна от кода и возможность повторного использования кода (модулей) в других проектах всего лишь изменив смарти шаблон.

Кстатии, realto.ru именно по такому принципу построен.

Link to comment
Share on other sites

  • 0
Попробую поискать книгу, почитаю. А вообще впечатления от нее хорошие?

Мне понравилась. Очень хорошо вс? описано, особенно понравились 2 главы про шаблонизаторы. Я из-за них В общем-то книгу и покупал. Но вс? остальное тоже стоит почитать. Вс? зависит от Вашего уровня. Посмотрите содержание и решайте: http://www.books.ru/shop/books/233988

Link to comment
Share on other sites

  • 0
Возник вопрос. Если кто-нить использовал Смарти, то подскажите, как организовывается структура сайта? Для каждой страницы пишется отдельный шаблон? И для того, чтобы поменять, например, логотип, нужно изменять все шаблоны? Или шапки и футеры отдельно хранятся?

Кто что знает, пишите

На мой взгляд лучше всего все запросы перенаправлять одному главному скрипту-контроллеру, который будет в зависимости от переданных параметров (если адрес вида index.php?page=contacts) или от строки адреса (/contacts/) выбирать нужную страницу (дерево разделов хранится в базе или ещ? где), выбирать шаблон для этой страницы, заполнять шаблон контентом данной страницы и выдавать пользователю обработанную страницу. Т.е. имеется, например, один шаблон для всего сайта. В н?м в разных местах (на месте правой и левой колонки и центральной части) стоят смарти теги вида {include file=$_center_part}. Когда вызывается страница, находится этот главный шаблон сайта для не?, переменным вида $_center_part задаются адреса файлов (шаблонов смарти), содержащих контент для данной выбранной страницы (index.php?page=contacts), вс? это дело скармливается смарти и получаем результат! При этом конструкции вида:

{send_mail var="result" theme="Тема письма" to="qwe@qwe.ru"}

тут шаблон

{/send_mail}

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

Link to comment
Share on other sites

  • 0
Ты уже писал свои сайты с помощью Смарти? Ты говоришь явно со знанием дела. Если так, то после того, как я попробую что-нить сделать, может я к тебе обращусь за консультациями?

Да, писал. realto.ru как раз я и писал (кстати эту тему-то и наш?л увидев переходы в статистике).

Если что понадобится, то пиши на mvh@list.ru.

Link to comment
Share on other sites

  • 0
почитал почитал,

на пхп классами и функциями те же самые шаблоны реализовать принципеально сложнее?

Вы о ч?м? Какие шаблоны Вы с помощью классов и функций реализовать хотите? Поясните.

Link to comment
Share on other sites

  • 0

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

Вы как-нить поточнее формулируйте свои вопросы, тогда и ответы будете получать более точные

Link to comment
Share on other sites

  • 0

Привет, я использую шаблонизатор смарти.

Уже достаточно долго. И скажу Вам, что это ооочень хорошая штука.

Намедни, делал сайт и решил автоматизировать создание сайта. Тем самым за основу взял Смарти.

написал index.php с поддержкой mod_rewrite (точнее эмуляцией mod_rewrite для бесплатного хостинга).

написал конфиг с комментами

накинул еще пару фичей, к примеру если мы вызываем /index.php/some_page/ , то если в папке php есть такая страница some_page.php, то она выполняется перед смарти и в глобальную переменную попадают результаты, а смарти уже их обрабатывает.

Получилось довольнотаки удобно.

+ даже при выводе контента смарти цепляет функции {$function} из контента, что да?т возможность добиться большей динамики.

и это ещ? не вс?! в самом коннтенте, который представлен в отдельной папке html файлами можно добавлять переменные в комментариях, которые попадают в еще одну отдельную переменную.

Тем самым, имея обычный NVU(визуальный редактор с возможностью редактирования и ведения сайта с FTP) можно полностью управлять контентом небольшого сайта.

Сама системка весит около 500-600 кб.

Добавив расширения смарти(плагины), можно создать хорошую функциональность сайту!

Так что Смарти -- руль)

Link to comment
Share on other sites

  • 0

Имхо, книгу покупать не стоит, достаточно почитать smarty.php.net и поискать пару статей в гугле, смарти достаточно простой шаблонизатор.

К примеру есть файл index.php, в нем код и определение переменных для шаблона index.tpl через

$smarty->assign('peremennaya', $peremennaya);

Для отображения шаблона $smarty->display('index.tpl');

И чтобы переменные использовать в шаблоне достаточно указать {$peremennaya}, для е? вывода в контент.

Этого достаточно, чтобы начать использовать смарти, остальное в процессе очень легко освоить..

Link to comment
Share on other sites

  • 0

Легко, не спорю.

Но полностью оценить функциональность смарти на данном этапе сложно.

Есть еще оочень хорошие штучки:

1. Можно написать плагин для смарти и увелисить функциональность сайта, не прибегая к дополнительным php-страницам. написать плагин очень легко. Например, я написал плагин вывода всех рисунков из указанной папки. Очень удобно.

2. Можно фетчить (компилировать, выполнять так же замены переменных и в контенте). Таким образом ваш контент становиться тоже динамичным. Но такие действия нельзя использовать, когда контент добавляется пользователями.

В общем, ещ? есть огромное колличество фич, которые можно прикрутить к смарти. Это не сложно, но потом будет чертовски удобно :)

Link to comment
Share on other sites

  • 0
Возник вопрос. Если кто-нить использовал Смарти, то подскажите, как организовывается структура сайта? Для каждой страницы пишется отдельный шаблон? И для того, чтобы поменять, например, логотип, нужно изменять все шаблоны? Или шапки и футеры отдельно хранятся?

Кто что знает, пишите

Как угодно. Как напишете, так и будет.

Link to comment
Share on other sites

  • 0
но там нет исходников, там ссылки на ресурсы, которые работают со смарти

Это список продуктов, которые используют Smarty, если вы нажмете на синенький текст (ссылку), то вы перейдете на сайт этого продукта, где можете поискать заветное слово "download", и скачать себе исходники.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy