Monthly Archives: Сентябрь 2018

AJAX запрос средствами Битрикс

Мало кто знает, что в Битриксе есть стандартные средства для отправки AJAX запросов, без использования jQuery или чистого JS. BX.ajax({ url: ‘/include/page.php’, data: { }, method: ‘GET’, timeout: 0, async: true, processData: true, scriptsRunFirst: true, emulateOnload: true, start: true, cache: true, onsuccess: function(data){ // выполняем в случае успеха }, onfailure: function(){ // в случае ошибки […]

Создание диалоговых (модальных) окон в Битрикс

В Битриксе есть стандартная js библиотека для создания таких окон, но почему-то она плохо задокументировано. А ведь там все просто: Подключаем JS библиотеку через php на странице: CJSCore::Init(array(’window’));CJSCore::Init(array(‘window’)); Воздать окно с вызовом /include/page.php в нем: var popup = new BX.CDialog({ ‘title’:’Выбрать товары’, ‘content_url’:’/include/page.php’, ‘width’:’550′, ‘height’:’350′ });var popup = new BX.CDialog({ ‘title’:’Выбрать товары’, ‘content_url’:’/include/page.php’, ‘width’:’550′, ‘height’:’350′ […]

Обновить или добавить значение свойства элемента Битрикс

Тут все просто, в документации функция CIBlockElement::SetPropertyValuesEx добавляет/обновляет свойство. Есть момент, для свойств «список», нужно указывать id значения свойства, а для свойств типа «справочник» нужно указывать символьный код значения. Пример использования: CIBlockElement::SetPropertyValuesEx($ID, false, array(’SVOYSTVO’ => 228));CIBlockElement::SetPropertyValuesEx($ID, false, array(‘SVOYSTVO’ => 228)); где $ID — ид элемента, SVOYSTVO — символьный код свойства, 228 — значение свойства (т.к. […]

Поиск и замена значения в базе данных MySQL

Команда замены в MySQL очень простая REPLACE. Предположим, нам нужно найти во всех записях wp_posts слово «staroe» и заменить его на «novoe» UPDATE `wp_posts` SET `post_content` = REPLACE(`post_content`, ‘staroe’, ‘novoe’) WHERE post_content LIKE "%staroe%";UPDATE `wp_posts` SET `post_content` = REPLACE(`post_content`, ‘staroe’, ‘novoe’) WHERE post_content LIKE "%staroe%"; где post_content — имя столбца (в нашем случае тело записи)

Возвращение минимальной цены товара по торговому предложению Битрикс

Функцию можно добавить в init.php и получить минимальную цену любого товара. CModule::IncludeModule(’catalog’); function GetOfferMinPrice($IBLOCK_ID,$item_id){ // получаем все торг. предложения $arSKU = CCatalogSKU::getOffersList($item_id, $IBLOCK_ID, array(’ACTIVE’ => ‘Y’), array(), array()); // Если у товара есть торговые предложения if(count($arSKU)>0){ $arr_price = array(); foreach($arSKU as $item_s) { foreach($item_s as $item_sku) { // получаем цену, где 1 — тип цены […]

Добавить пункт в меню админки Битрикс

Для добавления своего пункта меню в административный раздел Битрикс, нужно в init.php добавить функцию: AddEventHandler("main", "OnBuildGlobalMenu", "ChangeIblockMenu"); function ChangeIblockMenu(&$adminMenu, &$moduleMenu){ $moduleMenu[] = array( "parent_menu" => "global_menu_services", // поместим в раздел "Сервис" "section" => "change_iblock_elements", "sort" => 10, // сортировка пункта меню "url" => "change_iblock_elements.php?lang=".LANG, // ссылка на пункте меню "text" => ‘Изменить категорию’, // текст […]

По ID торгового предложения получить остальные предложения в Битрикс

Предположим у нас уже есть Ид торгового, сначало нужно получить Ид основного товара, а потом по нем все его торговые предложения. Получаем ID основного товара: $MainElenemt = CCatalogSku::GetProductInfo( $ID_SKU );$MainElenemt = CCatalogSku::GetProductInfo( $ID_SKU ); где $ID_SKU — id торгового предложения, а $MainElenemt[‘ID’] — id товара Получаем все остальные предложения в виде массива: $arSKU = CCatalogSKU::getOffersList($MainElenemt[’ID’], […]

Путь из символьных кодов к разделу в Битрикс

По непонятной причине в документации api битрикса нет функции: CIBlockSection::getSectionCodePath($ID)CIBlockSection::getSectionCodePath($ID) которая генерирует относительный путь из символьных кодов раздела такого вида: main_section/sub_section_1/sub_section_2/this_sectionmain_section/sub_section_1/sub_section_2/this_section Обращаю внимание, что в начале и в конце не будет слешов!

Получить SEO параметры раздела в Битрикс

Получаем SEO-параметры нужного нам раздела с помощью D7 $ipropValues = new \Bitrix\Iblock\InheritedProperty\SectionValues($id_iblock,$id_section); $arSection_seo["IPROPERTY_VALUES"] = $ipropValues->getValues(); $page_title = $arSection_seo[’IPROPERTY_VALUES’][’SECTION_PAGE_TITLE’];$ipropValues = new \Bitrix\Iblock\InheritedProperty\SectionValues($id_iblock,$id_section); $arSection_seo["IPROPERTY_VALUES"] = $ipropValues->getValues(); $page_title = $arSection_seo[‘IPROPERTY_VALUES’][‘SECTION_PAGE_TITLE’]; где $id_iblock — ID инфоблока$id_section — ID раздела Получим массив всех seo-свойств в $arSection_seo[«IPROPERTY_VALUES»], можете проверить в var_dump($arSection_seo[«IPROPERTY_VALUES»]). Их может быть много. Получить конкретное свойство, например, title раздела: $arSection_seo[’IPROPERTY_VALUES’][’SECTION_PAGE_TITLE’];$arSection_seo[‘IPROPERTY_VALUES’][‘SECTION_PAGE_TITLE’];

Получить свойства элемента в Битрикс

Если кто не знает, то все свойства элемента ввиде массива можно получить так: $res = CIBlockElement::GetList(Array(), Array(«IBLOCK_ID»=>2, «ID»=>10));if ($ob = $res->GetNextElement()){ $arFields = $ob->GetFields(); // поля элемента$arProps = $ob->GetProperties(); // свойства элемента} Можно упростить жизнь и написать простую функцию, поместим её в init.php function GetValueProp($id_tov, $iblock_id, $name_prop){ $arFilter = Array("IBLOCK_ID"=> $iblock_id , "ID"=>$id_tov); $res = […]