Elite-Board tech support
https://forum.illusionweb.ru/

Расширение функционала движка
https://forum.illusionweb.ru/viewtopic.php?f=3&t=3823
Страница 1 из 2

Автор:  Сергей Маслов [ 28 авг 2019, 09:35 ]
Заголовок сообщения:  Расширение функционала движка

Здравствуйте!
Хотел немного расширить функционал движка, например, добавить свои переменные или функции без модификации ядра.
Но нигде не нашел ответа. В документации только как добавлять при выводе ссылки. Но это не совсем то.
Хочу, например, добавить проверку наличия файла на сервере.
Включение модуля PHP в шаблоне не вариант. Smarty все-таки тормозная штука и обращаться к PHP через Smarty не комильфо. Проще же напрямую...
Но как?

Автор:  Сергей Маслов [ 28 авг 2019, 11:49 ]
Заголовок сообщения:  Re: Расширение функционала движка

Не дождался ответа от поддержки, хотя на support@illusionweb.ru после обращения сказали, что бы разместил и дал им ссылку.
Пришлось въезжать самому, т.к. никакой документации по расширению функционала разработчик не опубликовал.
Итак.
Для того что бы добавить функции или переменные нужные вам в шаблонах необходимо:

1. Создать файл скрипта модификатора Smarty на PHP с любым именем (например, mysmarty.php и т.д.) и положить в любую удобную для вас папку сайта (например, Smarty или includes/compile и т.д.)
2. В файле прописать ваш модификатор для Smarty:
function my_fun_name($param){
// здесь код на PHP
return $var;
}
$smarty->register_modifier("my_fun", "my_fun_name");

где - my_fun_name - имя функции для получения модификатора
my_fun - имя модификатора в Smarty
$param - параметры в вашу функцию из Smarty
$var - возвращаемое значение в Smarty
register_modifier - регистрация модификатора в Smarty

3. Создать файл скрипта PHP с любым именем (например, myfunc.php и т.д.) и положить в папку commands сайта
4. В файле прописать:
include(FULLPATH.'{ваш путь}/mymodifiers.php');
$smarty -> assign('my_var', $my_var);

где - {ваш путь} - это путь к скрипту модификатора Smarty
$smarty -> assign - добавление ваших переменных в движок.

5. Теперь у вас при загрузке сайта в шаблонах будут доступны ваш модификатор my_fun и переменная my_var, которые вы сможете использовать по своему усмотрению :)

Вот собственно и все!

Автор:  Anatoly [ 18 сен 2019, 17:21 ]
Заголовок сообщения:  Re: Расширение функционала движка

Создать функцию в commands/имя_файла.inc и вызвать её в шаблоне.

Например:
Создадим файл commands/helper.inc с содержимым
<?
function my_func($text){
return $text;
}
?>
В шаблоне вызываем функцию
{%assign var='text' value='что то передадим в функцию'%}
{%$text|my_func%}

А какие-то данные через assign соответственно.

Автор:  Сергей Маслов [ 18 сен 2019, 21:31 ]
Заголовок сообщения:  Re: Расширение функционала движка

Спасибо. Проще, чем я сам дошел :)

Автор:  Сергей Маслов [ 10 дек 2019, 22:46 ]
Заголовок сообщения:  Re: Расширение функционала движка

++++++++++++

Автор:  Сергей Маслов [ 10 дек 2019, 22:46 ]
Заголовок сообщения:  Re: Расширение функционала движка

Anatoly писал(а):
Создать функцию в commands/имя_файла.inc и вызвать её в шаблоне.

Например:
Создадим файл commands/helper.inc с содержимым
<?
function my_func($text){
return $text;
}
?>
В шаблоне вызываем функцию
{%assign var='text' value='что то передадим в функцию'%}
{%$text|my_func%}

А какие-то данные через assign соответственно.


Может еще поможете?
Хочу использовать массивы шаблона в своих функциях php.
Объявляю переменные шаблона в функции как global
global $regions, $categories, $settings,$full_tree;
Так вот такая история:
Три массива становятся доступными, а один - $categories возвращает NULL, хотя если вывести переменные перед использованием функции через {%debug%}, то массив есть.
Как к нему подобраться не знаю...

Автор:  Anatoly [ 11 дек 2019, 01:16 ]
Заголовок сообщения:  Re: Расширение функционала движка

Не понял что необходимо, о каких шаблонах идёт речь? Если ранее переменная была объявлена в глобальной области видимости, то она будет доступна в функции через ключевое слово global или массив $GLOBALS. Нужно видеть код.

Автор:  Сергей Маслов [ 11 дек 2019, 13:39 ]
Заголовок сообщения:  Re: Расширение функционала движка

Не совсем точно выразился: не шаблона, а шаблонизатора Smarty.
Код типа такого:
файл в commands/myfunction.inc
function my_fun($id) {
global $full_tree,$categories;
print_r($full_tree);
print_r($categories);
}

вызов в шаблоне header.html (только в целях демонстрации проблемы)
<body>
<div>{%debug%}</div>
{%assign var='id' value='1'%}
<div>{%$id|my_fun%}</div>
</body>
Так вот: в этом случае в окне debug массив $categories присутствует, а при выводе страницы сайта не выведет.

Автор:  Сергей Маслов [ 11 дек 2019, 13:42 ]
Заголовок сообщения:  Re: Расширение функционала движка

Anatoly писал(а):
Не понял что необходимо, о каких шаблонах идёт речь? Если ранее переменная была объявлена в глобальной области видимости, то она будет доступна в функции через ключевое слово global или массив $GLOBALS. Нужно видеть код.

Где узнать, была переменная объявлена ранее как global?

Автор:  Anatoly [ 11 дек 2019, 20:07 ]
Заголовок сообщения:  Re: Расширение функционала движка

Не совсем понимаю что у вас не получается, напишите мне на почту artemovanatoly@gmail.com или покажите на самом сайте.

Страница 1 из 2 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/