Для подключения Smarty к PHP нужно выполнить несколько шагов. Вот пример настройки:

1. Установка Smarty

Для начала необходимо установить библиотеку Smarty. Есть несколько способов это сделать:

  • Через Composer (рекомендуется):

    Если у вас настроен Composer, установка может быть выполнена следующей командой:

    
    composer require smarty/smarty   

    Composer автоматически загрузит все необходимые файлы и добавит их в ваш проект.

  • Скачивание вручную:

    Перейдите на официальный сайт Smarty и скачайте последнюю версию библиотеки. Распакуйте архив в папку вашего проекта. Обычно, библиотеку помещают в папку, например, /libs/smarty.

2. Подключение Smarty к проекту

После установки библиотеки необходимо подключить и настроить её в вашем PHP скрипте.

  1. Подключение библиотеки и создание объекта Smarty:

    В файле PHP добавьте следующее:

    
    <?
    
    // Подключаем библиотеку Smarty
    require_once('/path/to/smarty/libs/Smarty.class.php'); // Замените /path/to/smarty на реальный путь к папке с библиотекой  // Создаем объект Smarty $smarty = new Smarty();  // Настройка директорий $smarty->setTemplateDir('/path/to/templates/');      // Директория, где будут храниться шаблоны $smarty->setCompileDir('/path/to/templates_c/');     // Директория, где будут храниться компилированные шаблоны $smarty->setCacheDir('/path/to/cache/');             // Директория для кеша $smarty->setConfigDir('/path/to/configs/');          // Директория для конфигурационных файлов
    ?>

    Настройки директорий обязательны. Вот что они означают:

    • TemplateDir - папка с шаблонами (.tpl) вашего проекта. Здесь будут находиться все ваши файлы шаблонов.
    • CompileDir - папка, в которой Smarty будет хранить скомпилированные версии шаблонов. Важно, чтобы эта папка была доступна для записи.
    • CacheDir - папка для кеширования, если вы используете кеширование в Smarty.
    • ConfigDir - папка с конфигурационными файлами Smarty, если такие используются.

    Замените пути /path/to/... на правильные пути относительно структуры вашего проекта.

  2. Настройка прав доступа к папкам

    Папки templates_c, cache и другие папки, в которых сохраняются временные данные, должны быть доступны для записи веб-сервером. Это можно сделать, установив права на запись с помощью команды:

    
    chmod 777 /path/to/templates_c 
    chmod 777 /path/to/cache   

    Важно! Настройка таких прав может нести риски безопасности, поэтому на продуктивном сервере лучше использовать более безопасные права доступа и настройки.

3. Использование Smarty в PHP

Теперь, когда Smarty подключен и настроен, можно использовать его в своем проекте. Пример:


<?
require_once('/path/to/smarty/libs/Smarty.class.php');

$smarty = new Smarty();

$smarty--->setTemplateDir('/path/to/templates/');
$smarty->setCompileDir('/path/to/templates_c/');
$smarty->setCacheDir('/path/to/cache/');
$smarty->setConfigDir('/path/to/configs/');

// Передача данных в шаблон
$name = "John Doe";
$smarty->assign('name', $name);

// Отображение шаблона
$smarty->display('example.tpl');
?>

4. Пример шаблона Smarty (example.tpl)

Создайте файл example.tpl в директории /path/to/templates/. Этот файл будет содержать HTML и теги Smarty:


<?
require_once('/path/to/smarty/libs/Smarty.class.php');

$smarty = new Smarty();

$smarty->setTemplateDir('/path/to/templates/');
$smarty->setCompileDir('/path/to/templates_c/');
$smarty->setCacheDir('/path/to/cache/');
$smarty->setConfigDir('/path/to/configs/');

// Передача данных в шаблон
$name = "John Doe";
$smarty->assign('name', $name);

// Отображение шаблона
$smarty->display('example.tpl');
?>

5. Работа с переменными и циклами

Smarty позволяет выполнять гораздо больше, чем просто вставка переменных. Вы можете использовать условия и циклы прямо в шаблонах. Вот пример более сложного шаблона:


<title>Пример с циклом</title>
<h1>Список пользователей:</h1>
<ul>
    {foreach from=$users item=user}
        <li>{$user.name} - {$user.email}</li>
    {/foreach}
</ul>

И PHP-код для передачи массива пользователей в шаблон:


<?
require_once('/path/to/smarty/libs/Smarty.class.php');

$smarty = new Smarty();
$smarty->setTemplateDir('/path/to/templates/');
$smarty->setCompileDir('/path/to/templates_c/');
$smarty->setCacheDir('/path/to/cache/');
$smarty->setConfigDir('/path/to/configs/');

$users = [
    ['name' => 'John Doe', 'email' => 'john@example.com'],
    ['name' => 'Jane Smith', 'email' => 'jane@example.com'],
    ['name' => 'Sam Brown', 'email' => 'sam@example.com'],
];

// Передача массива в шаблон
$smarty->assign('users', $users);

// Отображение шаблона
$smarty->display('users.tpl');

?>

6. Включение кеширования

Smarty поддерживает кеширование для повышения производительности. Чтобы включить кеширование, добавьте следующую строку:


$smarty->caching = Smarty::CACHING_LIFETIME_CURRENT;
$smarty->cache_lifetime = 120; // Время жизни кеша в секундах

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

7. Дебаггинг Smarty

Чтобы включить отладку, можно использовать встроенную функцию Smarty для отображения панели отладки:


$smarty->debugging = true;

При включенной отладке Smarty отобразит дополнительную информацию о переданных переменных, что поможет при разработке и устранении неполадок.

Итог

Подключение Smarty к PHP предоставляет мощный инструмент для разделения логики и представления в вашем проекте, что делает код более чистым и поддерживаемым.