Smarty назначить на внешний JavaScript - PullRequest
2 голосов
/ 04 мая 2010

здесь, в index.tpl

здесь, в javas.js

var currentTS = "{literal}{$userid}{/literal}";
alert(currentTS);

но будет предупреждение {literal}{$userid}{/literal}, а не $userid. есть идеи?

Ответы [ 3 ]

5 голосов
/ 13 октября 2010

Smarty работает только под php, вы не можете запустить его в .js, если вы не добавите .js в расширения php в конфигурациях apache.

Кроме того, мне кажется, что вы пытаетесь получить доступ к переменной {$ userid} из вашего index.php. Этого никогда не случится! если вы не включите сторону файлового сервера, как объяснил Карвонен. И ваши {literal} теги не нужны, вы начинаете буквально, когда вы собираетесь использовать { и }, которые не являются умными тегами, но для javascript, css и т. Д. и единственный раз, когда вы видите их вокруг умных меток, это наоборот, как объяснил Карвонен

вот мое предложение: в вашем index.tpl прямо перед включением файла java.js сделайте это:

<!--index.tpl-->
<script type='text/javascript'>UserID = '{$userid}';</script>
<script type='text/javascript' src='pathto/java.js'></script>



/*java.js*/
var currentTS = UserID;
alert(currentTS);
2 голосов
/ 06 мая 2010

Включите файл javascript в ваш index.tpl. Если он находится вне вашей директории шаблонов, вы должны использовать нотацию file:/... (и использовать свой собственный путь, конечно):

<html>
  <head
  <script type='text/javascript'>
  {include file='file:/home/www/mydomain/public_html/js/javas.js'}
  </script>

если у вас есть это в директории шаблона просто:

<html>
  <head
  <script type='text/javascriptä>
  {include file='javas.js'}
  </script>

Теперь Smarty должен разобрать и скомпилировать его.

Более того, мне кажется, что вы {literal}{/literal} ошибаетесь. Если вы используете фигурные скобки в своем js-файле, вы должны запустить js с тегом {literal} и «удалить из списка» переменные smarty:

{literal}
function test() {
   var name = '{/literal}{$name}{literal}';
   // do something
}
{/literal}
0 голосов
/ 02 июля 2010

Не используйте {буквальный} Вам здесь не нужно.

{literal} заставляет отображать все {как есть, и не анализировать смарт-код. Поэтому {$ userid} будет отображаться как есть.

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

...