L0ader Опубликовано 13 Ноября 2014 Жалоба Поделиться Опубликовано 13 Ноября 2014 Т.к. код будет работать на всех страницах форума необходимо определить на какой странице он находится.Какой параметр за это отвечает?Есть ли параметр определяющий главную страницу? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 Denis Chursinov Опубликовано 13 Ноября 2014 Жалоба Поделиться Опубликовано 13 Ноября 2014 Ну есть способы из нативного php функцией getenv( 'REQUEST_URI' ) или суперглобальной переменной $_SERVER( 'REQUEST_URI' ) . В IPB есть своя my_getenv( 'REQUEST_URI' ), которая выбирает походящий из предыдущих двух способов. Это выдаст ту строку, которая сейчас в адресной строке браузера. Это не всегда удобно, т.к. часто одна и та же страница бывает доступна по куче адресов, плюс строка эта изменяется при смене настроек ЧПУ.Поэтому удобнее пользовать уже разобранный массив из IPSRegistry::instance()->fetchRequest() или $this->registry->fetchRequest() , обычно он в конструкторе класса выводится в $this->request . Там массив всех параметров запроса (и GET и POST) приведенных контроллером к стандартному виду. На главной будет параметр act = idx , остальные можно определять по app , module , section , do . Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 FatCat Опубликовано 13 Ноября 2014 Жалоба Поделиться Опубликовано 13 Ноября 2014 (изменено) На главной будет параметр act = idxНа дефолтном движке да, именно так.У меня IPB 1.3 сильно переписанный, но наверное многое сходно и в более старших версиях.Давным-давно писал себе функцию определения запрошенной страницы. Заранее извиняюсь за длинную портянку. function b_text_generate() { global $DB, $INFO, $ibforums, $std; if($ibforums->input['t']>0) { $DB->query("SELECT title FROM ibf_topics WHERE tid = ".$ibforums->input['t']); $t = $DB->fetch_row(); $page = ""; if( !(intval($ibforums->input['st'])%intval($ibforums->vars['display_max_posts'])) and (intval($ibforums->input['st'])/$ibforums->vars['display_max_posts'])>0 )$page = " (страница ".((intval($ibforums->input['st'])/$ibforums->vars['display_max_posts'])+1).")"; return "просмотрена тема <a href='".$ibforums->vars['board_url']."/index.php?showtopic=".$ibforums->input['t']."&st=".$ibforums->input['st']."'>".$t['title'].$page."</a>."; } elseif($_SERVER['REQUEST_URI'] == "/journal.php" or $_SERVER['REQUEST_URI'] == "/journal.php?") { return "просмотрена <a href='".$ibforums->vars['board_url']."/journal.php'>главная страница журналов</a>."; } elseif( stristr($_SERVER['REQUEST_URI'],"journal.php") and intval($ibforums->input['user'])==0 and $ibforums->input['list'] == "allpost" ) { return "просмотрена <a href='".$ibforums->vars['board_url'].$_SERVER['REQUEST_URI']."'>страница календаря журналов</a>."; } elseif( stristr($_SERVER['REQUEST_URI'],"journal.php") and intval($ibforums->input['user'])==0 and $ibforums->input['list'] != "allpost" ) { return "просмотрена <a href='".$ibforums->vars['board_url'].$_SERVER['REQUEST_URI']."'>какая-то страница журналов</a>."; } elseif( $ibforums->input['showuser']>0 or ($ibforums->input['act']=="Profile" and $ibforums->input['MID']>0) ) { if($ibforums->input['showuser']<1)$ibforums->input['showuser'] = $ibforums->input['MID']; $DB->query("SELECT name FROM ibf_members WHERE id = ".$ibforums->input['showuser']); $t = $DB->fetch_row(); return "просмотрен <a href='".$ibforums->vars['board_url']."/index.php?showuser=".$ibforums->input['showuser']."'>профиль пользователя ".$t['name']."</a>."; } elseif($ibforums->input['act'] == "Shop") { if( (!$ibforums->input['CODE'] or $ibforums->input['CODE'] == "00") and !$ibforums->input['cat']) { return "просмотрена <a href='".$ibforums->vars['board_url'].$_SERVER['REQUEST_URI']."'>главная страница магазина</a>."; } elseif($ibforums->input['CODE'] == "01" and $ibforums->input['cat']) { $DB->query("SELECT id, cname FROM ibf_ls_cats WHERE id = ".$ibforums->input['cat']); $t = $DB->fetch_row(); return "просмотрена витрина магазина «<a href='".$ibforums->vars['board_url']."/index.php?act=Shop&CODE=01&cat=".$t['id']."'>".$t['cname']."</a>»."; } elseif($ibforums->input['CODE'] == "02" and $ibforums->input['id']) { $DB->query("SELECT id, sname FROM ibf_ls_products WHERE id = ".$ibforums->input['id']); $t = $DB->fetch_row(); return "в магазине просмотрен товар «<a href='".$ibforums->vars['board_url']."/index.php?act=Shop&CODE=02&id=".$t['id']."'>".$t['sname']."</a>»."; } else { return "просмотрена <a href='".$ibforums->vars['board_url'].$_SERVER['REQUEST_URI']."'>какая-то страница магазина</a>."; } } elseif(intval($ibforums->input['user'])>0) { $DB->query("SELECT name FROM ibf_members WHERE id = ".$ibforums->input['user']); $t = $DB->fetch_row(); return "просмотрена <a href='http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']."'>страница журнала ".$t['name']."</a>."; } elseif($_SERVER['REQUEST_URI'] == "/" or $_SERVER['REQUEST_URI'] == "/index.php" or $_SERVER['REQUEST_URI'] == "/index.php?") { return "просмотрена <a href='".$ibforums->vars['board_url']."/index.php'>главная страница сайта</a>."; } elseif($ibforums->input['act']=="calendar") { return "просмотрена <a href='".$ibforums->vars['board_url'].$_SERVER['REQUEST_URI']."'>страница календаря</a>."; } elseif($ibforums->input['act']=="idx") { return "просмотрена <a href='".$ibforums->vars['board_url']."/index.php?act=idx'>главная страница форума</a>."; } elseif( $ibforums->input['act']=="SC" and intval($ibforums->input['c']) > 0 ) { $DB->query("SELECT name FROM ibf_categories WHERE id = ".$ibforums->input['c']); $t = $DB->fetch_row(); return "просмотрена категория <a href='".$ibforums->vars['board_url']."/index.php?act=SC&c=".$ibforums->input['c']."'>".$t['name']."</a>."; } elseif( intval($ibforums->input['showforum']) > 0 or ( intval($ibforums->input['f']) > 0 and $ibforums->input['act']=="SF" ) ) { if( intval($ibforums->input['showforum'])<1 )$ibforums->input['showforum'] = intval($ibforums->input['f']); $DB->query("SELECT name FROM ibf_forums WHERE id = ".$ibforums->input['showforum']); $t = $DB->fetch_row(); return "просмотрен форум <a href='".$ibforums->vars['board_url']."/index.php?showforum=".$ibforums->input['showforum']."'>".$t['name']."</a>."; } elseif($ibforums->input['act']=="Help") { return "просмотрена страница <a href='".$ibforums->vars['board_url']."/index.php?act=Help'>справочной системы</a>."; } elseif( $ibforums->input['showtopic']=="0" and $ibforums->input['view']=="findpost" and intval($ibforums->input['p'])>0 ) { return "запрошен поиск <a href='".$ibforums->vars['board_url'].$_SERVER['REQUEST_URI']."'>сообщения по прямой ссылке</a>."; } elseif( $ibforums->input['act']=="Search" and $ibforums->input['CODE']!="00" ) { return "просмотрена страница результатов поиска."; } elseif($ibforums->input['act']=="Search") { return "просмотрена форма поиска."; } elseif($ibforums->input['act']=="Reg" and $ibforums->input['CODE']=="00") { return "просмотрена страница регистрации."; } elseif($ibforums->input['act']=="Shoutbox") { return "просмотрена страница <a href='".$ibforums->vars['board_url']."/index.php?act=Shoutbox'>СМС-чата</a>."; } elseif($ibforums->input['act']=="Search" and $ibforums->input['CODE']=="getactive") { return "просмотрена страница <a href='".$ibforums->vars['board_url']."/index.php?act=Search&CODE=getactive'>активных тем</a>."; } elseif( ($ibforums->input['Login']=="Login" and $ibforums->input['CODE']=="00") or stristr($_SERVER['REQUEST_URI'],"act=Login&CODE=00") ) { return "просмотрена страница авторизации."; } elseif($ibforums->input['act']=="Login" and $ibforums->input['CODE']=="01") { $DB->query("SELECT id, name FROM ibf_members WHERE name LIKE '".trim($ibforums->input['UserName'])."'"); if($s = $DB->fetch_row()) { $member_name = " Пользователь: <a href='".$ibforums->vars['board_url']."/index.php?showuser=".$s['id']."'><b>".$s['name']."</b></a>"; } else { $member_name = ""; } return "авторизация на форуме.".$member_name; } elseif($_SERVER['REQUEST_URI'] == "/txt/" or $_SERVER['REQUEST_URI'] == "/txt/index.php/") { return "просмотрена <a href='".$ibforums->vars['board_url'].$_SERVER['REQUEST_URI']."'>главная страница PDA-версии форума</a>."; } elseif(stristr($_SERVER['REQUEST_URI'],"/glossary.php/")) { return "просмотрена <a href='".$ibforums->vars['board_url'].$_SERVER['REQUEST_URI']."'>страница глоссария</a>."; } elseif( stristr($_SERVER['REQUEST_URI'],"act=Login&CODE=autologin&fromreg=1") ) { $cookie_member_id = intval( $std->my_getcookie('member_id') ); if($cookie_member_id>0) { $DB->query("SELECT name FROM ibf_members WHERE id = ".$cookie_member_id); $cookie_member_name = ""; if($s = $DB->fetch_row())$cookie_member_name = "<br>Пользователь: <a href='".$ibforums->vars['board_url']."/index.php?showuser=".$cookie_member_id."'><b>".$s['name']."</b></a>"; } return "просмотрена <a href='".$ibforums->vars['board_url'].$_SERVER['REQUEST_URI']."'> главная страница (успешная авторизация после регистрации)</a>. ".$cookie_member_name; } else { return "просмотрена <a href='".$ibforums->vars['board_url'].$_SERVER['REQUEST_URI']."'>какая-то страница</a>."; } } Изменено 13 Ноября 2014 пользователем FatCat Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 L0ader Опубликовано 13 Ноября 2014 Автор Жалоба Поделиться Опубликовано 13 Ноября 2014 Первый путь почему-то не заработал, покумекал и реализовал другой способ выполнения кода только на главной странице - нашел один из блоков, который только на ней присутствует и при этом поддерживает нужные мне переменные.В результате получил пусть и кривоватую но работоспособную функцию.Если у кого-то есть желание и возможность допилить мою идею (разработкой 5 строк кода назвать сложно) до статуса хука, отпишитесь в теме, распишу более подробно что и как сделал. Ну и полученный результат - просмотр форума возможен только после установки аватара. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Вопрос
L0ader
Т.к. код будет работать на всех страницах форума необходимо определить на какой странице он находится.
Какой параметр за это отвечает?
Есть ли параметр определяющий главную страницу?
Ссылка на комментарий
Поделиться на других сайтах
3 ответа на этот вопрос
Рекомендуемые сообщения
Присоединиться к обсуждению
Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.