линия

Главная

среда, 22 июня 2016 г.

Передаем из JS массив объектов на сервер

Однажды, разрабатывая довольно и интересный проект столкнулся с необходимостью передать данные, собранные на клиенте, на сервер. Казалось бы, что может быть банальнее: записал , например переменную в куки, и на сервере обрабатывай. Но, аппетит заказчика был отменный. Проект развивался, бабки платились исправно, функционал наращивался. И в один прекрасный момент меня чуть не стошнило от мысли что каждый раз увеличивая количество переменных на сервер увеличиваются переменные в куки. Почитав документацию, решил сделать так:

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

//массив
var answerArr = [];
 answerArr.push({
  clickCount: clickCount,
  clickError: clickError,
  clickOk: clickOk,
  countOk:countOk,
  mode: mode
});
//добавляем в куки
setCookie('data76', JSON.stringify(answerArr));
//все
На сервере

//вот он, наш красавчик
$json = $_COOKIE['data76'];
//получили массив обьеектов
$arr = json_decode($json);



все

суббота, 28 мая 2016 г.

Bitrix работа с изображением

Вывод дополнительных изображений.


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
<?foreach($arResult["ITEMS"] as $arItem):?>
<div class="item">
 <div class="iamges">
  <a href="<?=$arItem["PREVIEW_PICTURE"]["SRC"]?>" class="first-photo fancybox" rel="group" >
            <?  $smallImg = CFile::ResizeImageGet($arItem["PREVIEW_PICTURE"], ['width'=>200,"height" => 200], BX_RESIZE_IMAGE_EXACT, false);?>
   <img src="<?=$smallImg['src']?>'" alt="<?=$arItem["PREVIEW_PICTURE"]["ALT"]?>" title="<?=$arItem["PREVIEW_PICTURE"]["TITLE"]?>"  />
  </a>
  <? //Дополниетльные фотографии ?>
  <?foreach($arItem["PROPERTIES"]['MORE_PHOTO']['VALUE'] as $photoId):
   $imgArr = CFile::GetFileArray($photoId);
   $smallImg = CFile::ResizeImageGet($imgArr, ['width'=>200,"height" => 200], BX_RESIZE_IMAGE_EXACT, false);
  ?>
  <a href="<?=$imgArr["SRC"]?>" class="fancybox"  rel="group" >
   <img src="<?=$smallImg['src']?>'" alt="" title=""  />
  </a>
  <?endforeach;?>
 </div>                  
</div>
<?endforeach?> 

Параметры :
Тип масштабирования:
  • BX_RESIZE_IMAGE_EXACT - масштабирует в прямоугольник $arSize c сохранением пропорций, обрезая лишнее;
  • BX_RESIZE_IMAGE_PROPORTIONAL - масштабирует с сохранением пропорций, размер ограничивается $arSize;
  • BX_RESIZE_IMAGE_PROPORTIONAL_ALT - масштабирует с сохранением пропорций за ширину при этом принимается максимальное значение из высоты/ширины, размер ограничивается $arSize, улучшенная обработка вертикальных картинок.

Полная документация : дзенкую

пятница, 27 мая 2016 г.

Почтовое событие при добавлении данных в инфоблок

Задача.
Есть форма. Нужно добавить данные с формы AJAX-методом в информационный блок и  еще чтобы инициировалось почтовое событие.

Решение.
Покумекав смекнул, что трудо-время затраты можно уменьшить если все это дело запилитть самому.
1. открываем файл bitrix/php_interface/init.php
2. добавляем код
if(isset($_POST['email']) ){
 CModule::IncludeModule('iblock'); 
 $el = new CIBlockElement;
    $PROP = array();
    $PROP[1] =$_POST['email'];  // свойству с кодом 1 - email
    $PROP[2] = '';        // свойству с кодом 2 - phone

$arLoadProductArray = Array(
  "MODIFIED_BY"    => 1, // элемент изменен текущим пользователем
  "IBLOCK_SECTION_ID" => false,          // элемент лежит в корне раздела
  "IBLOCK_ID"      => 2, // номер IBLOCK_ID
  "PROPERTY_VALUES"=> $PROP,
  "NAME"           => $_POST['name'],
  "ACTIVE"         => "Y",            // активен
  //"PREVIEW_TEXT"   => "",
  //"DETAIL_TEXT"    => "",
  //"DETAIL_PICTURE" => CFile::MakeFileArray($_SERVER["DOCUMENT_ROOT"]."/image.gif")
  );

$PRODUCT_ID = $el->Add($arLoadProductArray);
// ПОЧТОВОЕ СОБЫТИЕ
$arSend = array(
   "FIO" => $_POST['name'], 
   "PHONE" => $phone, 
   "EMAIL" =>$_POST['email'], 
   //"TEXT" => $text, 
   );
 CEvent::Send('FEEDBACK_FORM',SITE_ID,$arSend);
 
}



суббота, 23 апреля 2016 г.

Bitrix - шпаргалка

Шпаргалка по Bitrix


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

Вывод содержимого инфоблока

CModule::IncludeModule("iblock");
$my_sections = CIBlockElement::GetList (
                           Array("ID" => "ASC"),
                           Array("IBLOCK_ID" => 37),
                           false,
                           false, 
                           array("ID", "IBLOCK_ID",'NAME','CODE',"PROPERTY_CIAN_ID"));
while($obj = $my_sections->GetNextElement())
{

 $ar_fields = $obj->GetFields();
 $ar_fields = $obj->GetProperties();
 print_r( $ar_fields['CIAN_ID']['VALUE']);
 echo '
';
}
официальная документация

четверг, 31 марта 2016 г.

PHP: удалить все файлы из папки или очистить кеш

Чтобы удалить все файлы кеша из папки cache подойдет такая функция:

function del_cache(){ 
if (file_exists('cache/')){
    $count = 0;
          foreach (glob('cache/*') as $file){
     $count++;
              unlink($file);
    }
    echo 'папка cache очищена, удалено '.$count.' файлов';
 }

}

понедельник, 21 марта 2016 г.

Bitrix: отправка письма при добавления сообщений через Web-форму

При гуглении по данной теме, почему то выходят решения где надо дописывать в файле init.php слушателей событий. Данный подход имеет место быть, но хочется использовать возможности Bitrxi по максимуму, раз уж отдали за неге бабло.

В  данном методе нет необходимости программировать. Все делается путем тыкания и заполнения.