Проблема с php
  • Проблема следующая: при вставке кода вида: 
    {{ php }}
    // including a php script directly from the template.
    include('/path/to/display_weather.php');
    {{ /php }}
    в шаблон всё стопорится на нем и не грузится дальше. Где может быть проблема? В логах Апача ничего.
    Vitor 4.2.4 
  • 12 Comments sorted by
  • Vote Up1Vote Down Andrey PodshivalovAndrey Podshivalov
    Posts: 1,526Member, Administrator, Sourcefabric Team
    надо объявить переменную как глобал php-скрипте

    в шаблоне тогда можно обратиться к ней:
    {{ php }}
    global $data;
    echo $data['city'];
    {{ /php }}
  • Vote Up0Vote Down Andrey PodshivalovAndrey Podshivalov
    Posts: 1,526Member, Administrator, Sourcefabric Team
    в 4.2.x был отключен тег php (разработчики не подумали, не включили с обновлением smarty)
    Добавьте $this->allow_php_tag = true; в файл template_engine/classes/CampTemplate.php:57

    в 4.3.x поддержка php в шаблонах возвращена


  • Спасибо, Андрей! Сейчас специально обновился - да, в 4.3 есть поддержка.
    Не подскажете случайно, как можно в jquery вместо "ip" подставить {{$smarty.server.REMOTE_ADDR}}
    <script>
    var ip = "<?php echo $realUserIP; ?>";
      jQuery.ajax ({
        type: "GET",
        dataType: "xml",
        success: function(xml) {
          var region = jQuery(xml).find('city').text();
          jQuery("#geocity").append(region);
        },
        error: function() {
          jQuery("#geocity").append("не определен");
        }
      });
    </script>

  • Vote Up0Vote Down Andrey PodshivalovAndrey Podshivalov
    Posts: 1,526Member, Administrator, Sourcefabric Team
    так и подставляйте
    var ip = "{{$smarty.server.REMOTE_ADDR}}";

  • Я уже тоже разобрался :)))) Тестировал локально - ничего, естественно, не показывалось :) Если кому нужно, скрипт выводит город посетителя сайта.

    Андрей, ну раз уж зашла речь, а выходную geocity реально загнать в переменную smarty для проверки условия?
  • Vote Up0Vote Down Andrey PodshivalovAndrey Podshivalov
    Posts: 1,526Member, Administrator, Sourcefabric Team
    В приведенном случае? Дык, это же выполняется на клиенте, а смарти выполняется на сервере.
    Используйте любую php-библиотеку geo-определения.

  • Жаль... Уж больно резво работает :))) Придется-таки включать тэг :)
  • Андрей, а есть что-нибудь на примете с хорошей определяемостью по России?
  • Vote Up0Vote Down Andrey PodshivalovAndrey Podshivalov
    Posts: 1,526Member, Administrator, Sourcefabric Team
    насколько я знаю, база по городам обычно платная
  • Андрей, чего-то не пойму я вот этого идиоматического выражения:
    {{* a {{php}} block that assigns the variable $varX *}}
    {{php}}
    $template->assign('varX','Toffee');
    {{/php}}
    {{* output the variable in the template *}}
    <strong>{{$varX}}</strong> is my favourite ice cream :-)
    Я подключил скрипт вот так: 
    {{ php }}
    // including a php script directly from the template.
    include('/path/to/script.php');
    {{ /php }}
    Данные он мне на страницу выводит, но... Как в данном случае получить переменную $data['id'], например, лежащую внутри скрипта?
    У меня в скрипте есть переменная  $data['city'], её надо загнать в шаблон? а он выводит city
    Post edited by Butov Stanislav at 2015-02-03 16:59:02
  • Спасибо! Зар-р-р-аботало :)))
  • Упс! Андрей, я тут решил заплюсовать Ваше последнее сообщение и удалил его как-то...Не, не удалил - наверх убежало... Странноватый какой-то движок :)))

    Post edited by Butov Stanislav at 2015-02-04 15:38:33