Page Feed CatalogFiles Forums Services
MPCHAT - CMS хостинг чатов для профессионалов
77   •   Посмотреть все темы

ОБНОВЛЕНИЯ и НОВЫЕ ФУНКЦИИ!

1 2 3

19785
Dimitry @Dimitry
[b]Обработчик шаблонов и скриптов для продвинутых[/b]
[color=red](перенесено, обработчик разработан в декабре 2021г)[/color]

[b]Описание работы шаблонизатора[/b]

Шаблонизатор теперь подгружается автоматически для всех скриптов, ранее это делала фнукция putinclude(). Система проверяет название модуля, берёт из переменной в [b]/?inc=module[/b] или берёт из ссылки [b]/module[/b]. Если есть PHP модуль [b]module.php[/b] то загружает его + в конце подгружает [b]module.inc[/b], если нет, то сразу загружает [b]module.inc[/b], если и его нет то [b]module.html[/b] (устаревшее). Модуль по умолчанию - титульная страница [b]index.inc[/b].

[color=blue]НОВОЕ[/color]: Если модуль или шаблон не найден, то будет подгружена 404 страница [b]error.inc[/b] c ошибкой "404 - Страница не найдена".

[color=blue]НОВОЕ[/color]: Теперь можно в любых php модулях использовать [b]массив переменных $var[/b] который автоматически подгружается и подставляет переменные в шаблон. Но это конечно же не всё, также теперь можно подгружать [b]PHP функции[/b] которые будут автоматически вставляться в шаблон.

[color=blue]НОВОЕ[/color]: Все системные функции размещаются в файле [b]_functions.php[/b] и его нельзя изменять. Чтобы добавить свои функции, просто создайте свой новый файл [b][color=blue]_myfunctions.php[/color][/b] в папке рядом с файлом index.php. Этот файл автоматически подгружается в систему и его функции доступны везде. По аналогии с include, все функции могут принимать только 1 входящий параметр. Например: [b]%myinfo=name%[/b] запустит функцию [b]_myinfo('name');[/b] - которая может выводить имя авторизованного пользователя. Пример:
[quote]function _myinfo($var) {
global $u;
if( $u && !in_array($var, ['id','nick','name']) ) return ""; //security
return $u[$var];
}[/quote]

[b]Системные функции[/b]

Некоторые функции шаблонизатора уже готовы по умолчанию, ниже описание:

1. [b]%year%[/b] - запускает функцию _year() и выдаёт текущий год.

2. [b]%loadtime%[/b] - запускает функцию _loadtime() и выдаёт время загрузки PHP скрипта.

3. [b]%include=file.html%[/b] - запускает функцию _include($file) и вставляет HTML шаблон в нужное место страницы. Например чтобы подгружать шапку и подвал сайта можно использовать: %include=header.html% и %include=footer.html%

Пример простейшей функции _year():
[quote]function [b]_year()[/b] {
$html=date("Y");
return $html;
}[/quote]

[b]Исправления для тех кто использует свои [color=red]PHP модули[/color] или редактирует их под себя[/b]

1. Необходимо провести важные изменения чтобы чат оставался рабочим в будущем. Если в вашем файле в самом низу есть функция [b]putinclude[/b], её необходимо удалить. Кроме этого входящие в неё параметры должны быть определены переменными [b]$script и $vars[/b]. Если не знаете как это сделать, скачайте новый стандартный файл и посмотрите в самом низу.
2. Позже планируется убрать отдельную обработку переменной $script. Она будет добавлена в массив $var.
3. Из всех PHP скриптов удалён код с loadtime выводящий время загрузки страницы. Теперь можно использовать просто %loadtime% в любом шаблоне.

[b]Как настроить CRON для чата?[/b]

Добавлена возможность подключить свой крон файл в котором уже подключены функции из _functions.php/_myfunctions.php, выполнено подключение к базе и прочитан конфиг в переменную $cfg. Настройка ниже.

1. Необходимо по аналогии с [b]_myfunctions.php[/b] создать свой файл крона рядом с файлом index.php и назвать его: [b]_mycron.php[/b]
2. Для ежеминутного запуска этого файла зайдите в панель Webserv24 Планировщик и добавьте строку крона заменив [b]chatlogin[/b] на логин вашего чата. Вывод информации будет добавляться в файл data/cron.dat:
[quote]* * * * * cd /home/[color=blue]chatlogin[/color]/[color=blue]chatlogin[/color]/; /usr/bin/php index.php >> data/cron.dat[/quote]
3. Всё, ваш файл подключен и запускается каждую минуту.
[color=red]ВАЖНО![/color] Обратите на пример файла, так для безопасности должен выглядеть этот файл:
[code]<?php
if(!defined('CHAT')) die();

//каждый день в полночь
if(date("H:i")=="00:00") {
//echo date("H:i:s")." Cron daily started\n";
}

//каждый час в 00 минут
if(date("i")=="00") {
//echo date("H:i:s")." Cron hourly started\n";
}

//ниже каждую минуту

[/code]



[color=red]Скоро допишу тут описание нового шаблонизатора....[/color]

Это закрытая тема - нельзя отправлять сообщения.