Drupal 预处理函数和会话

发布于 2024-09-27 18:27:04 字数 724 浏览 7 评论 0原文

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

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

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;
}

I set a session var at template preprocess function in a theme I use, but the first time I open the site I cant read the session var, if I refresh the page it works fine, anybody know what can be the problem??

This is the code I use in the preprocess function:

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;
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

む无字情书 2024-10-04 18:27:04

有几件事:

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

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

  3. 检查拼写错误

A couple of things:

  1. Try dsm($_SESSION); to see what is the var content when the site first load.

  2. I don't know where you create $_COOKIE['proximity_path'], but it is not in the code you show.

  3. Check for typos

冰葑 2024-10-04 18:27:04

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

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

The template pre-process function is called before node.tpl.php (that's why it is called pre-process) and that is why the value of the $_SESSION variable is not available in the template preprocess function.

Like you pointed out, it works after the first page load. This happens when only after $_SESSION variable is set in the node body (using the PHP filter)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文