Делаю плагин для getsimple cms. Плагин включает в себя функцию-шаблонизатор подставляющую в текст значения переменных.
Значения берутся через $GLOBALS['имя переменной'].
Если вызывать мой код напрямую все работает а если из cms в $GLOBALS отсутствуют переменные из того файла в котором вызывается функция шаблонизатора. Вероятно это связано с использованием буферизации вывода, но непонятно почему теряется контекст того файла в котором функция непосредственно вызывается.
структура кода:
в главном файле плагина
require_once(GSPLUGINPATH.plagdir.'common.php');//подключение файла с функциями плагина
# activate filter
add_filter('content','user_show'); //подписка на получение/изменение текста страницы перед отображением
function user_show($text) //функция вызываемая cms для обработки текста страницы плагином
{
return process_template($text);//функция рекурсивного шаблонизатора из common.php
}
шаблонизатор при обнаружении в тексте
{%имя php файла из папки для подключаемых файлов%}
подставляет вывод соответствующего php файла с помощью функции
function get_content($filename, $args)
{
$replacement = '';
if (is_file(GSPLUGINPATH . plagdir . '/inc/' . $filename . '.php'))
{
ob_start(); //включение буферизации вывода
include (GSPLUGINPATH . plagdir . '/inc/' . $filename . '.php');
$replacement .= ob_get_contents(); //присоединение содержимого буфера к $replacement
ob_end_clean(); //очистка буфера
$replacement = process_template($replacement);//рекурсивная обработка
}
if ($replacement == '') return $replacement;
}
проблемы начинаются при вызове функции шаблонизатора из пресловутого
GSPLUGINPATH . plagdir . '/inc/' . $filename . '.php'
функция не видит глобальных переменных этого файла