Вставка {в файл шаблона ExpressionEngine - PullRequest
0 голосов
/ 13 сентября 2010

Я пытаюсь вставить некоторый аналитический код в файлы нижнего колонтитула моего шаблона ExpressionEngine, но он обрабатывает {} как вызов функции или что-то в этом роде.Есть ли способ сделать так, чтобы он понимал, что EE не должен выполнять то, что находится внутри скобок?

Я уже пытался вставить обратную косую черту, и она, похоже, не работает.

Любая помощь будет высоко ценится.

Ответы [ 7 ]

2 голосов
/ 07 октября 2011

ExpressionEngine Шаблон класса анализирует фигурные скобки {} как переменные шаблона .

Поскольку во многих языках программирования используются фигурные скобки, это может вызвать проблемы, если ExpressionEngine заменит фигурные скобки JavaScript в качестве переменных шаблона .

Например, следующий JavaScript с фигурными скобками в одной строке :

<script>var addthis_config = { 'ui_click': true };</script>

Будет проанализирован ExpressionEngine как переменная шаблона и представлен как:

<script>var addthis_config = ;</script>

Вы заметите, что все, начиная с открытия { и заканчивая закрывающей } фигурной скобкой, анализируется и заменяется! В качестве обходного пути вы можете разместить фигурные скобки на отдельных строках и избежать этой проблемы:

<script>
    var addthis_config = {
        'ui_click': true,
        'data_track_clickback': true
    };
</script>

Если вы написали функцию JavaScript, которая ожидает значения от ExpressionEngine, просто поместите скобки в отдельные строки & mdash; что является хорошим соглашением о кодировании и является оптимальным для читабельности .

2 голосов
/ 28 октября 2012

Каковы ваши предпочтения отладки в EE?Должно быть установлено значение «1» (рекомендуется).Если в данный момент он равен «0», попробуйте изменить значение настройки на «1».В некоторых случаях возможны проблемы с не-EE {} символами, используемыми, когда отладка установлена ​​в «0».

Вы можете изменить предпочтения отладки в CP => Admin => Администрирование системы => Вывод и отладка.=> Предпочтение отладки.

Размещение фигурных скобок {} в отдельных строках также будет работать, но этот параметр отладки ("1") настоятельно рекомендуется, и, возможно, даже почему эта "ошибка" не исправлена.

1 голос
/ 03 мая 2012

Попробуйте переменную конфигурации Protect Javascript. Я использовал его, чтобы смешивать / сочетать EE Vars и JS несколько раз.

EE 1.x

$conf['protect_javascript'] = 'y';

Ссылка

EE 2

$config['protect_javascript'] = 'y';

Ссылка

1 голос
/ 07 октября 2011

Разделите код аналитики в отдельный шаблон.

Вероятно, потому, что у вас есть аналитический код ВНУТРИ другого цикла EE, и он пытается проанализировать его как переменную шаблона.

Поэтому изолируйте код, если он вам нуженвнутри цикла и создайте встроенный шаблон для включения.

Таким образом, создайте включение с именем .analytics.

В шаблоне .analytics сделайте следующее (я использую Google Analytics какпример):

<script type="text/javascript">

  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-xxxxxx-1']);
  _gaq.push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();

</script>

ПРИМЕЧАНИЕ. Используя этот метод, сохраните шаблон как обычный шаблон, НЕ меняйте его на шаблон javascript, поскольку внутри шаблона используются теги <script type="text/javascript">.

Затем в своем основном шаблоне выполните простое:

{embed="template_group/.analytics"}

И вам будет хорошо.

0 голосов
/ 24 октября 2012

Вы должны использовать скрытый конфиг varable protect javascript

$config['protect_javascript'] = 'y';
0 голосов
/ 07 марта 2011

Я рекомендую вам не вставлять (или пытаться вставить) необработанный JS в шаблоны HTML. Вы можете создать другой шаблон с типом JavaScript вместо HTML, затем вы можете добавить его на head с тегом script или {embed="js/piece-of-raw-javascript"}

0 голосов
/ 23 сентября 2010

Вы пытались закомментировать весь блок кода Аналитики с помощью тегов комментариев шаблона EE?т.е.

{!--

Your comments will go in here.
You can even span it across multiple lines.

--}

Отсюда http://expressionengine.com/user_guide/templates/commenting.html

...