【问题标题】:Drupal preprocess function and sessionDrupal 预处理函数和会话
【发布时间】:2010-10-17 04:49:05
【问题描述】:

我在我使用的主题中的模板预处理功能中设置了会话变量,但是第一次打开站点时我无法读取会话变量,如果我刷新页面它工作正常,有人知道可能是什么问题吗? ?

这是我在预处理函数中使用的代码:

function m_preprocess(&$vars, $hook) {
     $default_location = array(
        'country_code' => 'ec',
        'province_code' => 'p',
        'province' => 'Pichincha',
        'city' => 'Quito',
        'city_path' => 'lugares/u/ec/p/*'
     );
     if (isset($_COOKIE['proximity_path'])) $default_location['proximity_path'] = $_COOKIE['proximity_path'];
     $default_location['path'] = isset($_COOKIE['sort-by']) && $_COOKIE['sort-by']=='proximity'? $_COOKIE['proximity_path'] : $default_location['city_path'];
     $_SESSION['location'] = $default_location;
}

【问题讨论】:

    标签: templates drupal session themes preprocessor


    【解决方案1】:

    有几点:

    1. 试试 dsm($_SESSION);查看网站首次加载时的 var 内容。

    2. 我不知道您在哪里创建 $_COOKIE['proximity_path'],但它不在您显示的代码中。

    3. 检查拼写错误

    【讨论】:

    • $_COOKIE['proximity_path'] 是在客户端创建的,另一件事要考虑,我使用 php-code 过滤器将 $_SESSION var 用于节点内容
    • 这是第一个值: Array ( [mobile-tools-mobile-device] => Array ( [type] => desktop [group] => ) [mobile-tools-site-type] => mobile ),这是刷新页面后的值: Array ( [mobile-tools-mobile-device] => Array ( [type] => desktop [group] => ) [mobile-tools-site-type] => mobile [location] => Array ( [country_code] => ec [province_code] => p [province] => Pichincha [city] => Quito [city_path] => lugares/u/ec/p/* [path ] => lugares/u/ec/p/* ) )
    • 我在 page.tpl.php 和节点内容中测试 print_r($_SESSION),问题仅在节点内容内
    • 当您说您使用 PHP 代码过滤器将 $_SESSION var 用于节点内容时,您的意思是您在节点内容中初始化 $_SESSION var 还是使用 $ 的内容_SESSION var 在您的节点内容中吗?同样基于 $_SESSION var 的输出,预处理函数不是第一次加载。 phptemplate_preprocess() 函数中有这段代码吗?
    • 我在预处理函数中创建了 $_SESSION['location'] 变量并将其读入节点内容,我使用 session_start() 进行测试,没有它但第一次不存在
    【解决方案2】:

    模板预处理函数在node.tpl.php之前被调用(这就是它被称为预处理的原因),这就是为什么$_SESSION变量的值在模板预处理函数中不可用的原因。

    正如您所指出的,它在第一页加载后起作用。只有在节点主体中设置了 $_SESSION 变量后才会发生这种情况(使用 PHP 过滤器)

    【讨论】:

    • 你建议做什么??
    猜你喜欢
    • 1970-01-01
    • 2017-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-06
    • 2021-05-09
    相关资源
    最近更新 更多