1. Главная
  2. Блог
  3. 1С-Битрикс
  4. Как открыть пункт меню Битрикс в новой вкладке через target=_blank

Как открыть пункт меню Битрикс в новой вкладке через target=_blank

22 июля 2026
53

Иногда в меню сайта на 1С-Битрикс нужно открыть не все ссылки, а только один конкретный пункт в новой вкладке. Например, если пункт меню ведет на PDF-файл: согласие на обработку персональных данных, политику конфиденциальности, согласие на использование cookies или другой документ.

На первый взгляд кажется, что достаточно добавить параметр target="_blank" прямо в файл меню. Но на практике это может не сработать, если шаблон меню не выводит дополнительные параметры пункта.

Пример задачи

Допустим, в файле меню есть такой пункт:

Array(
    "Cогласие на использование файлов cookies", 
    "/organization/Cookie_AK.pdf", 
    Array(), 
    Array(), 
    "" 
),

Нужно сделать так, чтобы именно эта ссылка открывалась в новой вкладке.

новая вкладка в меню

Как устроен пункт меню в Битрикс

Обычный пункт меню в файле .menu.php состоит из пяти элементов:

  • название пункта меню;
  • ссылка;
  • массив дополнительных ссылок для подсветки активного пункта;
  • массив дополнительных параметров;
  • условие показа пункта меню.

Нас интересует четвертый элемент массива. Именно туда можно передать свой параметр для шаблона меню.

Добавляем target в .menu.php

В файле меню нужно добавить параметр target в четвертый массив:

Array(
    "Cогласие на использование файлов cookies", 
    "/organization/Cookie_AK.pdf", 
    Array(), 
    Array("target" => "_blank"), 
    "" 
),

Можно использовать и одинарные кавычки:

Array(
    'Cогласие на использование файлов cookies', 
    '/organization/Cookie_AK.pdf', 
    Array(), 
    Array('target' => '_blank'), 
    '' 
),

Для PHP разницы между этими вариантами в данном случае нет. Если ссылка после этого не открывается в новой вкладке, причина не в кавычках.

Почему target может не работать

Самая частая причина — шаблон меню просто не выводит этот параметр в HTML.

То есть в файле .menu.php параметр уже есть:

Array("target" => "_blank")

Но в шаблоне меню ссылка по-прежнему выводится примерно так:

<a href="<?=$arItem["LINK"]?>"><?=$arItem["TEXT"]?></a>

В этом коде нет обращения к $arItem["PARAMS"]["target"], поэтому Битрикс не добавляет target="_blank" автоматически.

Как исправить шаблон меню

Нужно найти шаблон компонента меню. Обычно он находится примерно по такому пути:

/bitrix/templates/ваш_шаблон/components/bitrix/menu/название_шаблона/template.php

В шаблоне нужно найти вывод ссылки. Например:

<a class="sidebar-menu__link<?=($arItem["SELECTED"] ? " active" : "")?>" href="<?=$arItem["LINK"]?>">
    <?=$arItem["TEXT"]?>
</a>

И заменить его на вариант с проверкой параметра target:

<a class="sidebar-menu__link<?=($arItem["SELECTED"] ? " active" : "")?>"
   href="<?=$arItem["LINK"]?>"
   <?if(!empty($arItem["PARAMS"]["target"])):?>
      target="<?=$arItem["PARAMS"]["target"]?>" rel="noopener noreferrer"
   <?endif;?>
>
    <?=$arItem["TEXT"]?>
</a>

Если в меню есть подпункты

Если шаблон меню выводит не только основные пункты, но и подпункты, то обработку target нужно добавить и для них.

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

<a class="sidebar-menu__dop_link<?=($arSubItem["SELECTED"] ? " active" : "")?>" href="<?=$arSubItem["LINK"]?>">
    <?=$arSubItem["TEXT"]?>
</a>

Ее можно заменить на такой вариант:

<a class="sidebar-menu__dop_link<?=($arSubItem["SELECTED"] ? " active" : "")?>"
   href="<?=$arSubItem["LINK"]?>"
   <?if(!empty($arSubItem["PARAMS"]["target"])):?>
      target="<?=$arSubItem["PARAMS"]["target"]?>" rel="noopener noreferrer"
   <?endif;?>
>
    <?=$arSubItem["TEXT"]?>
</a>

Пример для конкретного шаблона меню

Допустим, в шаблоне есть такой код для основного пункта меню:

<a class="sidebar-menu__link<?=($arItem["SELECTED"] ? " active" : "")?>" href="<?=$arItem["LINK"]?>">
    <?=(isset($arItem["PARAMS"]["BLOCK"]) && $arItem["PARAMS"]["BLOCK"] ? $arItem["PARAMS"]["BLOCK"] : "");?><?=$arItem["TEXT"]?>
</a>

Тогда его можно заменить на такой:

<a class="sidebar-menu__link<?=($arItem["SELECTED"] ? " active" : "")?>"
   href="<?=$arItem["LINK"]?>"
   <?if(!empty($arItem["PARAMS"]["target"])):?>
      target="<?=$arItem["PARAMS"]["target"]?>" rel="noopener noreferrer"
   <?endif;?>
>
    <?=(isset($arItem["PARAMS"]["BLOCK"]) && $arItem["PARAMS"]["BLOCK"] ? $arItem["PARAMS"]["BLOCK"] : "");?><?=$arItem["TEXT"]?>
</a>

А если в этом же шаблоне есть подпункты меню:

<a class="sidebar-menu__dop_link<?=($arSubItem["SELECTED"] ? " active" : "")?>" href="<?=$arSubItem["LINK"]?>">
    <?=$arSubItem["TEXT"]?>
</a>

Их также нужно заменить:

<a class="sidebar-menu__dop_link<?=($arSubItem["SELECTED"] ? " active" : "")?>"
   href="<?=$arSubItem["LINK"]?>"
   <?if(!empty($arSubItem["PARAMS"]["target"])):?>
      target="<?=$arSubItem["PARAMS"]["target"]?>" rel="noopener noreferrer"
   <?endif;?>
>
    <?=$arSubItem["TEXT"]?>
</a>

Полный пример пункта меню

После доработки шаблона меню пункт в файле .menu.php может выглядеть так:

Array(
    "Cогласие на использование файлов cookies", 
    "/organization/Cookie_AK.pdf", 
    Array(), 
    Array("target" => "_blank"), 
    "" 
),

Теперь при выводе меню ссылка получит дополнительный атрибут:

<a href="/organization/Cookie_AK.pdf" target="_blank" rel="noopener noreferrer">
    Cогласие на использование файлов cookies
</a>

Зачем добавлять rel="noopener noreferrer"

Если ссылка открывается в новой вкладке через target="_blank", рекомендуется дополнительно добавлять атрибут rel="noopener noreferrer".

Это делается для безопасности и защиты исходной страницы от возможного воздействия со стороны страницы, открытой в новой вкладке.

Как проверить, приходит ли параметр в шаблон

Если после правок ссылка все равно не открывается в новой вкладке, можно временно вывести параметры пункта меню прямо в шаблоне:

<pre><?print_r($arItem["PARAMS"]);?></pre>

Если все настроено правильно, вы увидите примерно такой массив:

Array
(
    [target] => _blank
)

Если параметр в массиве есть, значит проблема была именно в HTML-выводе ссылки. Если параметра нет, нужно проверить сам файл меню, кеширование и то, тот ли шаблон меню используется на странице.

Не забудьте очистить кеш

Меню в Битрикс часто кешируется. Поэтому после изменения файла .menu.php или шаблона меню нужно очистить кеш сайта.

Если кеш не сбросить, можно долго проверять правильный код и думать, что он не работает, хотя на сайте просто отображается старая версия меню.

Чтобы открыть конкретный пункт меню Битрикс в новой вкладке, недостаточно просто добавить target в файл .menu.php. Нужно убедиться, что шаблон меню выводит этот параметр в HTML-ссылку.

Правильная схема такая:

  • в файле меню добавить Array("target" => "_blank") в четвертый параметр пункта;
  • в шаблоне меню проверить $arItem["PARAMS"]["target"];
  • если параметр есть, вывести target="_blank";
  • добавить rel="noopener noreferrer" для безопасности;
  • очистить кеш Битрикс.

После этого выбранный пункт меню будет открываться в новой вкладке, а остальные ссылки меню продолжат работать как раньше.


Понравилась статья?

Поддержать нас рублями:

Нужна помощь? Обращайтесь!

Комментарии
Name
Email
Phone
Ваше имя
Ваш email
Оставить комментарий
Нажмите для звонка
+7 (499) 341-00-19