Javascript Drupal |缓存页面中的未缓存JS cookie/跟踪代码算法

Javascript Drupal |缓存页面中的未缓存JS cookie/跟踪代码算法,javascript,variables,caching,drupal,Javascript,Variables,Caching,Drupal,我使用“跟踪代码”模块()添加跟踪代码片段 我将这些代码添加到之后的 我也有自己的跟踪cookie,它带有userID 目标: 为每个跟踪代码段设置userID 问题:我已启用缓存,因此这些代码片段将被缓存。这意味着我不能用PHP解析Cookie并设置全局js变量,这在每个代码段中都是可以访问的 解决方案: 用javascript解析cookie,所以即使缓存了代码,变量也会被更新 问题: 常用的drupal JS,如: (function($) { Drupal.behaviors.use

我使用“跟踪代码”模块()添加跟踪代码片段

我将这些代码添加到之后的

我也有自己的跟踪cookie,它带有
userID

目标: 为每个跟踪代码段设置
userID

问题:我已启用缓存,因此这些代码片段将被缓存。这意味着我不能用PHP解析Cookie并设置全局js变量,这在每个代码段中都是可以访问的

解决方案: 用javascript解析cookie,所以即使缓存了代码,变量也会被更新

问题: 常用的drupal JS,如:

(function($) {
  Drupal.behaviors.user_cookie = {
    attach: function (context, settings) {
   ...
     //Im getting some variables from PHP here and using them
    }
  }
})(jQuery);
执行得太晚,这意味着在那里定义的变量在跟踪代码段中不可用

解决方案:使用以下代码,我可以设置js变量,并且可以从代码段中访问这些变量

(function ($, Drupal, window, document, undefined) {
   // Is executed on time!
   // How to get variables from php here??
})(jQuery, Drupal, this, this.document);
问题:我无法再使用以下代码从PHP获取一些静态变量(可以缓存):

function user_cookie_page_build(&$page) {
  drupal_add_js(array('user_cookie' => array('someVariable' => $someValue)), 'setting');
  drupal_add_js(drupal_get_path('module', 'user_cookie') . '/js/user_cookie.js');
}   
解决方案(变通方法):
head
中执行内联脚本设置变量,但我不喜欢这种方式

  drupal_add_js( 'Drupal.user_cookie.cookieName = "'
                . variable_get('user_cookie_fname') . '";',
      array(
          'type' => 'inline', 
          'scope' => 'head',
          'weight' => 0
      )
  );
  drupal_add_js(drupal_get_path('module', 'ft_user_cookie') . '/js/ft_user_cookie.js');

如果有人有更好的解决方案(Ajax不是我的解决方案),请告诉我

我想出了一个解决办法,但这不是一个完美的解决方案:

  drupal_add_js(  'Drupal.ft_user_cookie.cookieName = "' . 
                   variable_get('user_cookie_fname') . '";',,
      array(
          'type' => 'inline', 
          'scope' => 'head',
          'weight' => 0
      )
  );
将此添加到我的脚本之前

  drupal_add_js(drupal_get_path('module', 'ft_user_cookie') . '/js/ft_user_cookie.js');

解决了这个问题。

我想出了一个解决办法,但它不是一个完美的解决方案:

  drupal_add_js(  'Drupal.ft_user_cookie.cookieName = "' . 
                   variable_get('user_cookie_fname') . '";',,
      array(
          'type' => 'inline', 
          'scope' => 'head',
          'weight' => 0
      )
  );
将此添加到我的脚本之前

  drupal_add_js(drupal_get_path('module', 'ft_user_cookie') . '/js/ft_user_cookie.js');
解决了这个问题