Проблема такая: если сайт закрыт, то при переходе по реферальной ссылке типа /r/1 пользователя перехватывает компонент Авторизация, и хук биллинга, который должен был запомнить пользователя, не отработает.
Решение найдено при финансовой поддержке CEH9I
Немного подкапотки
Биллинг запоминает пользователя в хуке error_404 (файл любезно оставлен автором без ioncube). Но если сайт закрыт от гостей, то до хука не доходит, так как авторизация перехватывает посещение в хуке page_is_allowed. Чтобы победить это, надо код из хука error_404 перенести в хук page_is_allowed, а затем хук page_is_allowed биллинга разместить в списке событий самым первым, т.е. выше таких же хуков в списке событий. И тогда при открытии ссылки типа /r/1 биллинг отработает первым.
К практике
1. Качаем архив из приложения.
2. Файл page_is_allowed.php из архива кладем в /system/controllers/billing/hooks
3. идем в компоненты, управление событиями
4. соглашаемся обновить
5. в списке событий фильтруем по имени page_is_allowed
и тянем хук page_is_allowed биллинга в самый верх.
Готово. Теперь при переходе гостем по реферальной ссылке /r/xxxxxx биллинг отработает раньше авторизации, кука поставится даже если сайт закрыт от гостей.
Для недоверчивых
Посмотрите код файла page_is_allowed из архива и сравните его с /system/controllers/billing/hooks/error_404.php Он практически идентичен, ничего лишнего не добавлено.
Не сработает на версиях ниже 2.14.2
Работа хуков без файла манифеста появилась только в 2.14.2 Файл манифеста в биллинге закодирован. Можно составить свой ручками, но лениво. Да и сидеть на таких старых версиях движка неправильно. Биллинг нормально работает на 2.16.1
Не без минусов
Теперь код хука выполняется при каждом открытии страницы. Но, во-первых, код там простой, выполнится моментально. А во-вторых, если вы используете биллинг, он итак грузится, чтобы сформировать пункт меню Баланса.
Если что-то пошло не так
Отключите новый хук биллинга. И все будет работать по-старому.