Jump to content

Использование php в шаблоне


Go to solution Solved by Kors,

Recommended Posts

Друзья, подскажите как в новой версии Simpla 2.3.5 включить возможность использования php кода в шаблоне? Ковырять нужно Smarty.class.php но где?

Заранее благодарен!

Link to post
Share on other sites
  • 6 months later...

Самый простой вариант для 3.5.6 удалить папку Smarty, вместо неё ту что во вложении, далее почистить обе папки Compiled.

Теперь в index.tpl можно вставить например

{php}
phpinfo();
{/php}

 

Link to post
Share on other sites

Друзья, подскажите как в новой версии Simpla 2.3.5 включить возможность использования php кода в шаблоне? Ковырять нужно Smarty.class.php но где?

Заранее благодарен!

 

Поддерживаю не смог тоже

 

Сделать как в посте выше, либо заменить два файла, на те что во вложении

Edited by Djep
Link to post
Share on other sites

А смысл в чем? Поставьте первоначальную задачу, расскажу где ошиблись на этапе проектирования логики

Link to post
Share on other sites

Djep -  зачем все так запутано? 

 

В api/Design.php в конструкторе после строки

$this->smarty->error_reporting = E_ALL & ~E_NOTICE;

пишем:

$this->smarty->allow_php_tag = true;

 

Link to post
Share on other sites

 

Djep -  зачем все так запутано? 

 

В api/Design.php в конструкторе после строки

$this->smarty->error_reporting = E_ALL & ~E_NOTICE;

пишем:

$this->smarty->allow_php_tag = true;

Варианты которые я предложил, работают

Предлагаемый Вами вариант, не сработает для 3.5.х так как там в Smarty удален allow_php_tag

Проверьте на досуге

Link to post
Share on other sites
  • Solution

Да, формально Вы правы: не сработает для 3.5.х так как там в Smarty удален allow_php_tag.

 

Так его можно легко добавить в Smarty/libs/Smarty.class.php одной строчкой:

public $allow_php_tag;

 

Сомнительно, что Ваш способ с заменой папки намного легче...

 

А можно и максимально просто: в Smarty/libs/Smarty.class.php добавить одну строчку:

public $allow_php_tag = truе;

 

Почти то же самое написал Rash по ссылке в третье посте. Вы упорно игнорируете простое легкое решение, изобретая сложный велосипед...

Edited by Kors
Link to post
Share on other sites

Да, формально Вы правы: не сработает для 3.5.х так как там в Smarty удален allow_php_tag.

 

Так его можно легко добавить в Smarty/libs/Smarty.class.php одной строчкой:

public $allow_php_tag;

 

Сомнительно, что Ваш способ с заменой папки намного легче...

 

А можно и максимально просто: в Smarty/libs/Smarty.class.php добавить одну строчку:

public $allow_php_tag = truе;

 

Почти то же самое написал Rash по ссылке в третье посте. Вы упорно игнорируете простое легкое решение, изобретая сложный велосипед...

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

А если делать самому замену, надо по аналогии с предыдущей Smarty добавить ещё в smarty_security.php

    public $allow_php_tag = true;
    public function __construct($smarty)
    {
        $this->smarty = $smarty; 
	}

Link to post
Share on other sites

У меня работает без такого добавления.

Даже если это и нужно, то две простенькие вставки - лучше, чем замена папки с мегабайтом скриптов...

 

А если надо будет еще мелкую настройку с изменением какого параметра в Smarty делать, то надо будет пользователю еще у Вас просить подготовить папку? А если комбинацию из пяти-шести параметров? Такой стиль работы Имперу переплюнет...

Link to post
Share on other sites

Варианты которые я предложил, работают

Предлагаемый Вами вариант, не сработает для 3.5.х так как там в Smarty удален allow_php_tag

Проверьте на досуге

На досуге я перековырял уже много версий смарти...

Но 3.5.х еще не встречал. Последнюю что я видел так это 3.1.21

 

Ну могу дополнить раз того не хватило. 

Тот же файл api/Design.php заменяем:

require_once(dirname(dirname(__FILE__)).'/Smarty/libs/Smarty.class.php');

на:

require_once(dirname(dirname(__FILE__)).'/Smarty/libs/SmartyBC.class.php');

и в конструкторе:

$this->smarty = new Smarty();
меняем на:
$this->smarty = new SmartyBC();
Edited by yr4ik
Link to post
Share on other sites

А если надо будет еще мелкую настройку с изменением какого параметра в Smarty делать, то надо будет пользователю еще у Вас просить подготовить папку? А если комбинацию из пяти-шести параметров? Такой стиль работы Имперу переплюнет...

Я не фрилансер и деньги на Simpla не зарабатываю, и это не стиль работы...........

а желание помочь

Если попросят, сделаю все что в моих силах

Link to post
Share on other sites

Так его можно легко добавить в Smarty/libs/Smarty.class.php одной строчкой:

public $allow_php_tag;

Для новых версий смарти - это не поможет.

Тут же не просто переменная отсутствует, а вырезаны подключения обработчиков тегов {php}. 

Теперь они включены в отдельном классе SmartyBC. Постом выше я описал как его подключить

Edited by yr4ik
Link to post
Share on other sites

Для новых версий смарти - это не поможет.

Тут же не просто переменная отсутствует, а вырезаны подключения обработчиков тегов {php}. 

Теперь они включены в отдельном классе SmartyBC. Постом выше я описал как его подключить

вариант SmartyBC  будет работать, проверил

Edited by Djep
Link to post
Share on other sites

Все версии Smarty не проверял.
Проверял на стандартном дистрибутиве Simpla 2.3.6.
Способ

А можно и максимально просто: в Smarty/libs/Smarty.class.php добавить одну строчку:
public $allow_php_tag = truе;

прекрасно работает...

Если Ваши сложные способы имеют цель
 

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

то сомневаюсь, что простой пользователь будет изучать версии Smarty и уж тем более заменять версию самостоятельно без особых причин. А делать на перспективу - может, когда-то разработчик изменит версию Smarty в будущем дистрибутиве - это бежать впереди паровоза...

Кстати, этот разработчик уже полгода новых версий не выпускал. И те новые версии, которые были в середине 2014 года, нового содержат не сильно много.  А ошибок в Simpla, в том числе и серьезных, которые надо было бы исправить, найдено достаточно...

Link to post
Share on other sites

Все версии Smarty не проверял.

Проверял на стандартном дистрибутиве Simpla 2.3.6.

Способ

А можно и максимально просто: в Smarty/libs/Smarty.class.php добавить одну строчку:
public $allow_php_tag = truе;

прекрасно работает...

 

Если Ваши сложные способы имеют цель

 

то сомневаюсь, что простой пользователь будет изучать версии Smarty и уж тем более заменять версию самостоятельно без особых причин. А делать на перспективу - может, когда-то разработчик изменит версию Smarty в будущем дистрибутиве - это бежать впереди паровоза...

 

Кстати, этот разработчик уже полгода новых версий не выпускал. И те новые версии, которые были в середине 2014 года, нового содержат не сильно много.  А ошибок в Simpla, в том числе и серьезных, которые надо было бы исправить, найдено достаточно...

Столько словесного поноса в мой адрес , да ещё и от плюшевого давненько не встречал

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...