Чиним реферальные ссылки биллинга при закрытом сайте

+9
165

Проблема такая: если сайт закрыт, то при переходе по реферальной ссылке типа /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

Не без минусов

Теперь код хука выполняется при каждом открытии страницы. Но, во-первых, код там простой, выполнится моментально. А во-вторых, если вы используете биллинг, он итак грузится, чтобы сформировать пункт меню Баланса.

Если что-то пошло не так

Отключите новый хук биллинга. И все будет работать по-старому.

Изображение

Прикреплённый файл:
Скачать 469 байтскачан 4 раза
Нет комментариев. Ваш будет первым!

Еще от автора

Готовый сайт лендинг компании по подбору персонала
Делал два года назад. Заказчик сменил профиль и сайт не пригодился.
Выведем контент группы в списке полей группы
Поле позволяет в списке полей группы вывести последний контент этой группы.
Тайм-лента Ztime v.1.0.3
Обновление компонента, который позволяет выводить список записей выбранных типов контента в виде общей ленты
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.