Smarty и JavaScript внутри буквального - PullRequest
1 голос
/ 11 августа 2011

Я хочу переместить код Google Analytics в эту базу данных.

Первоначально я бы сделал это вручную внутри шаблона:

<script type="text/javascript"><!--
{literal}
  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-19807844-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);
  })();
{/literal}
--></script>

Как мне сделать что-то подобное ниже, что позволяет пользователю вводить в базу данных собственную аналитику

<script type="text/javascript"><!--
{literal}
{$portal.google_analytics}
{/literal}
--></script>

Ответы [ 2 ]

2 голосов
/ 11 августа 2011
<script type="text/javascript"><!--

{$portal.google_analytics}

--></script>

или если вы просто хотите, чтобы они вошли в свою учетную запись:

<script type="text/javascript"><!--

  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', {$portal.google_analytics_account}]);
  _gaq.push(['_trackPageview']);

{literal}
  (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);
  })();
{/literal}
--></script>

или

<script type="text/javascript"><!--
{literal}
  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', {/literal}{$portal.google_analytics_account}{literal}]);
  _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);
  })();
{/literal}
--></script>
1 голос
/ 11 августа 2011
 <?php
   // assuming your Smarty object is $smarty
   $smarty->assign('ga_id','UA-xxxxxx-x');
   $smarty->display('ga.tpl');
 ?>

ga.tpl (обратите внимание, что есть два literal блока с ga_id между ними):

<script type="text/javascript"><!--
{literal}
  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', '{/literal}{$ga_id}{literal}']);
  _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);
  })();
{/literal}
--></script>
...