- Передать переменные в шаблон
- Форум
- Центр поддержки
- Продукты
- Управление сайтом
- Битрикс24
- Интернет-магазин + CRM
- Решения
- Для интернет-магазинов
- Каталог готовых решений
- Внедрение
- Выбрать партнера
- Проверить партнера
- Стать партнером
- Битрикс – Как построить навигацию для разделов и подразделов
- Как по символьному коду раздела построить хлебные крошки в Битриксе
- Что за файлы .section.php
- Продукты
- Управление сайтом
- Битрикс24
- Интернет-магазин + CRM
- Решения
- Для интернет-магазинов
- Каталог готовых решений
- Внедрение
- Выбрать партнера
- Проверить партнера
- Стать партнером
- Рецепт приготовления bitrix:catalog
Передать переменные в шаблон
Чтобы сделать переменную доступную из любого места кода, можно использовать файл bitrix/ .settings.php .
# bitrix/.settings.php return array ( // … 'contacts' => array( 'value' => array( 'phone' => '111111111', 'email' => 'example@know-online.com', ), ), // … )
Теперь можно обратиться к свойству «contacts» через следующий код:
$contacts = \Bitrix\Main\Config\Configuration::getValue("contacts"); $contacts['phone']; // 111111111 $contacts['email']; // example@know-online.com
Переменные для указанного раздела
Создать переменные, которые будут доступны в указанном разделе, можно через razdel_name/ .section.php .
// .section.php $arDirProperties = array( 'engine' => 'Битрикс', );
К данному свойству можно обратиться через следующий код:
$APPLICATION->GetDirProperty('engine'); // Битрикс
Также данное свойство можно изменять в настройках раздела:
Файл «.section.php» можно создать в главной директории сайта, тогда её переменные будут доступны во всех PHP-файлах.
Изменить значение передаваемого свойства можно через метод $APPLICATION->SetDirProperty() :
$APPLICATION->SetDirProperty('engine', 'Битрикс 15');
Передать переменные в шаблон только для текущей страницы
В начале любой страницы с контентом можно вставить метод $APPLICATION->SetPageProperty() .
$APPLICATION->SetPageProperty('city', 'Москва');
В результате в свойствах страницы будет доступен новый параметр «city», который можно будет изменить.
Значение к свойству страницы можно получить через метод $APPLICATION->GetPageProperty() .
$APPLICATION->GetPageProperty('city'); // Москва
Также может использоваться метод $APPLICATION->GetProperty() , который в случае отсутствия указанного свойства, проверяет наличие данного свойства у родительских разделов.
Авторизуйтесь, чтобы добавлять комментарии
Форум
Ранее в этом фалйе хранились только описания для соотв. разделов сайта (папок), которые использовались для построения навигационной цепочки на сайте.
Позднее было добавлено хранение свойств для конкретной папки.
Управление всеми этими параметрами производится через админ. диалог, доступный по нажатию на иконку «Свойства папки» в административной панели.
$sSectionName = «О компании»;
$arDirProperties = array(
«work_pic» => «top_picture_2.jpg»
);
?>
где, как вы видите, указано название раздела, и массив свойств для данного раздела.
Если их не использовать то есть поубивать?
Почему, когда я прописываю в файле .section.php значения массива просто текстом, то все работает, например вот так:
$arDirProperties = Array( "description" => "Услуги компании XXXX", "keywords" => "услуги, компания XXXX", "TITLE" => "Услуги" );
но как только я пытаюсь подставить эти значения динамически например вот так:
include_once(__DIR__."/leng/".$_SESSION["LANG_UI"]."/index.php"); $arDirProperties = Array( "description" => $MESS['PAGE_KEYWORDS'], "keywords" => $MESS['PAGE_DESCRIPTION'], "TITLE" => $MESS['PAGE_TITLE'] );
то у меня ни чего не получается, т.е. вместо этого значения берутся не понятно от куда, думаю, что из самого высшего раздела.
Подскажите, как это побороть.
$arDirProperties = Array( "description" => "Услуги компании XXXX", "keywords" => "услуги, компания XXXX", "TITLE" => "Услуги" );
include_once(__DIR__."/leng/".$_SESSION["LANG_UI"]."/index.php"); $arDirProperties = Array( "description" => $MESS['PAGE_KEYWORDS'], "keywords" => $MESS['PAGE_DESCRIPTION'], "TITLE" => $MESS['PAGE_TITLE'] );
- $MESS — это глобальная переменная и что бы ее использовать нужно написать констркцию global $MESS;
Центр поддержки
Продукты
Управление сайтом
Битрикс24
Интернет-магазин + CRM
Решения
Для интернет-магазинов
Каталог готовых решений
Внедрение
Выбрать партнера
Проверить партнера
Стать партнером
1С-Битрикс http://www.1c-bitrix.ru Общие вопросы info@1c-bitrix.ru Приобретение и лицензирование продуктов : sales@1c-bitrix.ru Маркетинг/мероприятия/PR marketing@1c-bitrix.ru Партнерская программа partners@1c-bitrix.ru Мы работаем с 10:00 до 19:00 по московскому времени. Офис в Москве 127287 Россия Московская область Москва 2-я Хуторская улица дом 38А строение 9 Офис в Калининграде +7 (4012) 51-05-64 Офис в Калининграде 236001 Россия Калининградская область Калининград Московский проспект 261 Офис в Киеве ukraine@1c-bitrix.ru Телефон в Киеве +3 (8044)221-55-33 Офис в Киеве 01033 Украина Калининградская область Киев улица Шота Руставели 39/41 офис 1507
© 2001-2023 «Битрикс», «1С-Битрикс». Работает на 1С-Битрикс: Управление сайтом. Политика конфиденциальности
Битрикс – Как построить навигацию для разделов и подразделов
Из данной статьи вы узнаете как можно построить навигационную цепочку зная один лишь символьный код раздела.
Как по символьному коду раздела построить хлебные крошки в Битриксе
Перед прочтением данной статьи советую почитать Как добавить в хлебные крошки название. Прочитали? Тогда идем дальше.
В старых компонентах бывали случаи, когда в массиве хранится только символьный код раздела. Данная переменная называлась $arResult[‘VARIABLES’][‘SECTION_CODE’].
Если на вашем сайте символьные коды разделов уникальны (что рекомендуется всегда выставлять в настройках инфоблока), то проблем не будет. Для начала находим файл section.php вашего компонента.
$rsSect = CIBlockSection::GetList( array(), array(‘IBLOCK_ID’ => $arParams[«IBLOCK_ID»], ‘=CODE’ => $arResult[‘VARIABLES’][‘SECTION_CODE’]), false, array(‘ID’, ‘NAME’, ‘UF_TEXT_TOP’, ‘DEPTH_LEVEL’, ‘SECTION_PAGE_URL’) ); if ( $arSect = $rsSect->GetNext() )
Обратите внимание на строчку ‘=CODE’ => $arResult[‘VARIABLES’][‘SECTION_CODE’]. Также, мы используем if, вместо привычного цикла while, т.к. нам нужны данные только по одному разделу.
Записываем 3 переменные, которые нам понадобятся:
– уровень вложенности, DEPTH_LEVEL
– имя, NAME
– ссылка на раздел, SECTION_PAGE_URL
ВАЖНО. Перед следующим этапом отключите в своем компоненте настройку “добавлять раздел\инфоблок в цепочку навигации”
В самом конце файла section.php добавляем код:
= 2) < $rsSect = CIBlockSection::GetList( array(), array('IBLOCK_ID' =>$arParams["IBLOCK_ID"], '=CODE' => $arResult['VARIABLES']['SECTION_CODE']), false, array('ID', 'NAME', 'SECTION_PAGE_URL') ); while ( $arSect2 = $rsSect->GetNext() ) < if (strstr($curSectionURL, $arSect2['SECTION_PAGE_URL'])) < $SEC_NAME = $arSect2['NAME']; $SEC_URL = $arSect2['SECTION_PAGE_URL']; break; >> $result = array(); $ibsTreeResource = CIBlockSection::GetNavChain( false, $arSect2['ID'], array( "ID", "NAME") ); $c = 0; while($sectionItem = $ibsTreeResource->Fetch())< $result[$c]['NAME'] = $sectionItem['NAME']; $res = CIBlockSection::GetByID($sectionItem["ID"]); if($ar_res = $res->GetNext()) < $url = $ar_res['SECTION_PAGE_URL']; >$result[$c]['URL'] = $url; $c++; > foreach ($result as $arItem) < $APPLICATION->AddChainItem($arItem['NAME'], $arItem['URL']); > > else < $APPLICATION->AddChainItem($SEC_NAME, $SEC_URL); > ?>
При помощи CIBlockSection::GetNavChain выстраиваем полный путь до родительского раздела (если это подраздел), и добавляем через цикл в цепочку навигации Название и Ссылку. Если эже это раздел 1-го уровня, то просто добавляем его Название и Ссылку.
Например, наш код равен armstrong. Полученный результат выглядит приблизительно следующим образом:
Каталог / Офисные светодиодные светильники / Светильники Армстронг
/catalog/ofisnye-svetilniki/armstrong/
Ссылка на Каталог проставляется сама.
Офисные светодиодные светильники – это главный раздел.
Светильники Армстронг – раздел, в котором мы сейчас находимся. Компонент хлебных крошек не ставит ссылку на него.
Вот и всё, надеюсь у вас всё получилось :). ПС код не идеален и применялся для старых проектов, его можно улучшить.
Что за файлы .section.php
Ранее в этом фалйе хранились только описания для соотв. разделов сайта (папок), которые использовались для построения навигационной цепочки на сайте.
Позднее было добавлено хранение свойств для конкретной папки.
Управление всеми этими параметрами производится через админ. диалог, доступный по нажатию на иконку «Свойства папки» в административной панели.
$sSectionName = «О компании»;
$arDirProperties = array(
«work_pic» => «top_picture_2.jpg»
);
?>
где, как вы видите, указано название раздела, и массив свойств для данного раздела.
Если их не использовать то есть поубивать?
Почему, когда я прописываю в файле .section.php значения массива просто текстом, то все работает, например вот так:
$arDirProperties = Array( "description" => "Услуги компании XXXX", "keywords" => "услуги, компания XXXX", "TITLE" => "Услуги" );
но как только я пытаюсь подставить эти значения динамически например вот так:
include_once(__DIR__."/leng/".$_SESSION["LANG_UI"]."/index.php"); $arDirProperties = Array( "description" => $MESS['PAGE_KEYWORDS'], "keywords" => $MESS['PAGE_DESCRIPTION'], "TITLE" => $MESS['PAGE_TITLE'] );
то у меня ни чего не получается, т.е. вместо этого значения берутся не понятно от куда, думаю, что из самого высшего раздела.
Подскажите, как это побороть.
$arDirProperties = Array( "description" => "Услуги компании XXXX", "keywords" => "услуги, компания XXXX", "TITLE" => "Услуги" );
include_once(__DIR__."/leng/".$_SESSION["LANG_UI"]."/index.php"); $arDirProperties = Array( "description" => $MESS['PAGE_KEYWORDS'], "keywords" => $MESS['PAGE_DESCRIPTION'], "TITLE" => $MESS['PAGE_TITLE'] );
- $MESS — это глобальная переменная и что бы ее использовать нужно написать констркцию global $MESS;
Продукты
Управление сайтом
Битрикс24
Интернет-магазин + CRM
Решения
Для интернет-магазинов
Каталог готовых решений
Внедрение
Выбрать партнера
Проверить партнера
Стать партнером
1С-Битрикс http://www.1c-bitrix.ru Общие вопросы info@1c-bitrix.ru Приобретение и лицензирование продуктов : sales@1c-bitrix.ru Маркетинг/мероприятия/PR marketing@1c-bitrix.ru Партнерская программа partners@1c-bitrix.ru Мы работаем с 10:00 до 19:00 по московскому времени. Офис в Москве 127287 Россия Московская область Москва 2-я Хуторская улица дом 38А строение 9 Офис в Калининграде +7 (4012) 51-05-64 Офис в Калининграде 236001 Россия Калининградская область Калининград Московский проспект 261 Офис в Киеве ukraine@1c-bitrix.ru Телефон в Киеве +3 (8044)221-55-33 Офис в Киеве 01033 Украина Калининградская область Киев улица Шота Руставели 39/41 офис 1507
© 2001-2023 «Битрикс», «1С-Битрикс». Работает на 1С-Битрикс: Управление сайтом. Политика конфиденциальности
Рецепт приготовления bitrix:catalog
Дано:
1. стандартный bitrix:catalog,
2. инфоблок, где элементы есть только у разделов последнего уровня, т.е.:
Уровень 1
Подуровень 1-1
Еще подуровень 1-1-1
Элементы инфоблока
Еще подуровень 1-1-2
3. необходимо на каждом уровне выводить подуровни и элементы, непосредственно относящиеся к текущему уровню (без вложенных).
1. убираем галочку «Выводить топ элементов»
2. убираем галочку «Показывать элементы подразделов раздела»
3. убираем галочку «Выводить всегда» в настройках постраничной навигации
Смотрим результат. Все вроде хорошо, но выводится 2 уровня вложенности разделов. Непорядок.
Копируем шаблон компонента и делаем следующее:
1. Создаем параметр шаблона (НЕ компонента) типа «string». Назовем его MAX_LEVEL (например). Как копировать шаблоны и добавлять к ним параметры — описано в документации.
2. В шаблоне находим файлы sections.php и section.php Первый файл отвечает за показ корневого раздела, второй — всех остальных. Находим в этих файлах вызовы компонента bitrix:catalog.section.list:
$APPLICATION->IncludeComponent( "bitrix:catalog.section.list", "", Array( "IBLOCK_TYPE" => $arParams["IBLOCK_TYPE"], "IBLOCK_ID" => $arParams["IBLOCK_ID"], .
В массив параметров компонента добавляем строчку
"TOP_DEPTH" => $arParams["MAX_LEVEL"]
Сохраняем. Вызываем настройки bitrix:catalog и ставим нашему парамету значение 1. Сохраняем, смотрим, наслаждаемся жизнью.
UPD. C 12-й версии копировать шаблон и добавлять параметр будет уже не нужно.