Page 1 of 1

{get_template_vars} -> {php} (РЕШЕНО)

Posted: Wed Jan 20, 2010 5:44 am
by legko
У меня в шаблоне такая ситуация:

Code: Select all

{capture assign='captured_content'}{content block='specifications'}{/capture}
Данные попадают в переменную $captured_content, о чем говорит вывод {get_template_vars}

Code: Select all

captured_content = СЕРТИФИКАТ КАЧЕСТВА  Содержание  основного вещества 	  99,3%  Влажность     	  0,26%  Железо            	  0,0032%  Нерастворимые в соляной кислоте вещества 	  0,22%  Общее содержание сульфатов  (в пересчете на SO4) 	  0,24%  Насыпная плотность (г/см3)       	  1,11%  Размер частиц  2 – 5 мм 	  95%

Дальше я хочу обработать эти данные при помощи PHP, но PHP этой переменной не видит.

Code: Select all

{php}
echo  $captured_content;
{/php} 
Подскажите, пожалуйста, что нужно сделать, что б PHP код мог работать с переменной $captured_content?

Re: {get_template_vars} -> {php}

Posted: Wed Jan 20, 2010 7:27 am
by cyberman
legko wrote: У меня в шаблоне такая ситуация:

Code: Select all

{capture assign='captured_content'}{content block='specifications'}{/capture}
Простая  ;)

Code: Select all

{content block='specifications' assign='captured_content'}
Подскажите, пожалуйста, что нужно сделать, что б PHP код мог работать с переменной $captured_content?

Code: Select all

{php}
$captured_content = $smarty->get_template_vars('captured_content');
echo  $captured_content;
{/php} 
http://www.smarty.net/manual/ru/api.get ... e.vars.php

Re: {get_template_vars} -> {php}

Posted: Wed Jan 20, 2010 9:13 am
by legko

Code: Select all

{php}
$captured_content = $smarty->get_template_vars('captured_content');
echo  $captured_content;
{/php} 
http://www.smarty.net/manual/ru/api.get ... e.vars.php
Смотрел и пробовал, не работает конструкция видимо чего-то нужно после тега {php}  добавить.

Вот что получается:

Code: Select all

Fatal error: Call to a member function get_template_vars() on a non-object in L:\home\eurochem\www\tmp\templates_c\%%01^013^01360D26%%tpl_body%3A23.php on line 98
Еще раз напоминаю, что все это дело происходит в шаблоне сайта, возможно поэтому и не работает.
Может еще какие мысли есть?

Re: {get_template_vars} -> {php}

Posted: Wed Jan 20, 2010 12:42 pm
by cyberman
Вы активированы PHP использования в config.php?

Попробуйте это

Code: Select all

{php}
global $gCms;
$captured_content = $smarty->get_template_vars('captured_content');
echo  $captured_content;
{/php} 
Извините за мой русский - это русский от Google translator.

Re: {get_template_vars} -> {php}

Posted: Thu Jan 21, 2010 4:41 pm
by legko
спасибо за помощь, но...
... не работает, а времени разбираться совершенно нет
видимо что-то в настройках нужно изменить

выкручиваюсь непосредственно на SMARTY
да и к тому же пишут, что PHP-код в шаблоне - не очень хорошо.

Re: {get_template_vars} -> {php}

Posted: Fri Jan 22, 2010 7:39 am
by cyberman
OK, it's a lot easier (and faster) for me to answer in english - had my last russian lessons in school 20 years ago. Hope you will understand it.

To the first you should better use an UDT - User Defined Tag (menu Extensions > Userdefined Tags) - for including PHP inside CMSms. It's a nice option of CMSms and a lot securer.

To the second my solution works ;) - have check it on my playground. Please look here

http://www.just4test.de

What I have done:

1. Modify my template like

Code: Select all

         {content block='specifications' assign='captured_content'} <br />
         {content} <br />
2. Add an udt named "cap_content" with content

Code: Select all

$captured_content = $smarty->get_template_vars('captured_content');
echo  $captured_content;
3. Add your last answer to content block "specifications" 8)

4. Call udt with {cap_content} in the second content block

That's all ...

Re: {get_template_vars} -> {php}

Posted: Fri Jan 22, 2010 12:46 pm
by anort
cyberman wrote: Попробуйте это

Code: Select all

{php}
global $gCms;
$captured_content = $smarty->get_template_vars('captured_content');
echo  $captured_content;
{/php} 
По-моему, в коде ошибка. Нужно писать так:

Code: Select all

{php}
global $gCms;
$captured_content = $gCms->smarty->get_template_vars('captured_content');
echo  $captured_content;
{/php} 

Re: {get_template_vars} -> {php}

Posted: Fri Jan 22, 2010 3:52 pm
by legko
Так работает без проблем!!!!

Code: Select all

$captured_content = $gCms->smarty->get_template_vars('captured_content');
Спасибо огромное!!!!

Re: {get_template_vars} -> {php} (РЕШЕНО)

Posted: Wed Nov 02, 2011 2:25 pm
by legko
Установил CMS SM v1.10 - конструкция не работает, а так как у нас на форумах принято самому себе отвечать на свои же вопросы, :) новую тему создавать не буду.
Короче, что нужно сделать:
1. В корне сайта в config.php дописать следующее:

Code: Select all

$config['use_smarty_php_tags'] = true;
2. В нужном месте шаблона использовать конструкцию:

Code: Select all

{php}
global $gCms;
$FP = $gCms->GetSmarty()->get_template_vars('variable');
{/php} 
, где variable - имя переменной из тега get_template_vars