URL для редиректа с реферальной ссылки на страницу пригласившего

InstantCMS 2.X
#1 16 декабря 2024 в 00:20

Приветствую всех, кто может подсказать можно ли сделать чтобы перейдя по реферальной ссылке (она имеет вид /r/1 где 1 это id пользователя естественно, r/2 и т д) пришедший попадал на страницу пригласившего u/1 (по умолчанию она users/1 где 1 это id пользователя)

/r/1 на /u/1

/r/2 на /u/2

и т д

Добавлено спустя 5 часов

RewriteEngine on
RewriteRule ^r/(.+)$ /u/$1 [L,R=301]

такая штука делает правильный редирект, но реферальная программа судя по всему с ней не дружит

#2 18 декабря 2024 в 06:43

Как я понял, биллинг не имеет экшена, который отвечает за страницу с рефссылкой, и поэтому при обращение к странице вида sait/r/1 запускается 404 ошибка. И уже там происходит фиксация реферального id. И действительно, посмотрев в файлы билинга, в папке hooks я нашёл error_404.php. У меня он закодирован, однако тут я нашёл информацию, что разработчик биллинга выкладывал этот файл в расшифрованном виде...

В нём мы видим, что там происходит запись реф id в куку, а потом происходит переадресация на $url. Так вот вам нужно изменить этот $url.

Вот изменённый код файла error_404.php, из папки hooks компонента биллинг, который должен вам помочь:

  1. <?php
  2.  
  3. class onBillingError404 extends cmsAction {
  4.  
  5. public function run($uri){
  6.  
  7. $uri = href_to_current();
  8. if ($this->options['is_refs'] && preg_match('/\/r\/([0-9]+)$/i', $uri, $matches)){
  9.  
  10. $ref_id = $matches[1];
  11.  
  12. if (!cmsUser::getCookie('ref_id')){
  13. cmsUser::setCookie('ref_id', $ref_id, $this->options['ref_days']*60*60*24);
  14. }
  15.  
  16. //$url = $this->options['ref_url'] ? $this->options['ref_url'] : href_to_home();
  17. //соберём свою ссылку с $ref_id
  18. $url = href_to_home().'users/'.$ref_id;
  19.  
  20. $this->redirect($url);
  21. }
  22.  
  23. return $uri;
  24. }
  25. }
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.