среда, 23 октября 2013 г.

PhpStorm: Bitrix plugin

Сегодня мне надоело бегать по немаленькому дереву структуры Битрикса.
Так как я в работе использую PhpStorm, то сразу полез проверить, не выпустил ли кто нибудь плагин, который бы облегчил мою работу. Представьте себе, нашелся один!

Не совсем то, что я представлял, но на безрыбье и рак рыба.
Перед работой плагин необходимо настроить: указать папку с шаблоном сайта. Все!
После этого мы можем мгновенно перемещаться в footer.php и header.php, шаблон используемого компонента и в сам компонент.

Все плюшки плагина, более подробно, показаны на видео.

 

К сожелению нет подсказок по методам классов, как в плагине для Drupal, но все равно огромное спасибо автору.
Вот страничка плагина, BitrixStorm где можно предложить свои идеи для развития плагина.



пятница, 17 мая 2013 г.

Битрикс - форматирование даты в виде День - Название месяца - Год

Часто в дизайне попадается дата для новости в таком виде.
15 января 2013

Как это реализовать без лишней головной боли, ведь стандартная дата в битриксе имет вид 15.01.2013?

Очень просто, достаточно в файл result_modifier.php или template.php добавить 2 строчки:

Для детальной новости:
$arr = ParseDateTime($arResult["DISPLAY_ACTIVE_FROM"], FORMAT_DATETIME);
$arResult["DISPLAY_ACTIVE_FROM"] = $arr["DD"]." ".ToLower(GetMessage("MONTH_".intval($arr["MM"])."_S"))." ".$arr["YYYY"];

Для списка новостей:

$arr = ParseDateTime($arItem["DISPLAY_ACTIVE_FROM"], FORMAT_DATETIME);
$arItem["DISPLAY_ACTIVE_FROM"] = $arr["DD"]." ".ToLower(GetMessage("MONTH_".intval($arr["MM"])."_S"))." ".$arr["YYYY"];


Все! обновляем страницу и радуемся.

пятница, 1 марта 2013 г.

Битрикс - получение пользовательских свойств заказа.

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

Это часто необходимо для реализации личного кабинета в интернет магазинах, например, отобразить адрес доставки или тип платильщика.

Представим что мы создали в свойствах товара несколько полей: адрес, телефон, индекс и тд....
А в личном кабинете нам все это необходимо показать.
















Делается это очень просто:

<?
// Воспользуемся классом CSaleOrderPropsValue.
        $res = CSaleOrderPropsValue::GetList(
            $arOrder = array(), // Индекс сортировки.
            $arFilter = array("ORDER_ID" => $order_info['ORDER']['ID'], "CODE" => "address"), // Фильтр

            $arGroupBy = false, // Групировка
            $arNavStartParams = false, // Навигация
            $arSelectFields = array() // Необходимые поля.
            );

        $arVals = $res->Fetch();
        echo "<pre>".print_r($arVals , true)."</pre>";
?>

В примере выше вы покажем свойство "адрес" заказа с определенным ID.

Если в массив  $arFilter ничего не передавать - покажутся все свойства для всех заказов.
Так же не забывайте, если ожидаете получить несколько свойств, заключите         $arVals = array(); в цикл.

while ( $arVals[] = $res->Fetch() )




 

пятница, 18 января 2013 г.

Добавление элемента со множественным свойством типа Файл.

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

Как оказалось все до банального просто и не интеренсо, но на всякий случай опишу, может кому то пригодится.

Что бы добавить пользовательское свйоство типа файл, необходмо сначала обработать этот файл методом  CFile::MakeFileArray.

$file_arr = CFile::MakeFileArray( #Полный путь к файлу #);

Если у нес несколько файлов и поле множественное то это надо заключить в цикл

 
foreach( $file_arr as $file){
     $more_src[] = CFile::MakeFileArray( $file );
 }

где:
$file_arr - Массив с путями картинок.

После присвоим полученый массив в массив пользовательских свойств.

$PROP[3] = $more_src;

где:
ключ 3 - ID Пользовательского свойства, ID можно заменить символьным кодом.

Следущим шагом будет заполнение массива с остальными полями:
$arLoadProductArray = Array(
        "MODIFIED_BY"    => $USER->GetID(), // элемент изменен текущим пользователем
        "IBLOCK_SECTION_ID" =>"",        
        "IBLOCK_ID"      => #IBLOCK_ID#,
        "PROPERTY_VALUES" =>  $PROP,
 );

Описание этих полей можете найти в документации 1С-Битрикс.

Все остальное останется неизменным

CModule::IncludeModule("iblock");
$el = new CIBlockElement;
$PRODUCT_ID = $el->Add($arLoadProductArray)

После  выполнения кода должны получить примерно следующее:
1c-Битрикс - заполнения пользовательского множественого свойства типа Файл.


Надеюсь эта статья кому то поможет, и я потратил время не зря.