Сайт под защитой
6 Настройки
Имя ФамилияВыйтиRU Помощь

Каталог Маркетплейс

Для интернет-магазина, Каталог товаров, Свойства, фильтр, поиск

Рейтинг

0

Разработчик

ООО ПиЭйчПиДев (PHPDev.ORG)

Дата добавления / изменения

30.03.2021

Версия

1.1.4

Кол-во установок / клиентов

Более 1000

Бесплатный

Иногда возникает ситуация, когда вам нужно хранить сразу несколько значений (разного типа) в одном свойстве, наш модуль решает эту проблему. Одно свойство, которое может содержать в себе сразу несколько полей разных типов (например: картинку, описание и дату)

Скриншоты Обновления Поддержка Установка
Скриншоты

Другие решения разработчика

Отзывы



Дмитрий Васильев 18.12.2025 19:12
Экспорт данных инфоблока не работает с данным модулем, возникает ошибка: json_decode(): Argument #1 ($json) must be of type string, array given (0)
.../bitrix/modules/phpdevorg.cprop/lib/CIBlockPropertyCProp.php:84

Павел Поляков 15.05.2025 09:17
Если у кого то ошибка js в консоли при переходе в настройки свойства, например:
"$ is not defined" и поля в настройках не добавляются то в классе "CIBlockPropertyCProp" нужно изменить метод на ~600 строке:

private static function showJsForSetting($inputName)
    {
        ?>
        <sc ript>
            (function () {
                function run() {
                    window.addNewRows = function () {
                        const html =
                            '<tr valign="top">' +
                            '<td><input type="text" class="inp-code" size="20"></td>' +
                            '<td><input type="text" class="inp-title" size="35"></td>' +
                            '<td><input type="text" class="inp-sort" size="5" value="500"></td>' +
                            '<td><select class="inp-type"><?=CUtil::JSEscape(self::getOptionList())?></select></td>' +
                            '</tr>';
                        jQuery("#many-fields-table").append(html);
                    };

                    jQuery(document).on('change', '.inp-code', function () {
                        const code = jQuery(this).val();
                        const row = jQuery(this).closest('tr');

                        if (code.length <= 0) {
                            row.find('input.inp-title').removeAttr('name');
                            row.find('input.inp-sort').removeAttr('name');
                            row.find('select.inp-type').removeAttr('name');
                        } else {
                            row.find('input.inp-title').attr('name', '<?=$inputName?>[' + code + '_TITLE]');
                            row.find('input.inp-sort').attr('name', '<?=$inputName?>[' + code + '_SORT]');
                            row.find('select.inp-type').attr('name', '<?=$inputName?>[' + code + '_TYPE]');
                        }
                    });

                    jQuery(document).on('input', '.inp-sort', function () {
                        const num = jQuery(this).val();
                        jQuery(this).val(num.replace(/[^0-9]/g, ''));
                    });
                }

                if (typeof jQuery === 'undefined') {
                    const script = document.createElement('script');
                    script.src = 'https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js';
                    script.onl oad = run;
                    document.head.appendChild(script);
                } else {
                    run();
                }
            })();
        </sc ript>
        <?php
    }

Алексей Белов 26.07.2024 15:31
Модуль хороший, жаль перестали поддерживать.

Чтобы заработало под PHP 8, нужно в файле /bitrix/modules/phpdevorg.cprop/lib/CIBlockPropertyCProp.php изменить несколько строк.
1. Строка 26 "public function GetPropertyFieldHtml($arProperty, $value, $strHTMLControlName)" заменить на "public static function GetPropertyFieldHtml($arProperty, $value, $strHTMLControlName)"
2. Строка 205 "public function ConvertToDB($arProperty, $arValue)" заменить на "public static function ConvertToDB($arProperty, $arValue)".
3. Строка 235 "public function ConvertFromDB($arProperty, $arValue)" заменить на "public static function ConvertFromDB($arProperty, $arValue)".

Чтобы заработал фильтр по getlist или соответствующим компонентам, то нужно делать поиск, как по строке. Допустим у вас в комплексном свойстве есть два подсвойства "prop1", "prop2" и "prop3", и вам нужно найти все элементы, у которых prop2=100. Поскольку значения в свойстве содержатся в виде строки в JSON формате, то пишем фильтр так.

$arFilter[] = [
    "LOGIC" => "OR",
    ["PROPERTY_COMPLEX" => '%"prop2":"'.$prop2.',"%'],
    ["PROPERTY_COMPLEX" => '%"prop2":'.$prop2.',%'],
];

Тут добавляем %%, чтобы поиск был по вхождению.
Logic or нужен по той причине, что иногда эти свойства сохраняются в виде {"prop2": "value2"}, а иногда value без кавычек {"prop2": value2}.
Также, в конце перед % нужно добавлять запятую, если prop2 добавлено не последним подсвойством, либо фигурную скобку }, если prop2 добавлено последним.

Андрей Белый 25.08.2023 13:02
Чтобы комплексное свойство заработало, необходимо в файле bitrix\modules\phpdevorg.cprop\lib\CIBlockPropertyCProp.php методы GetUserTypeDescription, GetPropertyFieldHtml, ConvertToDB, ConvertFromDB необходимо сделать статическими. Пример:
Меняем public function GetUserTypeDescription на public static function GetUserTypeDescription

Александр Станкевич 10.02.2023 22:12
Модуль не работает на версиях php 8
:Жаль

Сергей Сотников 03.08.2021 17:01
Добавьте возможность выбора свойства типа HTML

Для себя то я сделал https://pastebin.com/D9uGHYQ8 выглядит вполне жизнеспособно.
Хотелось бы в штатной поставке иметь такую возможность

Иван Гринкевич 29.06.2021 15:04
Айсен Васильев, Фильтр и поиск разные вещи, если используется стандартный поиск битрикса, тогда должно находить результаты (т.к. в момент сохранения значения свойств отдаются на индексацию для поиска). А вот фильтр не работает, потому что он ищет конкретное значения свойства, а у нас хранится json строка в базе. То есть поиск должен работать, фильтровать по этому полю - не должно работать.

Айсен Васильев 22.06.2021 14:44
Не ищет свойства через фильтр, ищет только числа. "Значения свойства участвуют в поиске" стоит, пробовал убрать морфологический поиск, делал переиндексацию, не помогает.

Иван Гринкевич 08.04.2021 13:25
Андрей Христенко, добрый день. По проблеме Станислава - мы обновили модуль, теперь ошибки нету. Связана была с выходом новой версии Битрикс. Мы актуализировали модуль.

Что касается вашего пожелания - в уже созданных свойствах ЕСЛИ файл уже загружен, поле для замены файлы не предусматривалось (в начале нужно поставить галочку "удалить файл",  а потом загрузить новый). То есть это доработка, которую мы планируем внести, но точные сроки сказать не могу. Если вам требуется срочно данный функционал - вы можете связаться с нами по почте partners@phpdev.org и мы доработаем модуль конкретно под ваши нужды.

Благодарим за обратную связь!

Андрей Христенко 31.03.2021 14:23
День добрый. Проблема та же что и в посте "Станислав Зверев 29 марта 2021 13:14"
Только еще пропали поля для выбора файла в уже созданных св-ах. Св-во имеет три поля и одно из них Файл.
Версия битрикса 20.500.400


Эта установка предназначена для разработки на базе продукта "1С-Битрикс: Управление сайтом". Она не должна использоваться в качестве рабочего (боевого) сайта.