| 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/ |
|