X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость ( Вход | Регистрация )

Открыть тему
Тема закрыта
> С Smarty знаком кто-то?, Вывод php-кода и проблемы
devuser
devuser
Topic Starter сообщение 23.1.2013, 2:42; Ответить: devuser
Сообщение #1


Все будет тип-топ
*****

Группа: Active User
Сообщений: 713
Регистрация: 5.12.2012
Из: Online
Поблагодарили: 342 раза
Репутация:   52  


Здравствуйте, товарищи

Имеется проблема:
В третьей версии smarty отключено выполнение php-кода в шаблонах.
Но в некоторых случаях нужно иметь возможность выполнять этот самый код, например, чтоб не писать прокладку под каждую из бирж (я про сабж из подписи, но не реклама).

Самый простой способ - это написать свой плагин для смарти

block.php.php
<?php
    function smarty_block_php($params, $content, $template, &$repeat) {
        eval ($content);
        return '';
    }
?>


и вызывать его из шаблона следующим образом:
{php}
echo 'Hello, world';
{/php}

С этим проблем нет.

Как заставить его запоминать данные, вот в чем проблема.
Вызов вида
<div class="footer">
    {php}
        $i = 10;
    {/php}
    Какой-то текст и второй вызов блока php
    {php}
        echo $i;
    {/php}
</div>

Ничего не выведет.
То есть в рамках разных блоков переменная не сохраняется. Соответственно та же сапа при подключении в двух местах будет выводить одно и то же, с начала, что не хорошо.
Есть идеи по реализации?


--------------------
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
kronos
kronos
сообщение 23.1.2013, 3:22; Ответить: kronos
Сообщение #2


Белый веб-мастер
*******


Группа: Active User
Сообщений: 4703
Регистрация: 10.2.2009
Из: Харьков
Поблагодарили: 2629 раз
Репутация:   327  


Написать код в самом плагине, через параметры выводить что нужно.


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
devuser
devuser
Topic Starter сообщение 23.1.2013, 3:23; Ответить: devuser
Сообщение #3


Все будет тип-топ
*****

Группа: Active User
Сообщений: 713
Регистрация: 5.12.2012
Из: Online
Поблагодарили: 342 раза
Репутация:   52  


kronos,
это понятно

но я уточнял
чтоб не писать прокладку под каждую из бирж


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
x64
x64
сообщение 23.1.2013, 8:08; Ответить: x64
Сообщение #4


F.A.L.L.O.U.T.
*******

Группа: Super Moderator
Сообщений: 3424
Регистрация: 30.6.2011
Из: Железнодорожный (Балашиха)
Поблагодарили: 2746 раз
Репутация:   289  


так из Вашего кода очевидно же: вызов идёт через функцию. а переменные, объявленные таким образом, локальны именно для этой функции. как вариант, использовать глобальные переменные.

<div class="footer">
    {php}
        $GLOBALS['i'] = 10;
    {/php}
    Какой-то текст и второй вызов блока php
    {php}
        echo $GLOBALS['i'];
    {/php}
</div>


Сообщение отредактировал x64 - 23.1.2013, 8:08


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
devuser
devuser
Topic Starter сообщение 24.1.2013, 1:11; Ответить: devuser
Сообщение #5


Все будет тип-топ
*****

Группа: Active User
Сообщений: 713
Регистрация: 5.12.2012
Из: Online
Поблагодарили: 342 раза
Репутация:   52  


x64, спасибо, понимаю, про область видимости тоже в курсе.
Поэтому и спрашиваю идеи, как это обойти.

Если на примере, то:
Есть код сапы, который в одном месте подключается, а в некоторых других выводится методом $sape->return_links($n);
Этот код дает сама сапа и задача пользователя просто вставить его в шаблон.
Так вот, я не хочу заставлять их писать в одном месте что-то типа
$sape = new SAPE_client();
$sape->return_links();
$GLOBALS['sape'] = $sape;

а в другом
$sape = $GLOBALS['sape'];
$sape->return_links();

То есть не хочу напрягать рядового пользователя, возможно не знакомого с PHP, лишними действиями.
И поэтому спрашиваю мнения - как это реализовать.

Сапа - как пример, бирж может быть масса, коды разные. Писать прокладки под каждый не предлагайте, пожалуйста.

Сообщение отредактировал devuser - 24.1.2013, 1:12


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Facebook палит прокси. Кто как решает эту проблему?
26 Twickbot 3417 Вчера, 15:02
автор: Mikki
Открытая тема (нет новых ответов) 10 бесплатных сервисов Google для бизнеса, о которых мало кто слышал
17 jack 5471 12.12.2017, 13:26
автор: Catherine_Molli
Горячая тема (нет новых ответов) Тема имеет прикрепленные файлыКто и что читает?
Любимые и не только, книги.
251 Levels 31111 11.12.2017, 16:47
автор: Catherine_Molli
Открытая тема (нет новых ответов) Кто продвигает сайт в яндексе массовой закупкой ссылок?
13 aleggator 1841 8.12.2017, 4:19
автор: KvadroJ
Открытая тема (нет новых ответов) Мутаген в 2017. Кто работает?
8 OldSpice 1385 12.11.2017, 1:47
автор: _fan_


 



RSS Текстовая версия Сейчас: 14.12.2017, 12:29
Дизайн