Не зарегистрирован
Вход
Забыли пароль?
Регистрация
Подписаться
Сэкономьте время — перед вопросом на форуме узнайте, как найти ответ быстрее
По техническим проблемам необходимо обращаться в Консультационный центр

Поиск по форуму: 

Приглашаем в блог Amiro.CMS. Регулярные обзоры, опыт, решения, практикумы.
Форум  ->   Разработка плагинов, вопросы по API  ->  ЧПУ для фильтра


Показать все сообщения в этой ветке


Добавлено: 05.02.17 09:37:41  



Регистрация: 19.01.15
Сообщений: 102


Обратиться по имени

Евгений Лапин, Здравствуйте! Пытался проверить что храниться в $_SERVER['QUERY_STRING'] с помощью phpinfo(); получается там пусто:

_SERVER["QUERY_STRING"]	no value
_SERVER["REQUEST_URI"]	/katalog/namekategory1?&catid=90001&ext_custom_13=name-proizvoditel&pf=1&flt_force_values=1&action=search&search_subcats=1


или через
parse_str($_SERVER['QUERY_STRING'], $result);
print_r($result);
тоже пустой массив

UPD:
переделал первую часть так:

function customStartHandler($name, array $aEvent, $handlerModId, $srcModId){
    //if(strpos($_SERVER['REQUEST_URI'], 'katalog?&') === 0) {
	if(strpos($_SERVER['REQUEST_URI'], '/katalog') === 0) {
        $parts = explode('/', $_SERVER['REQUEST_URI']);

        // prepare search query params
        $params = array(
            'pf' => 1,
            'flt_force_values' => 1,
            'action' => 'search',
            'search_subcats' => 1
        );
        for($i = 0; $i < count($parts) - 1; $i++) {
            if(preg_match('/ext_custom_13=(\w*)/ui', $parts[$i], $matches)) {
                  $params['ext_custom_' . $matches[1]] = $parts[$i + 1];
            }
        }

        // build query string
        $_SERVER['QUERY_STRING'] = $GLOBALS['ROOT_PATH_WWW'] . 'katalog';
        foreach($params as $name => $value) {
            $_SERVER['QUERY_STRING'] .= '&' . $name . '=' . $value;
        }

        // force to use QUERY_STRING instead of REQUEST_URI
        unset($_SERVER['REQUEST_URI']);
    }
	
    return $aEvent;
}


теперь вроде отрабатывает
//$_SERVER['QUERY_STRING']
Array ( [0] => [1] => katalog [2] => namekategory1?&ext_custom_13=name-proizvoditel&pf=1&flt_force_values=1&action=search&search_subcats=1 )
почему тут первый элемент пустой?

//$_SERVER['REQUEST_URI']
Array ( )

UPD:
переделал так:

define('AMI_FIRE_ON_SYSTEM_START', TRUE);
AMI_Event::addHandler('custom_on_system_start', 'customStartHandler', AMI_Event::MOD_ANY);

function customStartHandler($name, array $aEvent, $handlerModId, $srcModId){
    //if(strpos($_SERVER['REQUEST_URI'], 'katalog?&') === 0) {
	if(strpos($_SERVER['REQUEST_URI'], '/katalog') === 0) {
        $parts = explode('/', $_SERVER['REQUEST_URI']);

        // prepare search query params
        $params = array(
            'pf' => 1,
            'flt_force_values' => 1,
            'action' => 'search',
            'search_subcats' => 1
        );
        for($i = 0; $i < count($parts); $i++) {
            if(preg_match('/ext_custom_([0-9]+)/ui', $parts[$i], $matches)) {
                  $params['ext_custom_' . $matches[1]] = $parts[$i];
            }
        }

        // build query string
        $_SERVER['QUERY_STRING'] = $GLOBALS['ROOT_PATH_WWW'] . 'katalog';
        foreach($params as $name => $value) {
            $_SERVER['QUERY_STRING'] .= '&' . $name . '=' . $value;
        }

        // force to use QUERY_STRING instead of REQUEST_URI
        unset($_SERVER['REQUEST_URI']);
    }
	
    return $aEvent;
}


получаю так:
$rttr = (string)$_SERVER['QUERY_STRING'];
echo $rttr;


вот это:

sitename.ru/katalog&pf=1&flt_force_values=1&action=search&search_subcats=1&ext_custom_13=namekategory1?&ext_custom_13=NAME-PROIZVODITEL&pf=1&flt_force_values=1&action=search&search_subcats=1

и всетаки непонятно как в адресной строке получить то что получится в $_SERVER['QUERY_STRING'] ???




0


Создать новую тему Ответить