bitrix добавить get параметр в url
Работа с URL-адресами в Bitrix D7
Работа с URL-адресами в Bitrix является одним из важных моментов в работе всей системы. До появления ядра версии D7 работа с URL адресами производилась посредством классов CMain::GetCurPageParam и DeleteParam. На нашем сайте ранее публиковались примеры формирования URL с передачей многомерных массивов, а также произвольных URL посредством использования GetCurPageParam.
В D7 для работы с ссылками появился аналог этим классам – Uri. Работа с классом в некоторых моментах стала сложнее, т.к. каждый аспект работы класса стал более самостоятельным, реализованным в отдельных методах.
Класс Uri в Bitrix D7
Примеры работы c классом Uri
В представлении класса Uri в системе Bitrix каждый URL является объектом, с параметрами которого класс и работает посредством отдельных методов. Поэтому в перед тем как работать с URL необходимо инициализировать объект класса Uri.
Создание объекта из URL строки
Создать объект класса Uri мы можем из обычной строки URL, после чего уже работать с этим объектом.
Создание объекта из текущего URL
Довольно часто приходится работать с параметрами URL текущей страницы. Для работы с URL текущей страницы аналогично необходимо создать объект класса Uri. Получить текущий URL, и создать объект класса для работы с ним можно таким образом:
После того как создан объект класса Uri, мы можем работать с методами класса. Так к примеру, мы можем получить составляющие части сайта.
Методы класса Uri
Таблица доступных методов в данный момент времени:
| Метод | Описание | С версии |
|---|---|---|
| addParams | Метод добавляет параметры в запрос или заменяет существующие параметры. | 15.5.10 |
| deleteParams | Метод удаляет параметры из запроса. | 15.5.10 |
| getFragment | Метод возвращает фрагмент. | 14.0.15 |
| getHost | Метод возвращает хост. | 14.0.15 |
| getLocator | Метод возвращает URI без фрагмента. | 15.5.10 |
| getPass | Метод возвращает пароль. | 14.0.15 |
| getPath | Метод возвращает путь. | 14.0.15 |
| getPathQuery | Метод возвращает путь с запросом. | 14.0.15 |
| getPort | Метод возвращает номер порта. | 14.0.15 |
| getQuery | Метод возвращает запрос | 14.0.15 |
| getScheme | Метод возвращает схему. | 14.0.15 |
| getUri | Метод возвращает URI с фрагментом, если он имеется. | 15.5.10 |
| getUser | Метод возвращает пользователя. | 14.0.15 |
| setHost | Метод устанавливает хост | 14.0.15 |
| setPath | Метод устанавливает путь. | 15.5.10 |
| setUser | Метод устанавливает пользователя. | 16.5.7 |
| setPass | Метод устанавливает пароль. | 16.5.7 |
Изменение параметров в URL
Методы класса Uri позволяют так же добавлять параметры в существующий URL, а также менять различные составляющие URL-адреса.
Таким образом, можно довольно гибко оперировать данными URL в различных участках кода. К примеру, это может потребоваться тогда, когда необходимо сформировать URL-адреса для списка ссылок в шаблоне компонента. Класс будет работать везде где подключается ядро, Bitrix-а, поэтому его можно использовать как в компонентах, так и в отдельных скриптах-обработчиках, к примеру, в ajax.
Сколько GET-параметров должно быть в URL
Передача GET-параметров осуществляется каждый раз, когда происходит запрос к серверу. Не рекомендуется использовать в URL слишком много параметров, так как при росте их числа сложно установить контроль над ними со стороны веб-браузера и сервера. Если же такое произойдет, то поисковые системы начнут воспринимать разные страницы ресурса как дубли.
Как не столкнуться с такими проблемами и что такое GET-параметры – поговорим в сегодняшней статье.
Что такое GET-параметр
Прежде чем перейти к определению GET-параметра, поговорим о том, как происходит связь клиента и сервера в интернете. Выполняется это через HTTP-протокол – протокол передачи гипертекста. Благодаря ему обмен данными может осуществляться по принципу «запрос-ответ»: когда пользователь получает URL-адрес через веб-браузер, выполняется запрос на сервер, и в качестве ответа предоставляется HTML-страница, загруженная браузером. Для такого рода связи используются такие параметры, как GET и POST. Нас интересуют лишь GET-запросы – остановимся на них поподробнее.
Когда выполняется метод GET, клиент использует HTTP-протокол на веб-сервере для запроса необходимого ресурса, затем он отправляет серверу определенные параметры GET через запрошенный URL. Страница, созданная данным методом, может быть открыта повторно множество раз, кэширована браузером, проиндексирована поисковыми системами и добавлена в закладки пользователем.
GET-параметры представляют собой пары и соответствующие им значения, так называемые пары «имя-значение». Они всегда начинаются с вопросительного знака «?». За ним следует имя переменной и соответствующее значение, разделенные знаком «=». Если URL-адрес содержит более одного параметра, то они разделяются амперсандом «&».
Thing – первый GET-параметр, section – второй.
В коде прописывается следующим образом:
Чаще всего необходимость в таких запросах возникает, когда нужно отфильтровать страницу по каким-либо параметрам. Например, чтобы отобразить список определенных машин на сайте по продаже авто, открыть каталог смартфонов белого цвета с 32 Гб памяти и т.п.
Таким образом, мы можем прописывать параметры в URL и изменять с их помощью содержимого страницы.
Для чего нужен параметр GET
URL-адреса с GET-параметрами называются динамическими – их изменение приводит к смене адреса и содержимого страницы. Например, если интернет-магазин только что добавил продукты на страницу категории, а пользователь в этот момент открывает эту страницу в браузере, то новые продукты также будут отображаться, так как адрес страницы запрашивает измененный контент с помощью параметра GET. Также в данном методе происходит подстраивание заголовков под запрос пользователей, благодаря чему можно увеличить конверсию сайта. GET-параметры необходимы при создании динамических сайтов – интернет-магазинов, форумов, сайтов-отзовиков и т.п.
Стоит также понимать, что при передаче личной информации не рекомендуется использовать GET-параметры, так как они совершенно не подходят для конфиденциальной информации. Связано это с тем, что информация в адресной строке открыта каждому. Если вы хотите использовать в URL конфиденциальную информацию, то лучше воспользоваться POST-запросами.
Оптимальное количество GET-параметров
Как мы уже выяснили, один запрос включает в себя один или несколько GET-параметров. HTTP-протокол может использовать неограниченное количество таких запросов, но в этом нет никакой необходимости. Напротив, при использовании большого количества параметров могут возникнуть проблемы с рейтингом сайта в поисковых системах. Связано это с тем, что лимиты все-таки присутствуют, но со стороны сервера и браузера. Если длина будет превышена, то запрос попросту урежется.
Однако никто не сможет назвать идеальное количество параметров. Для разных серверов это число может колебаться – для одного 32 Кб, для другого – 1024 Кб. Золотая середина – 512 Кб. Рекомендуется использовать не более 5 параметров, иначе их будет сложно контролировать со стороны сервера и браузера. Если необходимо отправить большое количество данных, то лучше использовать POST-запросы.
Заключение
Мы разобрали один из методов отправки данных на сервер под названием GET. Он передает информацию в URL через специальные GET-параметры, количество которых должно соответствовать типу сервера. Если лимит будет превышен, то запросы сократятся до нужного размера. Использование таких опций полезно на динамических сайтах, где контент адаптируется под определенного пользователя и его запросы.
Bitrix добавить get параметр в url
Современные сайты наполняются содержанием с помощью специального программного обеспечения: CMS.
Для кого этот курс?
Курс Контент-менеджер адресован тем, кто работает с содержанием сайта: наполнение, изменение текста, загрузка и размещение картинок и так далее.
У нас часто спрашивают, сколько нужно заплатить
Но у нас есть Академия 1С-Битрикс, где можно обучиться на платной основе на курсах нашей компании либо наших партнёров.
Практика и тесты
При изучении курса рекомендуется повторять описываемые действия на демонстрационной версии сайта, установленной локально или в Виртуальной лаборатории.
После изучения курса пройдите тесты на сертификацию. При успешной сдаче последовательности тестов со страницы Моё обучение скачайте сертификат об успешном прохождении курса в формате PDF.
Для преподавания оффлайн
Если данный курс берётся в качестве основы для оффлайного преподавания, то рекомендуемая продолжительность: 2 дня (16 академических часов).
Если нет интернета

Android:
EPUB Reader
CoolReader
FBReader
Moon+ Reader
eBoox
iPhone:
FBReader
CoolReader
iBook
Bookmate
Windows:
Calibre
FBReader
Icecream Ebook Reader
Плагины для браузеров:
EpuBReader – для Firefox
Readium – для Google Chrome
Как проходить учебный курс?
Дубли Битрикс: удаление с помощью rel canonical и другие способы
С точки зрения поисковой оптимизации доступ к одной странице по разным ссылкам – это большая проблема. Поисковой робот не понимает, какую страницу надо показывать. В связи с этим адрес страницы должен быть фиксированным. Чтобы удалить дубли Битрикс, нужно выявить основные причины их появления.
Как устанавливать канонический URL?
Частая проблема, связанная с Bitrix – это появление множества дублей страниц. Особенно это касается товаров из разных категорий. Проблемы здесь как минимум две: дублирование контента, что вредно для SEO, и появление дублей метатегов. Поисковики могут и вовсе не показывать страницы-дубли.
Исправить проблему штатными средствами, к сожалению, не получится. Один из вариантов борьбы с дублями предлагает Google. Ваша задача – указать каноническую страницу из числа одинаковых. Так, один URL станет каноническим, а остальные получат статус его копий. Сканирование канонического URL выполняется гораздо чаще.
Указать Гуглу на нужные URL можно с помощью тега rel= »canonical». Сразу стоит отметить, что такой метод борьбы с дублями подходит далеко не всегда. Сам Google сообщает, что при индексировании обращает внимание не только на тег, но и на качество контента на странице, протокол и присутствие URL в Sitemap. Вот для каких случаев подходит использование тега:
Здесь можно узнать, какую страницу Google считает канонической. Но помните, что указание тега не дает гарантии, что поисковик не выберет другую страницу.
rel canonical для разделов
Прописать в Битриксе метатег rel canonical для страниц разделов напрямую не получится. Сделать это можно только с помощью костылей. При использовании комплексного компонента необходимо дописать в section.php следующий кусок кода:
Второй вариант – добавить кусок кода в шаблоне catalog.sections.list:
В основной шаблон сайта внутри head вставляется строчка:
Благодаря этому простому алгоритму из разных шаблонов различных компонентов в основной шаблон веб-ресурса внутрь head можно передать любые данные. Например, это метатеги под социализацию или микроразметку.
rel canonical для статей
Для страниц со статьями можно указать каноническую страницу одним из любых способов, которые предлагает Google:
Google не советует использовать инструмент удаления URL для указания актуальной версии страницы: так из выдачи исчезнут все варианты URL. Не стоит использовать разные методы указания актуальной версии страницы под разные URL. Не нужно трогать noindex, пытаясь предотвратить выбор канонической страницы.
Это лишь часть рекомендаций, которые дает Google.
Настройка товаров с каноническими ссылками с помощью rel canonical
Для начала нужно создать пользовательское свойство у информационного блока категорий «Канонический URL» с id каноникал. Делается это по адресу:

Путь к каталогу товаров
Открываем шаблон карточки товара:
В самой верхней части добавляем кусок кода:
Между тегами в шаблоне header.php вставляем код:
Открываем карточку товара, у которой есть дубли, после чего ищем поле «Канонический URL». Тут вставляем путь до карточки товара, которую нужно обозначить в качестве канонической. Домен при этом не указывается:
Отныне все страницы, отображающие указанный товары по другим URL, будут иметь тег
Некоторые готовые решения на Битрикс уже имеют необходимые настройки для обозначений актуальных версий страниц. К примеру, вот как это реализовано в готовом решении «Аспро»:

Готовое решение.png
Можно активировать режим правки в публичной части сайта на любой карточке товара. В группе параметров «Настройки детального просмотра» нужно поставить галку возле «Установить канонический URL» и сохранить настройки.

Настройки детального просмотра в Битрикс
Все зависит от того, какой версией Битрикс вы пользуетесь, либо на каком решении реализован Ваш сайт или интернет-магазин. Лучше не пытаться решить проблему самостоятельно, а обратиться в техническую поддержку или квалифицированным специалистам.
Что делать с index.php на Битрикс?
Таким образом index.php вырезается из строки адреса с простановкой 301 редиректа и сохранением get-параметров.
Дубли из-за лишних get-параметров
Не стоит допускать «нелегальных» параметров в адресе страницы. Так вы избежите вреда от лишних get-параметров. Алгоритм защиты довольно прост:

Отчет метрики по параметрам URL
Так или иначе, впадать в паранойю во время поиска «нелегальных» элементов не стоит. Если программист и оптимизатор будут аккуратно выполнять свою работу, лишние get-параметры не принесут особого вреда. И наоборот: если слишком тщательно пытаться “защититься” от них, сайт обрастет лишними ошибками.
Как найти дубли страниц с незначащими GET-параметрами
Дубли страниц на сайте могут появиться в поиске вместо ценных страниц сайта или замедлить их обход и индексирование.
Вообще, дубли — это страницы сайта, содержание текста в которых полностью или практически совпадает. Страницы с GET-параметрами в URL тоже могут быть дублями. Если GET-параметр влияет на содержание страницы — это не дубль. А если GET-параметр не меняет контент страницы, то этот параметр называют незначащим и страницу стоит скрыть от поиска.
Расскажем подробнее, что такое незначащие GET-параметры, как найти дубли с такими параметрами и убрать их.
Что такое дубли страниц с незначащими GET-параметрами
GET-параметр — это параметр, который передается серверу в URL страницы. Он начинается с вопросительного знака. Если URL содержит более одного параметра, то эти параметры разделяются знаком «&». Самый частый случай появления дублей из-за незначащих параметров — метки для задач веб-аналитики. Например, utm_source, utm_medium, from. Такими метками владельцы сайтов привыкли помечать трафик. Фактически эти URL одинаковые, на них опубликован одинаковый контент. Но формально адреса разные, так как различаются GET-параметрами в URL. Соответственно, и поиск тоже может посчитать их разными. Такие страницы и называются дублями с незначащими GET-параметрами.
Наличие дублей страниц с незначащими GET-параметрами не приносит пользы и может негативно сказаться на взаимодействии сайта с поисковой системой.
Зачем отслеживать дубли
1) Скорость обхода. Когда на сайте много дублей, роботы тратят больше времени и ресурсов на их обход, вместо того, чтобы обходить ценный контент. А значит, ценные страницы вашего сайта будут медленнее попадать в поиск.
2) Неуправляемость. Так как поисковой робот произвольно выбирает, какой из дублей показывать в поиске, то на поиск могут попасть не те страницы, которые вам нужны.
3) Влияние на поиск. Если незначащие параметры не добавлены в clean-param, робот может обходить эти страницы и считать их разными, не объединяя их в поиске. Тогда поисковый робот будет получать разные неагрегируемые сигналы по каждой из них. Если бы все сигналы получала одна страница, то она имела бы шансы показываться выше в поиске.
4) Нагрузка на сайт. Лишний обход роботом также дает нагрузку на сайт.
Например, на сайте по продаже билетов есть форма заявки на обратный звонок. При ее заполнении в url передается GET-параметр?form=show1, — он сообщает информацию о том, какой спектакль с этой страницы выбрал пользователь в заявке, хотя контент самой страницы никак не меняется. Таким образом, поисковой робот будет тратить время на обход множества одинаковых страниц, различающихся только GET-параметрами в URL, а до ценных страниц сайта доберется значительно позже.
Для интернет-магазинов типичный пример — страницы с фильтрами. Например, если пользователь выбирает товары в дорогом ценовом диапазоне, изменяя значения в фильтре «Цена», то в большинстве случаев ему будет показана страница с одними и теми же товарами. Таким образом, поиск будет получать сигналы о множестве одинаковых страниц, отличающихся только GET-параметром price= в URL.
Как обнаружить дубли
Теперь находить одинаковые страницы стало проще: в разделе «Диагностика» появилось специальное уведомление, которое расскажет про дубли из-за GET-параметров. Алерт появляется с небольшой задержкой в 2-3 дня, поэтому если вы увидели в нем исправленные страницы, не пугайтесь — это может быть связано с задержкой обработки данных. Дубли с параметром amp, даже если они у вас есть, мы не сможем показать в алерте.
Подписываться на оповещения не нужно, уведомление появится само.
Как оставить в поиске нужную страницу
1. Добавьте в файл robots.txt директиву Clean-param, чтобы робот не учитывал незначащие GET-параметры в URL. Робот Яндекса, используя эту директиву, не будет много раз обходить повторяющийся контент. Значит, эффективность обхода повысится, а нагрузка на сайт снизится.
2. Если вы не можете добавить директиву Clean-param, укажите канонический адрес страницы, который будет участвовать в поиске. Это не уменьшит нагрузку на сайт: роботу Яндекса всё равно придётся обойти страницу, чтобы узнать о rel=canonical. Поэтому мы рекомендуем использовать Сlean-param как основной способ.
3. Если по каким-то причинам предыдущие пункты вам не подходят, закройте дубли от индексации при помощи директивы Disallow. Но в таком случае поиск Яндекса не будет получать никаких сигналов с запрещенных страниц. Поэтому мы рекомендуем использовать Сlean-param как основной способ.
Директива Clean-param — межсекционная, это означает, что она будет обрабатываться в любом месте файла robots.txt. Указывать ее для роботов Яндекса при помощи User-Agent: Yandex не требуется. Но если вы хотите указать директивы именно для наших роботов, убедитесь, что для User-Agent: Yandex указаны и все остальные директивы — Disallow и Allow. Если в robots.txt будет указана директива User-Agent: Yandex, наш робот будет следовать указаниям только для этой директивы, а User-Agent: * будет проигнорирован.
Подробнее о работе со страницами-дублями читайте в Справке.

