Форум программистов, компьютерный форум, киберфорум
1С Битрикс
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.68/75: Рейтинг темы: голосов - 75, средняя оценка - 4.68
1 / 1 / 0
Регистрация: 12.01.2017
Сообщений: 31

Пользовательское свойство раздела и GetList

04.06.2017, 20:13. Показов 15721. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.

Есть сайт на битриксе, есть каталог, в каталоге присутствуют разделы.
Добавил пользовательское свойство.
В разделе каталога добавил значение этому свойству.
Пытаюсь вывести это значение на странице с помощью GetList, как в примере номер 2
здесь https://dev.1c-bitrix.ru/api_h... etlist.php

Сейчас выводятся все свойства товаров.

Подскажите пожалуйста, что почитать или посмотреть (я не силен в ооп).

Заранее благодарю за помощь.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.06.2017, 20:13
Ответы с готовыми решениями:

Как вывести пользовательское свойство раздела каталога только для текущего раздела?
Для разделов каталога требуется вывести яндекс карту. В данный момент на странице выводятся все карты из каждого раздела, нужно только для...

Пользовательское свойство у товара
Интересует вопрос, как в каталоге, у товара, добавить поле, в которое покупатель мог бы внести свой текст, ну и чтобы после оформления...

Свойство инфоблока в виде раздела медиабиблиотеки
Здравствуйте форумчане, подскажите мне пожалуйста решение. Есть инфоблок с некой информацией, среди которой есть пользовательское...

17
3012 / 1446 / 262
Регистрация: 16.03.2008
Сообщений: 6,444
Записей в блоге: 2
05.06.2017, 09:00
В настройках компонента каталога добавить это свойство для отображения в соответствующие параметр. Например, на странице детальной информации для товаров без торговых предложений это DETAIL_PROPERTY_CODE (Настройки детального просмотра - Свойства)
1
1 / 1 / 0
Регистрация: 12.01.2017
Сообщений: 31
05.06.2017, 20:20  [ТС]
наверное я не понятно задал вопрос =(


1) создал пользовательское поле вот здесь
2) потом перешел в раздел каталога и добавил произвольную информацию тут
3) в шаблоне пользовался таким примером (2ой пример гетлиста https://dev.1c-bitrix.ru/api_h... etlist.php )


PHP
1
2
3
4
5
6
7
8
9
10
11
<?
$arSelect = Array("ID", "IBLOCK_ID", "NAME", "DATE_ACTIVE_FROM","PROPERTY_*");//IBLOCK_ID и ID обязательно должны быть указаны, см. описание arSelectFields выше
$arFilter = Array("IBLOCK_ID"=>IntVal($yvalue), "ACTIVE_DATE"=>"Y", "ACTIVE"=>"Y");
$res = CIBlockElement::GetList(Array(), $arFilter, false, Array("nPageSize"=>50), $arSelect);
while($ob = $res->GetNextElement()){ 
 $arFields = $ob->GetFields();  
print_r($arFields);
 $arProps = $ob->GetProperties();
print_r($arProps);
}
?>
4) вот такой результат получаю

5)мне нужно вывести значение введенное в разделе ().
я понимаю что там написано "вывод свойств для каждого элемента"
но не могу найти как выводятся значения из "пользовательских свойств"

:-) помогите пожалуйста, кто чем может.

хоть ссылочку на статейку, или примерно что гуглить
0
3012 / 1446 / 262
Регистрация: 16.03.2008
Сообщений: 6,444
Записей в блоге: 2
05.06.2017, 20:29
А вас не смущает, что вы создали свойство раздела, задали значение свойству раздела, а ищите среди элементов? Уж если на то пошло вам нужен CIBlockSection::GetList()


Давайте сначала определимся.Это свойство к чему? К разделу или к конкретному элементу должно быть?

Добавлено через 39 секунд
И в шаблоне какого компонента вы его хотите вывести.
1
1 / 1 / 0
Регистрация: 12.01.2017
Сообщений: 31
05.06.2017, 20:34  [ТС]
>Давайте сначала определимся.Это свойство к чему? К разделу или к конкретному элементу должно быть?
к разделу и получить значение нужно тоже на странице раздела
(я так понимаю CIBlockElement - выводит свойства элементов, CIBlockSection а этот разделов?! )

>И в шаблоне какого компонента вы его хотите вывести.
в шаблоне каталога (в файле section.php)
0
3012 / 1446 / 262
Регистрация: 16.03.2008
Сообщений: 6,444
Записей в блоге: 2
05.06.2017, 21:44
Вот. Компонент bitrix:catalog.section имеет специальный параметр SECTION_USER_FIELDS т.е. при помощи него сказать элементу свойства которые хотите видеть
можете задать это свойство.
Он у вас подключается как раз в этом section.php

Далее, надо проверить шаблон компонента catalog.section. Если не выведет это поле. Сделайте в щаблоне <?print_r($arResult)?> и найдите его там... Ну и обеспечте вывод

Добавлено через 22 секунды
Т.е., как я и говорил, ни каких getList не надо
1
1 / 1 / 0
Регистрация: 12.01.2017
Сообщений: 31
05.06.2017, 22:37  [ТС]
сделал так:

PHP
1
2
3
4
5
6
7
8
9
10
11
<?$APPLICATION->IncludeComponent(
    "bitrix:catalog.section",
    "furniture",
    Array(
//добавил это
               "SECTION_USER_FIELDS" => array('UF_*');
//добавил это
)
),
    $component
);
при выводе print_r($arParams); (там много чего приходит)
приходит пустой [UF_TEST]


PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
["~DETAIL_PROPERTY_CODE"]=>
  array(7) {
    [0]=>
    string(4) "SIZE"
    [1]=>
    string(6) "S_SIZE"
    [2]=>
    string(9) "ARTNUMBER"
    [3]=>
    string(8) "MATERIAL"
    [4]=>
    string(12) "MANUFACTURER"
    [5]=>
    string(9) "[UF_TEST]"
    [6]=>
    string(0) ""
  }
=)
скажите пожалуйста это объект и его нужно спец.функцией "расфешить"?
0
3012 / 1446 / 262
Регистрация: 16.03.2008
Сообщений: 6,444
Записей в блоге: 2
05.06.2017, 23:08
print_r($arResult); не arParams
1
1 / 1 / 0
Регистрация: 12.01.2017
Сообщений: 31
05.06.2017, 23:14  [ТС]
не большой массив выводится:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
    Array
(
    [FOLDER] => /products/
    [URL_TEMPLATES] => Array
        (
            [sections] => 
            [section] => #SECTION_ID#/
            [element] => #SECTION_ID#/#ELEMENT_ID#/
            [compare] => 
            [smart_filter] => #SECTION_ID#/filter/#SMART_FILTER_PATH#/apply/
        )
 
    [VARIABLES] => Array
        (
            [SECTION_ID] => 1
        )
 
    [ALIASES] => Array
        (
        )
 
)
но тут этого свойство нету
0
3012 / 1446 / 262
Регистрация: 16.03.2008
Сообщений: 6,444
Записей в блоге: 2
06.06.2017, 09:16
Лучший ответ Сообщение было отмечено cosino как решение

Решение

1. Это вы вывели в section.php ? А надо в шаблоне компонента catalog.section (только не забывайте копировать в шаблоне сайте - не редактируйте в /bitrix/components/* )

2. рекомендую не пользоваться "*". Лишняя нагрузка, на мой взгляд. А, вдруг, кто-то потом добавит некое служебное поле. Зачем оно в выборке.
1
1 / 1 / 0
Регистрация: 12.01.2017
Сообщений: 31
06.06.2017, 22:45  [ТС]
Я очень признателен за терпение и помощь, но по прежнему не работает.

скопировал шаблон каталог.

в этой папке
components/bitrix/catalog.section/furniture/
2 файла + папка :
lang-папка
result_modifier.php
template.php

в темплэйт добавил print_r($arResult);
вернулся массив содержащий сразу вообще всё) кроме моего пользовательского свойства.

моё свойство называется "UF_TEST"
в файл /templates/furniture_red/components/bitrix/catalog/catalog_cyber/section.php я добавил такую строку

PHP
1
2
3
4
5
6
<?$APPLICATION->IncludeComponent(
    "bitrix:catalog.section",
    "furniture",
    Array(
//добавил это
               "SECTION_USER_FIELDS" => "UF_TEST"
верно ли это, или это нужно было как то приладить components/bitrix/catalog.section/furniture/ ?
хоть туториал какой-нибудь, или статейку почитать может если кто посоветует?!

зараннее благодарю.
0
3012 / 1446 / 262
Регистрация: 16.03.2008
Сообщений: 6,444
Записей в блоге: 2
07.06.2017, 02:01
В 6ой строке
PHP
1
"SECTION_USER_FIELDS" => array("UF_TEST")
Добавлено через 3 минуты
Цитата Сообщение от cosino Посмотреть сообщение
хоть туториал какой-нибудь, или статейку почитать может если кто посоветует?!
Куры от битрикс

как минимум Контент-менеджер и Администратор: Базовый. (Скорее всего ответ на ваш вопрос во втором).
Так же полезно будет Администратор: Модули (по крайней мере выборочно). И, если уж вы залезаете в PHP код,
Разработчик Bitrix Framework
1
1 / 1 / 0
Регистрация: 12.01.2017
Сообщений: 31
07.06.2017, 07:03  [ТС]
заработало)

была маленькая деталь которую я упустил.
создавая пользовательское свойство важно чтобы оно относилось к нужному объекту

2voral: Огромное спасибо!
0
0 / 0 / 0
Регистрация: 08.06.2017
Сообщений: 3
08.06.2017, 11:22
Поделитесь решением, в итоге как сделали? В section.php или поместили внутрь компонента bitrix:catalog.section?

Спасибо
0
1 / 1 / 0
Регистрация: 12.01.2017
Сообщений: 31
08.06.2017, 19:36  [ТС]
Небольшая инструкция как создать и вывести пользовательское свойство:

1. Предположим что у Вас уже есть демосайт на битриксе, как мебельный магазин.


2. Создаём пользовательское свойство:
общую информацию можно получить тут https://dev.1c-bitrix.ru/learn... .4579.3874

создать свойство можно двумя способами:
а) заходим в каталог, нужный раздел, переходим на вкладку доп.поля. далее нажимаем на ссылку "добавить пользовательское свойство"

б) создать свойство тут https://prnt.sc/fg7qe8 (настройки->настройки продукта->пользовательские поля)
*при использовании этого способа важно не забыть указать к какому объекту относится свойство


Заполняем все необходимые поля(выбираем тип, название.. и тд)

Когда само поле создано, и оно уже появилось в разделах

Нужно включить вывод этого свойства в шаблоне вызова компонента-каталог.

3. Добавляем вывод свойства:
Копируем шаблон каталога и следуем по адресу
/bitrix/templates/название_шаблона/components/bitrix/catalog/название_шаблона_каталога/section.php

находим место где вызывается компонент bitrix:catalog.section и в массив параметров добавляем строку
"SECTION_USER_FIELDS" => array("UF_НАЗВАНИЕ_СВОЙСТВА"),


4. Нужно получить и вывести значение из этого поля в нужное место на странице, следуем по этому адресу:
/bitrix/templates/название_шаблона/components/bitrix/catalog.section/название_шаблона_каталога/template.php

значение должно прийти сюда $arResult[UF_НАЗВАНИЕ_СВОЙСТВА]
размещаем в нужном месте print_r($arResult[UF_НАЗВАНИЕ_СВОЙСТВА]);

Сбрасываем кэш битрикса, если нужно кэш браузера, обновляем страницу, проверяем выводится ли.

5. Должно работать, но есть одно но, если проделать все как в инструкции, штмл-код будет выводиться текстом.
Пока не нашел как исправить это силами битрикса, но в пшп есть функция : htmlspecialchars_decode()
http://php.net/manual/ru/funct... decode.php тут можно почитать

думаю это не совсем правильно... но все же в пункте 4. сам вывод следует сделать так:

htmlspecialchars_decode($arResult[UF_НАЗВАНИЕ_СВОЙСТВА]);

Еще раз сбрасываем весь кэш и обновляем странцу.
Теперь на старнице в браузере, все штмл-элементы, должны отображаться корректно.
1
0 / 0 / 0
Регистрация: 08.06.2017
Сообщений: 3
21.06.2017, 14:30
Спасибо, за подробное описание.

Немного дополню.

Если нужно вывести несколько свойств, то в блоке компонента bitrix:catalog.section свойства нужно перечислять вот так:

PHP
1
2
3
4
5
6
"SECTION_USER_FIELDS" => array(
"UF_MENU", 
"UF_NAMEGROUP",
"UF_LINKSDOWNNAME",
"UF_TIGER"
),
0
1 / 1 / 0
Регистрация: 12.01.2017
Сообщений: 31
28.06.2017, 23:21  [ТС]
Найдена альтернатива php-шной функции htmlspecialchars_decode() в Битриксе она такая htmlspecialcharsBack()
почитать можно по адресу https://dev.1c-bitrix.ru/api_h... rsback.php
0
3012 / 1446 / 262
Регистрация: 16.03.2008
Сообщений: 6,444
Записей в блоге: 2
29.06.2017, 08:38
Не совсем аналог. PHP-шная преобразует:
Конвертируемые сущности : &amp;, &quot; (когда ENT_NOQUOTES не установлена), ' (когда ENT_QUOTES установлена), &lt; и &gt;.
А вот код из Битрикса (сразу ф-ии на ту же тему)
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function htmlspecialcharsEx($str)
{
    static $search =  array("&amp;",     "&lt;",     "&gt;",     "&quot;",     "&#34",     "&#x22",     "&#39",     "&#x27",     "<",    ">",    "\"");
    static $replace = array("&amp;amp;", "&amp;lt;", "&amp;gt;", "&amp;quot;", "&amp;#34", "&amp;#x22", "&amp;#39", "&amp;#x27", "&lt;", "&gt;", "&quot;");
    return str_replace($search, $replace, $str);
}
 
function htmlspecialcharsback($str)
{
    static $search =  array("&lt;", "&gt;", "&quot;", "&apos;", "&amp;");
    static $replace = array("<",    ">",    "\"",     "'",      "&");
    return str_replace($search, $replace, $str);
}
 
function htmlspecialcharsbx($string, $flags=ENT_COMPAT)
{
    //shitty function for php 5.4 where default encoding is UTF-8
    return htmlspecialchars($string, $flags, (defined("BX_UTF")? "UTF-8" : "ISO-8859-1"));
}
А для Битрикс 17 и новее есть
\Bitrix\Main\Text\String::htmlEncode
\Bitrix\Main\Text\String::htmlDecode
PHP
1
2
3
4
5
6
7
8
9
    public static function htmlEncode($string, $flags = ENT_COMPAT)
    {
        return htmlspecialchars($string, $flags, (defined("BX_UTF") ? "UTF-8" : "ISO-8859-1"));
    }
 
    public static function htmlDecode($string, $flags = ENT_COMPAT)
    {
        return htmlspecialchars_decode($string, $flags);
    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.06.2017, 08:38
Помогаю со студенческими работами здесь

Свойство товара: Замена товара + список Брендов из этого же раздела
нужно свойство на карточке товара для выбора Покупателем - &quot;допустимо заменить товар на аналогичный&quot;, с возможностью указания...

Прогнать GetList по циклу
кто-нибудь может подсказать почему такой код выдает один и тот же результат, хотя количество запросов верное ...

DETAIL_PAGE_URL в ЧПУ из CIBlockElement::GetList
Есть код вывода меню товаров &lt;? CModule::IncludeModule(&quot;iblock&quot;); $BID = 6; //ID инфоблока $SID = 0; //ID секции $result =...

Некорректно работает CUser::GetList()
Доброго времени суток :) Мне нужно отслеживать несколько юзеров, онлайн они или нет. При получении данных с помощью CUser::GetList()...

GetList вытаскивает только 10 элементов
Всем привет. Собсно столкнулся с сабжем. Обычный getlist: $deplist = CIBlockElement::GetList(array('propertysort_NAME_PROPERTY'...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru