Ответы пользователя по тегу 1С-Битрикс
  • Ошибка Network error – при загрузки картинок на Bitrix. Как поправить?

    @voland700 Автор вопроса
    Проблема решена. Поделюсь решением, возможно кому-нибудь пригодится.
    Обнаружил в /bitrix/tools/ - .htaccess файл, содержимое:
    <Files ~ "^(html_editor_action|mail_entry|upload)\.php$>
    deny from all
    </Files>


    Удалил файл /bitrix/tools/.htaccess и все заработало.

    В чистой, оригинальной версии БУС, этого файла нет. Полагаю, был данный файл был добавлен предшественником, для усиления безопасности Битрикс от взломов. Однако вместе с этим был нарушен функционал загрузки картинок через форму создания и редактирования элементов инфоблока.
    Ответ написан
    Комментировать
  • Как узнать количество товаров в битриксе?

    Для примера, так получаем количество активных элементов, товаров каталога,
    <?
    //если если ранее по коду модуль инфоблока не подключен, то подключаем его
    CModule::IncludeModule("iblock"); 
    
    $iblock_id = 3;   // Цифровое значение ID - Вашего Инфоблока - каталога товаров
    $arFilter = Array("IBLOCK_ID"=>$iblock_id, "ACTIVE"=>"Y");
    $count_goods = CIBlockElement::GetList(Array(), $arFilter, Array(), false, Array());
    ?>
    Количество товаров: <? echo $count_goods; ?>

    В переменной $count_goods - количество товаров, элементов каталога.
    CIBlockElement::GetList - подробней тут.
    Ответ написан
    Комментировать
  • Вредоносный код на сайте?

    На самом деле проблема актуальна и широко обсуждается на форуме Bitrix в ветке: Взломаны сайты в честь дня конституции Украины. Рекомендую ознакомится, много информации о причинах взлома, и способах решения проблемы.

    Но без обновления БУС решить проблему не получится, так как, без обновления, после удаления вредоносного кода уязвимость остается, и проблема повторяется.
    Ответ написан
    Комментировать
  • Как получить список товаров каталога по ID, с данными о ценах и размерах скидки?

    @voland700 Автор вопроса
    Задача решена. Опишу решение, возможно кому-нибудь пригодится.

    Изначально, необходимо было вывести на главной странице каталога блок с товарами каталога, по свойству PROPERTY_STICKERS – типа список, которым заданы значения Хит, Советуем, Новинки, Акции для вывода товаров с соответствующими стикерами. При этом товары должны выводится с размером скидок, указанием старой цены, ценой конвертированной из Валюты в рубли.

    5ef994cd5227f620637405.jpeg

    Методы битрикс CIBlockElement::GetList и CCatalogDiscount::GetList не идеальны для решения данной задачи. По моему мнению целесообразней использовать компонент catalog.section с фильтром по свойству. Для чего в параметрах компонента задан фильтр:
    "USE_FILTER" => "Y",
         "FILTER_NAME" => "arrFilterAdvice",


    И для получения всех товаров каталога, в которых заданы значения свойству PROPERTY_STICKERS (свойство не пустое) задан фильтр.

    <? $GLOBALS['arrFilterAdvice'] = array('ACTIVE' => 'Y', '!PROPERTY_STICKERS' => false);
    $APPLICATION->IncludeComponent(
    	"bitrix:catalog.section", 
    	"shop_window", 
    	array(
              …
              "USE_FILTER" => "Y",
              "FILTER_NAME" => "arrFilterAdvice", 
              …


    Таким образом получен список товаров которым заданы значения, и уже в файле result_modifier.php сортирую полученные элементы по массивам - Хит, Советуем, Новинки, Акции, добавляю в результатирующий массив $arResult для кеширования.

    if(!$arResult["ADVICE"]){
    	foreach($arResult["ITEMS"] as $Element){
    		foreach($Element["PROPERTIES"]["STICKERS"]["VALUE_XML_ID"] as $type){		
    			if($type == "HIT") $arResult["ADVICE"]["HIT"][$Element["ID"]] = $Element;
    			if($type == "RECOMMEND") $arResult["ADVICE"]["RECOMMEND"][$Element["ID"]] = $Element;
    			if($type == "NEW") $arResult["ADVICE"]["NEW"][$Element["ID"]] = $Element;
    			if($type == "STOCK") $arResult["ADVICE"]["STOCK"][$Element["ID"]] = $Element;
    		}
    	}
    }


    Полученные данные вывожу в шаблоне компонента catalog.section в виде табов.
    Ответ написан
    Комментировать
  • Почему не работает фильтр для выборки элементов инфоблока по ID?

    @voland700 Автор вопроса
    Проблема решена - способы решения находятся в комментариях.
    Суть проблемы в том, что данные содержащиеся в $arResult в файле component.epilog.php недоступны. Для передачи необходимых параметров содержащихся $arResult необходимо их пробросить из кешируемой области компонента в component_epilog.php:
    $cp = $this->__component;
    if (is_object($cp))
    {
      $cp->arResult["ASSOCIATED"] = $arResult["PROPERTIES"]["ASSOCIATED"]["VALUE"];
      $cp->SetResultCacheKeys(array("ASSOCIATED")); //cache keys in $arResult array
    }


    Либо передавать через $arParams параметры настроек компонента:
    $templateData["ASSOCIATED"] = $arResult["PROPERTIES"]["ASSOCIATED"]["VALUE"];
    Ответ написан
    Комментировать
  • Как настроить правильный вывод цен в каталоге Bitrix, шаблон Аспро.Next?

    @voland700 Автор вопроса
    Проблема решена - помог ответ из комментариев:
    PetrPo,

    В настройках самого решения Аспро.Next - убрать старую цену нет. Есть поле формы "Старая цена для товара" - где указана базовая, - но сделать её не активной не получается.


    ctrl + лкм (зажми ctrl и щелкни левой кнопкой мыши на том куда вопросик на скрине адресован, чтобы снять выделение)
    Ответ написан
    Комментировать
  • Битрикс GetList - как получить самые просматриваемые элементы инфоблока?

    @voland700 Автор вопроса
    Вопрос решен. Возможно решение пригодится кому-нибудь, опишу решение.
    С помощью CIBlockElement::GetList - получаем список элементов инфоблока, сортируем по убыванию по полю SHOW_COUNTER - в котором содержаться данные о количестве просмотров, и ограничиваем лимит 5 элементами.

    if(CModule::IncludeModule('iblock'))
    {
    	$res = CIBlockElement::GetList(
    		array("SHOW_COUNTER"=>"DESC"), // сортировка по количеству просмотров;
    		array("IBLOCK_ID"=>1," ACTIVE"=>"Y"), //Получаем  активные элементы , в данном случае из инфоблока с ID = 1;
    		false, 
    		array("nTopCount"=>5), //ограничиваем количество элементов - только 5.
    		array("NAME","PREVIEW_PICTURE", "DETAIL_PAGE_URL")// Выбираем только указанные поля
    	); 
    	while($ar = $res->GetNext())
    	{
    		$arTheBest[]=$ar;	//массив с данными 5 самых просматриваемых элементов инфоблока				
    	}
    }
    Ответ написан
    Комментировать
  • Почему не отрабатывает V-for после обновления DATA свойства полученными из базы данных?

    @voland700 Автор вопроса
    Вопрос снят. Ошибка найдена.
    Пытался работать с this data- внутри другой функции, которая имеет свой контекст!
    Ответ написан
    Комментировать
  • Как развернуть резервную копию созданную средствами веб окружения VMBitrix v7.3?

    @voland700 Автор вопроса
    Вопрос закрыт. Возможно данная информация будет полезна для других пользователей опишу процесс восстановления сайта или разворачивания из резервной копии созданной при автоматическом резервном копировании средствами Битрикс веб окружения.

    При автоматическом резервном копировании VMBitrix - фалы с backup-архивом помещаюстя в деректорию сервера /home/bitrix/backup/archive/www_backup_sitemanager_15.04.2019_8akRLwVX.tar.gz

    1. Копируем резервную копию в корневую директорию сайта:
    cp -R /home/bitrix/backup/archive/www_backup_sitemanager_15.04.2019_8akRLwVX.tar.gz /home/bitrix/www/www_backup_sitemanager_15.04.2019_8akRLwVX.tar.gz

    2. Переходим в дирeкторию сайта с архивом
    cd /home/bitrix/www/

    3. Распаковываем архив, воcтонавливаем файловую систему сайта.
    tar xzvvf www_backup_sitemanager_15.04.2019_8akRLwVX.tar.gz ./

    4. Воcтонавливаем MySQL - Базу данных.
    Дамп базы данных при резервном копировании средствами VMbitrix - размещается в директории /home/bitrix/ в виде двух файлов - с окончанием *.sql и *_after_connect.sql.
    Так же данные файлы находятся в самом архиве в директории /home/bitrix/ - от корня архива, при необходимости их можно извлечь от туда.

    Если база данных не нарушена - для восстановления достаточно дать команду на восстановление из файла *_after_connect.sql:
    mysql sitemanager
    < home/bitrix/mysql_dump_sitemanager_15.04.2019_8akRLwVX_after_connect.sql


    При необходимости полного восстановления базы данных необходимо последовательно дать команду на восстановление двух фалов:
    mysql sitemanager < home/bitrix/mysql_dump_sitemanager_15.04.2019_8akRLwVX.sql
    mysql sitemanager < home/bitrix/mysql_dump_sitemanager_15.04.2019_8akRLwVX_after_connect.sql


    5. При необходимости развернуть резервную копию на другом сервере, с установленным Веб окружением потребуется изменить пароль для пользователя базы. Для одного сайта в Битрикс веб окружением создастся база данных - sitemanager, с пользователем bitrix0.
    Пароль для пользователя bitrix0 при установке веб окружения генерируется автоматически, и соответственно не будет совпадать со старым паролем в конфигурационных файлах Битрикс. Посмотреть старый пароль можно в конфигурационных фалах Битрикс:
    /home/bitrix/www/bitrix/.settings.php или /home/bitrix/www/bitrix/php_interface/dbconn.php

    Необходимо поменять пароль для пользователе - bitrix0, привести в соответствие с паролем указанным в конфигурационных фалах:
    mysql -uroot
    SET PASSWORD FOR 'bitrix0'@'localhost' = PASSWORD('ПАРОЛЬ');
    Ответ написан
    Комментировать