Drupal препроцесс функция и сессия - PullRequest
1 голос
/ 17 октября 2010

Я устанавливаю переменную сеанса в функции предварительной обработки шаблона в теме, которую я использую, но при первом открытии сайта я не могу прочитать сеанс var, если я обновляю страницу, она работает нормально, кто-нибудь знает, в чем может быть проблема?

Это код, который я использую в функции предварительной обработки:

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

Ответы [ 3 ]

0 голосов
/ 18 октября 2010

Функция предварительной обработки шаблона вызывается перед node.tpl.php (поэтому она называется предварительной обработкой), и поэтому значение переменной $ _SESSION недоступно в функции предварительной обработки шаблона.

Как вы указали, он работает после загрузки первой страницы.Это происходит, когда только после переменной $ _SESSION в теле узла (с использованием фильтра PHP)

0 голосов
/ 19 октября 2010

Я не смог найти решение, я думаю, чтобы использовать сессионные переменные без проблем, нужно использовать его только в файлах tpl.php.

0 голосов
/ 17 октября 2010

Пара вещей:

  1. Попробуйте dsm ($ _ SESSION); чтобы увидеть, что такое содержимое var при первой загрузке сайта.

  2. Я не знаю, где вы создаете $ _COOKIE ['desire_path'], но его нет в показанном вами коде.

  3. Проверка на опечатки

...