Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Обучение на примерах (Smarty)


Автор: xarakiry 8.8.2008, 10:26
Подскажите пожалуйста материалы для обучения smarty, с примерами его применения. Официальная документация есть..но там практически нет примеров применения. В нете шарил..но дельного ничего не нашёл....

Автор: skyboy 8.8.2008, 12:41
Цитата(xarakiry @  8.8.2008,  09:26 Найти цитируемый пост)
 Официальная документация есть..но там практически нет примеров применения. В нете шарил..но дельного ничего не нашёл....

там под каждую конструкцию(циклы foreach и section, условия if/elseif/else, включение другого шаблона include и т.д.) есть примеры. даже по несколько. а какой пример ты ожидаешь? полностью HTML-страницу? тогда лучше обратиться к азам верстки.
если ты насчет РНР-кода(как инициализировать систему и вывести шаблон), то в документации есть отдельная http://www.smarty.net/manual/ru/installing.smarty.basic.php
и по установке http://www.smarty.net/manual/ru/installing.smarty.basic.php
да, и здоровій пример использования тоже http://www.smarty.net/sampleapp/sampleapp_p1.php

Автор: nezabor 3.7.2009, 17:18
это всё понятно, вот только меня интересует сам алгоритм
не могу никак сообразить
как там всё устроено

я так понимаю 

index.php -> main.tpl внем соответственно шаблон меню и шапки base.tpl и шаблон новостей news.tpl


и вот как описывается приметивно их связь и где мне задавать все переменные 

Автор: patap 3.7.2009, 18:05
как говорится - производитель рекомендует. даже на русском есть smile
http://smarty.net/distributions/manual/ru/Smarty-2.6.14-docs.pdf

вполне доступно написано, лично я так и расчихлялся

Автор: nezabor 6.7.2009, 09:22
о том, что есть мануал на русском это я уже знаю
мнебы русским языком объяснил кто smile 

Автор: Photon 6.7.2009, 11:43
nezabor,  может за тебя еще и всё сделать?

Здесь тебе могут подсказать решение, когда что-то не получается, но если ты даже не пытаешься сам разобраться, то тут уж извини..  Делать за тебя никто не будет.

Автор: nerezus 6.7.2009, 12:54
nezabor, 10 баксов в час. ICQ 547097.
Могу дать портфолио, если что )

Автор: nezabor 6.7.2009, 13:12
ребята, я не думаю, что решением является отправить читать мануал, в более верхней теме я написал конкретный вопрос

кстати я уже прочитал начало руководства к smarty

меня интересует один простой вопрос как там происходят вложения, только обычным русским языком до меня не доходит smile

Добавлено через 3 минуты и 7 секунд
Цитата(nerezus @ 6.7.2009,  12:54)
nezabor, 10 баксов в час. ICQ 547097.
Могу дать портфолио, если что )

интересно, за какие услуги такие расценки

Автор: nerezus 6.7.2009, 13:19
Цитата

интересно, за какие услуги такие расценки
 За обучение. Считаем: 10 * 8 * 20 = $1600/месяц, что дешево по меркам Москвы при постоянной работе. А это даже и не постоянная.

Автор: nezabor 6.7.2009, 13:20
а как будет проходить обучение

Автор: nerezus 6.7.2009, 14:50
Skype или ICQ
предварительно темы скажи, чтобы время не терять.

Автор: Photon 6.7.2009, 15:11
Блин, это пипец..

Переменные задаешь в своем index.php

Все остальное так:  index.html

В нужных местах вставляешь конструкцию {include file="base.tpl"} или {include file="news.tpl"}

Автор: patap 6.7.2009, 18:19
я долблю примерно так:

есть шаблоны:

index.tpl    -   это может быть любой страницей
header.tpl  - шапка
footer.tpl - футтер
content.tpl - вводиться то, что будет инициировано в index.tpl
baseContent.tpl  - файло, где все собирается в кучу


index.tpl - 
Код

{* Smarty*}
{assign var='title' value='Main page'}                {* задаем заголовок для страницы, будет выведен в шаблоне header.tpl *}

{capture name='content'}                             {* делаем капчу, в которую загоняем весь контент для данной страницы, будет выведен в шаблоне content.tpl *}

Please login to control panel
<div id="login">
  <form action="index.php" method="post">
    <table cellpadding="5" id="log_text">
      <tr>
        <td>name</td>
        <td><input type="text" name="usr" class="fld"></td>
      </tr>
      <tr>
        <td>password</td>
        <td><input type="password" name="pwd" class="fld"></td>
      </tr>
      <tr>
        <td>[<a href="forgot.php">forgot?</a>]</td>
        <td align="center"><input type="submit" value="Login" class="butt"></td>
      </tr>
    </table>
  </form>
</div>
{/capture}

{include file='base_content.tpl'}        {* коннектим файло где все файлы собраны в кучу *}


header.tpl - это шапка, тут все то, шо должно быть в "голове" страницы. Также я тут подключаю CSS, JavaScript
Код

{* Smarty *}
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<meta http-equiv="Cache-Control" content="no-cache">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Lang" content="en">
<meta name="author" content="patap">
<meta name="description" content="">
<meta name="keywords" content="twitter, feed, rss">
<title>{$title}</title>                                                      {* Выводим ранее определенный в файле index.tpl заголовок страницы*}                    
<link rel="stylesheet" type="text/css" href="sheets.css">
<script language="javascript" src="ajax/lib/JsHttpRequest/JsHttpRequest.js"></script>
</head>
<body>


footer.tpl - это футтер, тут понятно
Код

{* Smarty *}
</body>
</htlm>


baseContent.tpl - тут собираем в кучу, располагаем фалы в праивильном порядке: голова -> тело -> футтер
Код

{include file='header.tpl'}
{include file='content.tpl'}
{include file='footer.tpl'}


content.tpl - тут будет выводиться контент для страницы
Код

{* Smarty *}
<div id="content">
    {$smarty.capture.content}
</div>



вот и все собственно. Все основные действия будут происходить в файле index.tpl, а именно в капче {capture name='content'} ....  {/capture}

теперь все это дело запускается из файла index.php

Код

  include 'include.php';  
  $smarty->display('index.tpl');


и получаем результат


теперь чтобы создать новый файл, допустим с обратной связью с админом сайта, назовем его contact.php, делаем следующее

1. создаем файл contact.php
Код

  include 'contact.php';  
  $smarty->display('index.tpl');


2. и создаем для него соответствующий шаблон
Код

{* Smarty*}
{assign var='title' value='Contac Us'}                {* меняем заголовок страницы *}

{capture name='content'}                                  {* опять наполняем капчу, нужным контентом *}

Тут будет, допустим, форма для обратной связи


{/capture}

{include file='base_content.tpl'}        {* коннектим файло где все файлы собраны в кучу *}







Автор: Ипатьев 6.7.2009, 19:23
Мда, теперь я понимаю, почему смарти считается тормозным шаблонизатором, хотя казалось бы - нативный пхп код...

Автор: nerezus 6.7.2009, 19:35
Ипатьев, и кем считается?)

Автор: Photon 7.7.2009, 06:04
patap,  одно мне непонятно: нафига использовать как минимум один лишний шаблон?

Берём index.tpl и кучу файлов, соответствующих различным страницам..
В index.php делаем:
Код

$smarty->assign('content', 'название_нужного_шаблона');

ну и соответственно все другие необходимые переменные типа заголовка, ключевых слов и т.п.

А в index.tpl:
Код

<!--
Тут у нас типа хидер
-->
{include file="$content.tpl"}
<!--
Тут у нас типа футер
-->

Автор: nezabor 8.7.2009, 11:32
а кто скажет почему такой баг
в content.tpl шрифт не слушается размера, хотя слушается название шрифта из main.css

main.tpl
Код

{* Главная страница *}
{include file='header.tpl'}
{include file='footer.tpl'}
{include file='content.tpl'}


header.tpl
Код

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Smart Compute Service</title>
<link href="/css/main.css" rel="stylesheet" type="text/css">
</head>
<body>
<table width="100%" border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="#fbd3a7">
  <tr>
    <td align="center"><table width="100%" border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td width="326" height="150"><img src="/img/verx_01_01.png" width="334" height="150" /></td>
        <td valign="bottom" background="/img/verx_01_02.png"><img src="/img/verx_01_bukv.png" width="539" height="104" /></td>
        <td width="80" background="/img/verx_01_03.png">&nbsp;</td>
      </tr>
    </table></td>
  </tr>
</table>


main.css

Код

a {
    font-family: Tahoma, SansSerif;
    font-size: 12px;
}
body {
    font-family: Tahoma, SansSerif;
    font-size: 12px;
    color: #000000;
}
.men_z {
    font-family: Tahoma, SansSerif;
    font-size: 16px;
    font-weight: bold;
}


content.tpl

Код

<table width="100%" border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="#fbd3a7">
  <tr>
    <td align="center"><table width="100%" border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td width="51" height="50" background="/img/niz_01.png">&nbsp;</td>
        <td width="233" valign="middle" background="/img/niz_01.png">&nbsp;&nbsp; Copyrite&nbsp; <b>SCS engyne</b> &copy; 2009 </td>
        <td valign="middle" background="/img/niz_01.png"> <p>E-mail: <a href="mailto: admin@smart-cs.com">admin@smart-cs.com</a></p>
          </td>
        <td width="19" background="/img/niz_02.png">&nbsp;</td>
      </tr>
    </table></td>
  </tr>
</table>
</body>
</html>


Автор: Ипатьев 8.7.2009, 12:24
Это вопрос уже совсем не по смарти.
Для отладки HTML и CSS порекомендую аддон Firebug для Firefox.

Автор: nezabor 8.7.2009, 15:12
есть нашел баг 


Код

body {
    font-family: Tahoma, SansSerif;
    font-size: 12px;
    color: #000000;
}



а надо 

Код

body, table, td {
    font-family: Tahoma, SansSerif;
    color: #000000;
    font-size: 12px;
}


почему-то таблица по другому не слушает размер

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)