Как определить, является ли это первый визит пользователя на Drupal 6 - PullRequest
2 голосов
/ 22 ноября 2011

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

Я работаю с куки, и вот несколько звонков, с которыми я работаю:

 if (!$cookie_data['time']) {
      print $block;
 } else { }

Очень просто, но я просто хочу написать условие, которое проверяет, был ли это первый визит пользователя.

* ОБНОВЛЕНИЕ: Хорошо. Это была моя ошибка, мне нужно, чтобы это можно было делать только для анонимных пользователей. Виноват. Вот код, который я использую, но он недостаточно работает ...

 function custommodule_init() {

      setcookie('splash_status',$splash_status,time()+3600*24*365);

      if (!isset($_COOKIE['splash_status'])) $_COOKIE['splash_status'] = 0;

      $splash_status = $_COOKIE['splash_status'] + 1;

      if ($splash_status > 1) {
              drupal_add_js(drupal_get_path('module', 'sbasplash') . '/sbasplash.js');
              drupal_add_css(drupal_get_path('module', 'sbasplash') . '/sbasplash.css');

              // Action to enable block

      } else {

              // Action to disable block

      }
 }

Ответы [ 3 ]

1 голос
/ 23 ноября 2011

Создайте пользовательский модуль, внедрите «hook_user» и вставьте свой код в операцию «insert».Когда пользователь будет впервые вставлен в базу данных, ваш код будет выполнен.Вы можете использовать его для добавления своего блока или установки переменной сеанса и отображения своего блока в соответствии с его значением.

yourcustommodule_user($op, &$edit, &$account, $category = NULL) {
  switch($op){
    case 'insert':
       //your code here
       //example: $_SESSION['show_block'] = 1; and then unset after block is shown
    break;     
  }
}
0 голосов
/ 25 марта 2013

Кроме того, убедитесь, что ваш пользовательский модуль настроен на запуск после модуля-заставки. Вы можете установить значение weight в таблице system вашего модуля выше значения, указанного в заставке, убедившись, что cookie всегда устанавливается, прежде чем ваш код проверяет его.

0 голосов
/ 23 ноября 2011

По умолчанию, я думаю, что нет drupal api для обнаружения первого входа в систему, нам нужен специальный код, возможно, новый атрибут столбца, установленный в status = 1, в hook_user для проверки входа в систему, если status = 1, если status равен 1, затем отображать заставку страницы и установите статус 0, чтобы в следующий раз не появлялась заставка.

...