линия

Главная

четверг, 1 декабря 2016 г.

Cordova: getPicture как получить нормальный путь к изображению

Разрабатывая простое приложение работающее с галереей и фотоаппаратом смартфона на  Apache Cordova столкнулся  с проблемой. На первый взгляд выглядело пустяковой проблемой, но часы летели -  проблема не хотела решиться.
А проблема вот в чем:
1. Берем фото из галереи.
2. Выводим саму картинку
3. Сохраняем путь к нему.
4. При последующем открывании страницы с картинкой выводи картинку, и при клике на картинку она открывается как обычная картинка, где можно увеличить и пролистывать. Уф, тавтология (туфтология) получилось. Ну и хер с ним.Идем дальше...

вторник, 22 ноября 2016 г.

Bitrix: каталог без разделов в URL

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

понедельник, 21 ноября 2016 г.

Jquery.wordexport.js - нет границ у таблицы в doc файле

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

четверг, 20 октября 2016 г.

Как открывать все фотки в fancybox (colorbox) или JQuery.wrap()

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

вторник, 11 октября 2016 г.

Bitrix: как сделать английскую версию сайта.

От заказов "сделать английскую версию сайта" я всегда отказывался.  Но, на этот раз решился взяться за проджект. Сайт работал на Bitrix. Битрикс я знаю хорошо - все  седые волосы дело рук битрикса, а их у меня не мало.
  Как оказалось, на правильно и грамотно сделанном сайте запилитть многоязычность сущие пустяки.
Итакпоехали!

1. Создаем второй сайт

Заходим в админку и  открываем:  настройки -- настройки продукта -- сайты -- список сайтов.
Нажимаем  ДОБАВИТЬ САЙТ



И заполняем как на рис.1 и 2.
рис 1.

четверг, 6 октября 2016 г.

PHP: работа с датой или как получить следующий понедельник

Дано:
PHP,Netbeans,OpenServer,AmoCrm
Голова,Simple Plan + Blink182

Задание:
Если сделка создается вручную менеджером, задачу ставить не нужно
Если выходной день СБ или ВС – ставить задачу на Понедельник до 12:00
Если Пн-Пт 00:00-09:00 ставим задачу на этот день в 12:00
Если Пн-Чт 19:00-00:00 ставить задачу на следующий день 12:00
Если Пт после 19:00, то ставить задачу на Понедельник 12:00

воскресенье, 25 сентября 2016 г.

Анимированный слайдер с BxSlider, Блекджеком и Шлюпками

Если вас достали унылые карусельки,  с простой картинкой и статичными текстами, и в душе вы желаете оживить все это дело тогда вы попали по адресу.
  Не спорю, есть много библиотек для создания анимаций , но зачем подключать лишнее когда можно обойтись тем что под рукой? А под рукой у нас Bxslider (все его знаю. Ты нет? Ты из какой планеты?)

Вот что должно получится.



воскресенье, 21 августа 2016 г.

Bitrix,сортировка товаров по цене торговых предложений.

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

1. Создаем  новые свойства товара:

среда, 17 августа 2016 г.

Получить GET параметры из URL

Как получить параметры из адресной строки, да все просто:
var options = decodeURIComponent(window.location.search.slice(1))
                      .split('&')
                      .reduce(function _reduce (/*Object*/ a, /*String*/ b) {
                        b = b.split('=');
                        a[b[0]] = b[1];
                        return a;
                      }, {});
Получаем обьект. Например для адреса вида site.ru?a=1&b=2, получим {a:1,b:2}

среда, 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 по максимуму, раз уж отдали за неге бабло.

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

понедельник, 18 января 2016 г.

amoCRM - как автоматически добавить номер в название сделки.

Есть такой прикольный црм - www.amocrm.ru . Задача была такая: при добавлении новой сделки надо чтобы в название добавлялась или ID сделки или же иной  порядковый номер.
 В интернете нашел решение - оно платное. Платить за такой пустяк не  мой метод. И  я плавно окунулся в документацию. Признаюсь - документация  добротная и удобная. Примеры прилагаются, restAPI реализован грамотно.(мое мнение!).

Итак, начнем!
Переходим в настройки.
Нажимаем на API
Добавляем web Hooks ( читка : https://developers.amocrm.ru/rest_api/#webhooks )


4 - действие: При добавлении сделки!
5 - пункт. Сюда пишем

Теперь пишем код!

PHP - Запись массива в файл

Допустим, некий сервис передает  некие данные. И мы, разумеется, хотим посмотреть что это за данные. Ясень пень, надо бы записать эти данные куда либо, а лучше в файл. И назовем его log


$json = json_encode($_POST);
file_put_contents('log.txt',$json );


и все. В файле будет массив в виде JSON

Второй способ:
ob_start();
print_r($_POST);
$log = ob_get_content();
ob_clear();
file_put_contents('log.txt',$log );

воскресенье, 10 января 2016 г.

Unity2d - Перемещение камеры нажатием на экран

Задача: Необходимо реализовать возможность перемещения  положения камеры нажатием  на дисплей телефона (компьютера). Это на Unity делается очень очень просто. Создается скрипт CameraMove   и вешается на Камеру.