воскресенье, 13 ноября 2011 г.

Движок шаблонов Smarty

Эта статья посвящена основам управления движка шаблонов Smarty. Это простой пример для разработки в пхп. Разберем основные стандарты и штуки.
Smarty - это компилирующий обработчик шаблонов для PHP
Зачем использовать смарти?
- Разделение кода и дизайна
- Никакого говнокода!
- Для управления шаблонами не обязательны знания PHP
- Дизайнеры и программисты могут легко работать не обвиняя друг друга)

Где найти??
Скачать можно тут -> smarty.net/download, нужно выбрать версию подходящую к вашей сборке пхп.
Как установить?
Здесь главное это путь куда скидывать пакет. Скачанный файл разархивируем в папку appserv/www. Ну и запускаем.
Базовый синтексис смарти
Для начала, в файл index.php подключаем класс смарти - require('libs/Smarty.class.php');. Затем создаем обьект класса - $smarty = new Smarty; и определяем переменные $smarty->assign("var_name", "Smarty");.
Добавляем стили и скрипты в файл шаблона (.tpl)
{literal}
<link rel="stylesheet" href="css/style.css" type="text/css">
<script>
function display(){
document.write(“Привет!!”);
}
</script>
{ /literal}
Примеры использования
Условия
{if (условие)}
----- действие ----
{/if}
{if (условие)}
----- действие ----
{else}
----- действие ----
{/if}
{if (условие)}
----- действие ----
{elseif (условие)}
----- действие ----
{/if}
{/if}
В условиях: 'eq' для '==' и 'neq' для '!='

Циклы
{section name=i loop=$ptquestionary}
{$ptquestionary[i]}
{/section}

Разработка простейшего приложения используй смарти: регистрация пользователя
DataBase
CREATE TABLE USERS (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
fullname VARCHAR( 255 ) NOT NULL ,
user_name VARCHAR( 255 ) NOT NULL ,
password VARCHAR( 255 ) NOT NULL ,
created_on TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
NOT NULL DEFAULT CURRENT_TIMESTAMP
);
Config.php
<?php
$dbHost = “localhost”;
$dbUser = ”пользователь”;
$dbPassword=”пароль”;
$dbName=”имя_БД”;
$con = mysql_connect($dbHost,$dbUser,$dbPassword);
$sel = mysql_select_db($dbName,$con) or mysql_error();
?>
Index.php
<?php
include(“libs/Smarty.class.php”);
include(“config.php”);
$smarty = new Smarty;
$smarty->debugging = true;
$smarty->caching = true;
$smarty->cache_lifetime = 120;
$smarty->assign("title", "регистрация пользователей используя смарти");
$smarty->display('index.tpl');
?>
Register.php
<?php
include("config.php");
if(isset($_POST))
{
$query = "INSERT INTO USERS(fullname,user_name,password) VALUES (' ".mysql_escape_string($_POST['fullname'])."', '".mysql_escape_string($_POST['user_name'])."','".md5($_POST['password'])."')";
$result = mysql_query($query);
if($result)
{
echo "<script>window.location='index.php?msg=все отлично!';</script>";
}
}
?>
Файлы шаблонов
Header.tpl
<HTML>
<HEAD>
<TITLE>{$title}</TITLE>
{literal}
<style type="text/css">
body{
font-family:Arial, Helvetica, sans-serif;
font-size:12px;
color:#333333;
}
</style>
{/literal}
</HEAD>
<BODY >
Index.tpl
{include file="header.tpl" title={$title}}
<form method=”post” action=”register.php”>
<div>
<div>Имя : <input type=”text” name=”fullname” id=”fullname”></div>
<div>Ник : <input type=”text” name=”user_name” id=”user_name”></div>
<div>Пароль : <input type=”text” name=”password” id=”password”></div>
<div><input type=”submit” name=”submit” value=”submit” ></div>
</div>
</form>
{include file="footer.tpl"}
Footer.tpl
</BODY>
</HTML>
Вот и все. Если есть вопросы - в комментарии!  

1 комментарий:

  1. Подскажи, где должны лежать файлы *.tpl тоже в корне? или их можно будет закинуть в подпапку?
    И еще в чем может быть проблема как только я подключаю библиотеку Smarty, сервер возвращает что произошла ошибка(хотя я подозреваю что может быть не совместима версия PHP, только как в этом убедится?).

    ОтветитьУдалить