Работа со свойствами страницы и раздела 1С-Битрикс (API)

Работа со свойствами страницы и раздела 1С-Битрикс (API)

В этой статье я расскажу, как работать со свойствами страницы, такими как: title, description, keywords, meta, пользовательские свойства - посредствам API битрикса. Я расскажу как можно их получить и как их изменять.

Итак, поехали.

Как установить свойства страницы

Начнем с простого. Метод $APPLICATION->SetPageProperty(свойство,значение) используется для того, чтобы установить значение одного из трех основных свойств: title, description, keywords. Применяется он очень просто:

<?
//Установим значение для keywords
$APPLICATION->SetPageProperty("keywords", "ключевые слова");
//Установим description
$APPLICATION->SetPageProperty("description", "описание");
//Устанавливаем Title
$APPLICATION->SetPageProperty("title", "Тайтл");
?>

Для тайтла также существует свой, отдельный метод $APPLICATION->SetTitle(значение), но приоритет его применения будет ниже, нежели вышеприведенный.

<?
//Устанавливаем Title
$APPLICATION->SetPageProperty("title", "Приоритетный тайтл");
//Устанавливаем Title
$APPLICATION->SetTitle("Тайтл");
?>

Из примера выше тайтл у страницы будет "Приоритетный тайтл".

Следующий метод позволяет записать в <head> страницы произвольную строчку. Очень удобно, если нужно сделать, например, канонические урлы для страниц. Пример:

<?
//Записать в head произвольную строку
$APPLICATION->AddHeadString("<link rel='canonical' href='http://site.ru/catalog/'>");
?>

Как получить пользовательское свойства страницы или раздела

Для начала разберемся, что это такое и зачем оно вообще нужно. Кроме стандартных свойств, которые присутствуют у страницы или раздела (Заголовок окна браузера, Описание страницы, Ключевые слова, ROBOTS), вы можете сами создавать любое количество необходимых вам дополнительных свойств (не путать со свойствами инфоблоков). Сразу же приведу пример, зачем это нужно. Скажем, у вас двухколоночный сайт, где есть левая часть (сайдбар с меню и баннерами) и контентная часть. И вам нужно сделать так, чтобы на некоторых страницах или разделах сайта сайдбар исчезал, а контентная часть растягивалась на всю ширину.

Можно, конечно, сделать это простыми условиями if else, но когда подобных страниц очень много, условий в коде тоже становится много и смотрится это просто ужасно. Куда проще написать одну строчку и радоваться жизни.

Я буду рассказывать на примере свойств раздела. Итак, давайте создадим с вами свойство, которое будет отвечать за сокрытие нашего с вами сайдбара. Перейдем в нужный раздел, на панели эрмитажа выберем "Изменить раздел -> Свойства раздела".

Нажимаем на ссылку "Редактировать свойства папки в Панели управления"

Добавим новое свойство, назовем его FULL_WIDTH и присвоим ему значение Y.

Далее сохраняем и идем в редактирование шаблона, в то место, где у нас прописан наш сайдбар. И вот мы добрались до самого главного - волшебный метод, который будет проверять наш раздел на свойство FULL_WIDTH. Код выглядит следующим образом:

<?if($APPLICATION->GetProperty("FULL_WIDTH") != "Y"):?>
	
<?endif;?>

Что делает код выше: он проверяет, если у текущего раздела свойство FULL_WIDTH не равно Y, то мы показываем наш сайдбар. Если же такое свойство появится, то наш сайдбар не появится.

Таким образом можно делать какие-нибудь уникальные тайтлы для страницы, если по-другому не получается. Просто записываем их в свое свойство, затем получаем его в переменную, и после этого методом $APPLICATION->SetPageProperty(свойство,значение) устанавливаем в заголовок браузера.

Также по аналогии создаются свойства для страницы. Это нужно, если у вас идет статический раздел /about/, а в нем статические страницы /about/o-kompanii.php, /about/sotrudniki.php, /about/istoriya.php и т.п.