Здравствуйте, уважаемые коллеги. Мы продолжаем цикл статей о жуликах, которые продают чужие решения по дешевке под видом своих.
Сегодня речь пойдет о нашем популярном модуле . Модуль пользуется популярностью не только у клиентов, но и пиратов. Они пытаются ломать его, ставить на неактивные решения Битрикс и прочее. Это им, конечно, удается, но особых дивидендов и какой-то удовлетворенности от своей работы не приносит.
Итак, ближе к сути. По у нас идет платный трафик. И вот при оценке показов объявления в зависимости от запроса мы обратили внимание на следующее объявление: . Кто-то предлагает «Парсер контента» для Битрикс всего за 3 500 руб. При переходе на объявление попадаем на примитивный лендос: . И что мы увидели? Увидели текста и смыслы, содранные с карточки нашего модуля. Буква в букву, слово в слово.
Но у нас все же осталась надежда, что содраны только смыслы и текст, но не наш модуль. Мы все же изначально думаем о людях хорошо. Поэтому мы решили связаться с товарищем, чтобы окончательно прояснить ситуацию. Телефонов на лендинге не было, но зато его владелец смело поделился своим ФИО, почтой и аккаунтом вконтакте.
Оказалось, что предположительным мошенником является некто Герцен Евгений. Парень гордится, что разрабатывает сайты, интернет-магазины, контекстную рекламу запускает. К тому же, опыта у него уже 6 лет. А еще он фанат БМ. Насколько я знаю, в БМ не советуют воровать и продавать чужое. Там совсем другая идеология. Поэтому у нас все еще оставались надежды на безгрешность Евгения.
Но, как это не печально, Евгений нас подвел. При первом же касании он предложил поставить модуль даже на неактивную версию Битрикса. А когда поставил его на фейковый сайт, то все стало понятно. Вот скрин: . Женя, Женя. В кого ты такой пошел? Поменял просто владельца модуля. Не более того. Не потрудился даже код модуля сменить. Лентяй ты, Женька. Или просто «рукожоп».
А когда Женя нам не смог настроить стандартный парсер на Вайлдберис, то он нас вообще разочаровал. Вернее, он его пытается вторые сутки настроить, но безрезультатно. Видимо, квалификации не хватает.
Ладно, решили Женьке упростить задачу и запросили у него продление Бизнеса БУС. Он согласился, но почему-то запросил доступы на сайт. Если доступы не даем, то ему нужен ключ Битрикс и, к тому же, надо понять ему: на какое лицо оформлен Битрикс. Женя, может тебе еще ключи от дома, где деньги лежат, дать? Наивный парень. И опять расстраивает, что заработать он захотел не на перепродаже продления Битрикс, а на простом взломе.
Что сказать тебе Женя? Загубил ты свой талант, подставил идеалы БМ. Но вот наглости тебе не занимать. Пустить рекламу на свой пиратский продукт – этого я еще не слышал. Ты молодчик. Но только далеко не уедешь на этом.
Все данные о данном гражданине переданы в партнерский отдел Битрикс, а также сформирована и направлена жалоба в Яндекс.Директ.
Клиентам же категорически не рекомендуем работать с данным товарищем. Если он не смог настроить простейший парсер, то что он сможет сделать с Вашим проектом? Если и покупаете наши ломанные продукты, то покупайте, пожалуйста, у квалифицированных специалистов, а не у «рукожопов» вроде Евгения Герцена.
Данные мошенника:
ФИО: Евгений Герцен Email: Вконтакте: Лендос:
Фриланс:
PS: Женек, прошу тебя обратиться в нашу ТП. Мы специально для тебя проведем мастер-класс по настройке парсера. Вне очереди!))
Очередной клиент, со своими очередными премудростями захотел иметь в сделках ЦРМ сложный механизм скидок, аналогичный тому, что отлично работает (при правильной настройку, конечно же) в БУС, и именуется "правила работы с корзиной".
Ваять подобный механизм очень не хотелось. Ну оооочень. По сему начались размышления. Писать - долго, не очень интересно, и главное - есть такое, но в БУС. А в ЦРМ нету. А в БУС есть. Но в коробке есть механика БУС. Но механизм рассчитан на корзину интернет-магазина БУС. А скидки нужны в ЦРМ.
А что нужно клиенту? Клиенту нужно, чтобы на список товаров в сделке ЦРМ работали скидки корзины БУС. Уже было собирался пойти сложным путём (нажимаем сохранить сделку -> создаётся корзина -> пихаются в неё товары/применяются скидки -> берём изменённые цены и меняем в сделке -> показываем сделку с уже изменёнными ценами), но вдруг "а если... пойти на хитрость?".
В панели управления, в разделе "Магазин" настраиваем интеграцию с ЦРМ. В качестве целевой ЦРМ используем ЭТУ ЖЕ коробку.
Что нам даёт эта петля. При создании сделки, появляется "связать сделку с интенет-магазином". При использовании этого функционала, заказ создаётся в "БУС" с использованием ВСЕХ скидок на товар и правил работы с корзиной, и успешно цепляется ЦРМ, где появляется сделка с нужными ценами. Можно (с помощью небольшого напильника) при необходимости, вытянуть даже список применённых скидок.
Что нужно учитывать. Для корректной и комфортной работы этого функционала требуются покупатели. Покупателя можно создавать прямо в сделке, но он может не подцепиться к существующему контакту, если что-то не совпадает (к примеру, адрес почты друггой). Для избежания подобных неурядиц, а так же комфортного использования описанного выше функционала МОЖНО сделать так, чтобы при создании контакта в ЦРМ автоматом создавался покупатель. И дальше оперировать только выбором покупателя.
Теперь вы можете указать страницы на которых не нужно выводить теги OpenGraph. Пути до страниц указывать от корня.
Пример 1:
Задача: Нужно запретить вывод мета-тегов OpenGraph для страницы "/catalog/auto/audi/a8/", а также запретить вывод для главной страницы. Решение: Указываем в поле "catalog/auto/audi/a8/", а в другом поле "index" (index, от корня, это ключевое значение, которое модуль воспримет за главную страницу).
Добавлена возможность указать OpenGraph в элементах инфоблока
Выводятся все поля, которые указаны в настройках модуля. Поле description - выводится как textarea Поле image- выводится как fileinput Все остальные поля выводятся, как input
Поля которые не выводятся, но значения проставляются автоматически:
url - текущая отображаемая страница
image:width - ширина картинки, которая сейчас в og:image
image:type - тип картинки (png,jpg, etc.), которая сейчас в og:image
image:height - высота картинки, которая сейчас в og:image
site_name - название сайта из настроек сайта
Добавлена возможность указать OpenGraph в разделах инфоблока
Выводятся все поля, которые указаны в настройках модуля. Поле description - выводится как textarea Поле image- выводится как fileinput Все остальные поля выводятся, как input
Поля которые не выводятся, но значения проставляются автоматически:
url - текущая отображаемая страница
image:width - ширина картинки, которая сейчас в og:image
image:type - тип картинки (png,jpg, etc.), которая сейчас в og:image
image:height - высота картинки, которая сейчас в og:image
site_name - название сайта из настроек сайта
Добавлена настройка вывода OpenGraph полей в элементах и разделах
Добавлена загрузка картинки для OpenGraph, по умолчанию
Как интегрировать поддержку OpenGraph
Мы сделали автоматический вывод Open Graph для:
title - из заголовка страница
description - из описания страницы
url - текущая страница
site_name - название из настроек сайта
type - по умолчанию website
Для всего остального и собственных полей мы сделали 2 способа интеграции
Способ #1
Указать на нужных страницах названия полей добавляя впереди "og:"
Примеры:
Переписать поле og:title
$APPLICATION->SetPageProperty('og:title','Новое значение');
// или
// $APPLICATION->SetDirProperty('og:title','Новое значение');
Установить значение в og:image
$APPLICATION->SetPageProperty('og:image','http://rockisfest.ru/upload/resize_cache/iblock/5a9/380_9999_1/5a9163ca1aca97d620d6640dd271a7f6.jpg');
// или
// $APPLICATION->SetDirProperty('og:image','http://rockisfest.ru/upload/resize_cache/iblock/5a9/380_9999_1/5a9163ca1aca97d620d6640dd271a7f6.jpg');
Установить любое своё свойство, допустим og:custom
Предварительно нужно проверить добавлено ли поддержка custom в настройках модуля, если нет, то добавить
$APPLICATION->SetPageProperty('og:custom','Новое значение');
// или
// $APPLICATION->SetDirProperty('og:custom','Новое значение');
Если нужно сделать установку значений из элементов и разделов, то необходимо прописывать в result_modifier.php используемого шаблона. После чего сбросить кэш.
Способ #2
Этот способ наиболее проще первого, но, в данной версии, представляет меньше гибкости. Этот способ мы сделали для более удобной интеграции Open Graph в компонентах.
Необходимо в result_modifier.php или component_epilog.php прописать вызов метода:
\Dev2fun\Module\OpenGraph::Show($refId,$type);
Где $refIf - идентификатор элемента или раздела Где $type - тип объекта element или section.
element - вывод для элементов инфоблока section - вывод для разделов инфоблока
В результате result_modifier.php должно получиться следующее:
Здравствуйте! На хостинге обновили php до 7 версии и что-то случилось с системой поиска sphinx. Помогите пожалуйста. Уже 3 дня копаю файлы, и ничего не могу найти. Как это можно исправить??
Здравствуйте , я владелец сайта bringer.com.ua. Сразу скажу я не разработчик , имею только базовые знания по администрированию сайта. Помогите пожалуйста разобраться с url страниц на двух языках ru и ua.
К примеру имеем страницу на русском
аналог на украинской версии
при создании категории магазинов на русской версии ДЕТИ И РОДИТЕЛИ битрикс присваивает символьный код deti-i-roditeli
при создании категории магазинов на украинской версии ДІТИ ТА БАТЬКИ битрикс присваивает символьный код diti-i-batki
в результате происходит ошибка при переключении с одного языка на другой , страница не отображается , но если украинской версии присвоить символьный код русской версии и вбить в ручную в админке , все нормально страница отображается ,насколько я понял , в обоих версиях URL должен быть одинаковые , с разницей только в приставке ua в украинской версии .
Подскажите пожалуйста , как быть с тем , что битрикс присваивает автоматически символьный код в украинской версии и он не соответствует русской версии , т.к названия разделов на разных языках не всегла совпадают и как решить этот вопрос , чт обы в ручную не перебивать коды в ua версии
Добрый день Заливал тексты на сайт в разделы, и обнаружил, что текст после заливки так же ещё отображается и в карточке самого раздела (прикрепил скрин). Скажите пожалуйста, как его оттуда убрать.
Добрый день! Бывают ситуации когда в каком-либо компоненте не хватает какого то параметра. Например, мне, не хватает параметра очередности столбцов в стандартном копоненте "корзина" (bitrix:sale.basket.basket). То есть я хочу чтобы первым столбцом в корзине было не наименование, а артикул, или любой другой столбец. Для этого я ничего не придумал лучше как добавить в настройках компонента дополнительные параметры вида "Номер столбца => Название столбца". Но проблема в том что я не знаю заранее количество столбцов, которые будут использованы в корзине, поэтому этот параметр должен быть динамически, то есть для параметра "COLUMNS_LIST" у компонента, мы должны добавить 'REFRESH' => 'Y' и в зависимости от количества выбранных столбцов выводить то же количество необходимых нам параметров. Вариант "скопировать компонент в своё пространство имён" - оставим на потом, а я предлагаю прямо в шаблоне влезть в настройки параметров и поправить всё что нам нужно. Итак. Копируем шаблон корзины в свой шаблон и добавляем (если отсутствует) файл .parameters.php прямо в вашей папке шаблона корзины. Далее добавляем в этот файл параметр, полностью соответствующий параметру в папке .parameters.php компонента.
Единственное что я добавил это 'REFRESH' => 'Y'. И теперь если посмотрим уже визуальные настройки компонента, то параметр "Выводимые колонки" поменяется на наш. Таким образом можно менять логику, значения любого параметра прямо из шаблона.
Далее просто получаем значения, создаём массив и выводим новые параметры для выбора.
Если во время операции произошла одна или несколько ошибок, их текст можно получить из результата:
$result = BookTable::update(...);
if (!$result->isSuccess()) {
$errors = $result->getErrorMessages();
}
Создается обманчивое впечатление, что проверкой isSuccess можно отлавливать ошибки работы с БД. Однако это не так. Ошибки уровня БД обрабатываться не будут. Т.е. ошибки валидации, несоответствия полей в классах DataManager обработаются, а вот попытки записать NULL в поле NOT NULL или ошибки дубликата ключей вызовут просто Exception. В DataManager такой код:
try {
операции с БД
}
catch (\Exception $e)
{
// check result to avoid warning
$result->isSuccess();
throw $e;
}
return $result;
не логичнее ли было все же вернуть $result и дать программисту возможность самому решить, разрулить ситуацию или вызвать throw? Ну а так все равно придется оборачивать каждую операцию в свой дополнительный try catch
Недавно понадобилось для одного проекта сделать автоматическую публикацию материалов в основные социальные сети: вконтакте, facebook, twitter и одноклассники.
С первыми 3-мя проблем не возникло, т.к. есть хороший модуль с гибкой настройкой
Для публикации в одноклассники и другие социальные сети у разработчика есть платная версия модуля Но, судя по обсуждениям и реакции разработчика на вопросы, данный модуль длительное время не обновлялся и публикация в одноклассники не работает. Длительное ожидание ответа от разработчика и ручная публикация ссылок в группе в одноклассниках, заставили подумать о собственном решении данного вопроса. Покопался в интернете и нашел несколько полезных статей: - о том как создать приложение и произвести необходимые настройки. - непосредственно сам код для публикации.
Задача следующая: После добавления материала в инфоблок по событию OnAfterIBlockElementAdd проверять на соответствие разрешенному IBLOCK_ID и производить публикацию.
Сам код необходимо разместить в файле /bitrix/php_interface/init.php:
AddEventHandler("iblock", "OnAfterIBlockElementAdd", Array("AutoPostingOK", "Posting"));
Class AutoPostingOK
{
const OK_ACCESS_TOKEN = ""; // Наш вечный токен
const OK_PRIVATE_KEY = ""; // Секретный ключ приложения
const OK_PUBLIC_KEY = ""; // Публичный ключ приложения
const OK_GROUP_ID = ""; // ID нашей группы
// Запрос
function getUrl($url, $type = "GET", $params = array(), $timeout = 30, $image = false, $decode = true)
{
if ($ch = curl_init())
{
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, false);
if ($type == "POST")
{
curl_setopt($ch, CURLOPT_POST, true);
// Картинка
if ($image) {
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
}
// Обычный запрос
elseif($decode) {
curl_setopt($ch, CURLOPT_POSTFIELDS, urldecode(http_build_query($params)));
}
// Текст
else {
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));
}
}
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
curl_setopt($ch, CURLOPT_USERAGENT, 'PHP Bot');
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
$data = curl_exec($ch);
curl_close($ch);
// Еще разок, если API завис
if (isset($data['error_code']) && $data['error_code'] == 5000) {
$data = AutoPostingOK::getUrl($url, $type, $params, $timeout, $image, $decode);
}
return $data;
}
else {
return "{}";
}
}
// Массив аргументов в строку
function arInStr($array)
{
ksort($array);
$string = "";
foreach($array as $key => $val) {
if (is_array($val)) {
$string .= $key."=".arInStr($val);
} else {
$string .= $key."=".$val;
}
}
return $string;
}
function Posting(&$arFields)
{
define("LOG_FILENAME", $_SERVER["DOCUMENT_ROOT"]."/upload/posting_ok.txt");//путь для записи log-файла
$POSTING_IBLOCK = Array(1,2);//ID инфоблоков, для которых надо публиковать материалы
if($_SERVER["HTTPS"])
$PROTOCOL = 'https';
else
$PROTOCOL = 'http';
if(in_array($arFields["IBLOCK_ID"], $POSTING_IBLOCK) && $arFields["RESULT"]==true)
{
$ok_access_token = AutoPostingOK::OK_ACCESS_TOKEN;
$ok_private_key = AutoPostingOK::OK_PRIVATE_KEY;
CModule::IncludeModule("iblock");
$res = CIBlockElement::GetByID($arFields["ID"]);
if($ar_res = $res->GetNext())
{
$arFields["DETAIL_PAGE_URL"] = $ar_res["DETAIL_PAGE_URL"];
}
$params = array(
"application_key" => AutoPostingOK::OK_PUBLIC_KEY,
"method" => "mediatopic.post",
"gid" => AutoPostingOK::OK_GROUP_ID,
"type" => "GROUP_THEME",
"attachment" => '{"media": [{"type": "link","url": "'.$PROTOCOL.'://'.$_SERVER["SERVER_NAME"].$arFields["DETAIL_PAGE_URL"].'"}]}',
"format"=>"json"
);
$sig = md5(AutoPostingOK::arInStr($params).md5("{$ok_access_token}{$ok_private_key}"));
$params["access_token"]=$ok_access_token;
$params["sig"]=$sig;
$result = json_decode(AutoPostingOK::getUrl("https://api.ok.ru/fb.do", "POST", $params), true);
if (isset($result['error_code']) && $result['error_code'] == 5000) {
AutoPostingOK::getUrl("https://api.ok.ru/fb.do", "POST", $params);
AddMessage2Log("Повторная попытка публикации элемента ID:{$arFields["ID"]}", "iblock");
}
if (isset($result['error_code'])) {
AddMessage2Log("Публикация элемента ID:{$arFields["ID"]} прошла с ошибкой: ".$result['error_code'].'. Текст ошибки: '.$result['error_msg'].'. Ошибка данных: '.$result['error_data'], "iblock");
}
}
}
}
Обязательно укажите значение констант: OK_ACCESS_TOKEN, OK_PRIVATE_KEY, OK_PUBLIC_KEY, OK_GROUP_ID. Укажите, элементы каких инфоблоков необходимо публиковать в одноклассники. Переменная $POSTING_IBLOCK. Отчет об ошибках будет падать в файл /upload/posting_ok.txt
Публикация происходит успешно, ошибок не вываливает. Всем удачи!
С 1 января 2018 года минимальные требования для БУС и КП повышаются до PHP 5.6. Это значит, что сайты и порталы с устаревшими версиями перестанут получать обновления до тех пор, пока не обновят PHP до версий 5.6, 7.0 или 7.1. В ближайшее время в системе обновлений всех сайтов появится соответствующее предупреждение.
Прошу помощи, нужно на перехватить весь html код, всех компонентов перед выдачей посетителю, с целью его обработки определенным php скриптом и потом выдать. Подскажите, пожалуйста, как это лучше реализовать?
Здравствуйте, уважаемые партнеры 1С-Битрикс. К сожалению, мы вынуждены продолжить цикл статей о нерадивых партнерах, а фактически о мошенниках, которые дискредитируют Битрикс-сообщество.
Итак, обо всем по порядку.
В июле месяце к нам обратился клиент, который сообщил, что один «партнер» продает наше решение по цене 49 000 руб., хотя официальная цена – 199 900руб. То есть фактически цена дешевле в 4 раза!!! Из этого можно сразу сделать вывод, что эти ребята не покупают решение по партнерской цене, а просто фактически ломают его и внедряют клиентам.
Мы решили внимательно ознакомиться с их сайтом и вот что выяснили:
1. На их сайте представлены и другие решения со скидками: Аспро, Кузница, Альфа, Ромза и тд. Повторюсь, что самый большой демпинг цен был, конечно, по нашему интернет-магазину – аж в 4 раза! Вот скрины цен на продукты Марктеплейс, представленные на их сайте, на случай, если эти ребята одумаются и сделают цены правильными. Думаем, Вы найдете здесь и свой продукт, но по заниженной цене:
Скрины сделаны в июле месяце, то есть до августовской акции.
2. В портфолио обнаружили проект, который уже разработан на основе нашего МиссШоп. То есть у них уже существует опыт взлома и внедрения нашего (думаем, не только нашего) типового интернет-магазина стильных вещей.
3. На главной странице висел лейбл «Золотой партнер», но, к сожалению, ссылка на карточку партнера отсутствовала.
Тут хочется сделать ремарку, что продажа решений сторонних разработчиков по цене отличной от официальной, не говоря уже о взломе или пиратстве, – является нарушением партнерского договора. И за это можно строго поплатиться.
Идем дальше. Простое ознакомление с сайтом нас не остановило, и мы решили продвинуться дальше, чтобы вывести этих ребят на чистую воду.План был простой: созвон от имени клиента и просьба о скидке как на Битрикс, так и на МиссШоп. Цель: получить счет по заниженной цене и отправить все эти данные непосредственно в 1С-Битрикс, который уже завершит начатое нами дело. И вот что из этого вышло.
Звоним по номеру, указанному в контактах: +7 (499) 390-19-04. Трубку сначала не берут. Через минут 20 перезвонил некто Алексей, который готов был ответить на все наши вопросы. Мы рассказали, что хотим интернет-магазин одежды и нам понравился МиссШоп, а цены у них самые демократичные. Мы даже ненавязчиво попытались узнать, почему цены у них ниже, но, к сожалению, Алексей ушел от ответа и просто сказал, что лучше вышлет нам на почту КП. Мы согласились.
И вот как выглядело КП от Алексея:
Здравствуйте!
Уважаемый Владислав, в продолжение разговора да действительно можем предложить Вам шаблон:
за 49000 руб, к нему Вам потребуется лицензия 1С-Битрикс Управление сайтом "Малый бизнес" 35900 руб / "Бизнес" 72900 руб, при покупке лицензии у нас рады предлосжить скидку 10% от фиксированной стоимости т е "Малый бизнес" - 32310 руб / "Бизнес" - 65610 руб Это наилучшее из готовых решений на Битрикс по тематике интернет-магазин одежды.
Нам даже не пришлось просить скидку на Битрикс. Они нам сами с удовольствием предоставили 10% скидку. Наверное, это было самое интересное в их КП. Ну и, конечно, потешили наше самолюбие и сказали, что МиссШоп – наилучшее из решений по тематике одежды.
Еще одна ремарка: продажа лицензий Битрикс по цене, отличной от официальной, строго запрещена согласно партнерскому договору. За выявление подобных фактов грозит лишение партнерского статуса. Именно поэтому мы были рады предоставленной скидке на Битрикс в размере 10%.
Далее мы сразу еще раз созвонились с Алексеем и уже уточнили, а в каком виде мы получим продукты: ключи, купоны, диски или как вообще? На что Алексей ответил, что они нам просто сами все установят. Никаких ключей и прочего не будет, но они все сделают в лучшем виде. А это и понятно, ведь по цене в 4 раза ниже МиссШоп они могут установить лишь самостоятельно, предварительно взломав его.
После этого мы сделали небольшую паузу, чтобы не спугнуть ребят. Лишь через пару дней мы запросили у них договор и счет на поставку Бизнеса и . Мы думали, что может быть проще выставить счет на ПО? Думали, что сейчас получим от них быстро договор и дело в шляпе. Но, оказалось, все не так просто.
Договор и счет мы получили, но не на ПО, а фактически на услугу по разработке сайта. То есть мы платили за услугу, а не за продукты. Про Битрикс и было указано вскользь лишь в одном месте. Но ни цен на эти продукты, ни обычной спецификации на продукты предоставлено не было. Да и вообще договор ужасный и явно подготовлен непрофессионалами.
Нас это явно не устроило, и мы запросили более или менее адекватный договор, в котором будет как минимум спецификация на ПО с указанием конкретных цен. Мы уже не говорим о полноценном лицензионном договоре. Как оказалось, получить такой договор от них было проблематично. К решению вопроса подключился сам директор, некто Вадим Бочков, который любезно звонил и в недоумении сам спрашивал, что нам надо. Словно это мы продаем ПО, а не он. В итоге лишь через 3-4 дня договор родился в более или менее приемлемом виде.
В принципе, пакет необходимых документов собран: договор, счет. Теперь смело можно обращаться в Битрикс. Но мы все же для начала решили позвонить в данную компанию и получить от них комментарии по поводу сложившейся ситуации. Смогли дозвониться до Алексея, который был в легком шоке, когда мы заявили ему о нарушении авторских прав. Он пообещал, что директор обязательно нам перезвонит. К сожалению, нам так никто и не перезвонил. Также на наши телефонные звонки больше никто не отвечал. Поэтому мы уже без зазрения совести обратиться в Битрикс. Просто мы думали: а в друг у людей семья, долги, кредиты, а мы их хлеба лишаем. Но увы и ах. А после обращения в Битрикс выяснилось, что данное юр. лицо не является партнером 1С-Битрикс. А это значит, что, либо они приобретают Битрикс от другого юрика, либо аналогично ломают саму платформу 1С-Битрикс, что тоже может быть. Надеемся, что Битрикс найдет рычаги воздействия на данного «партнера».
Реквизиты мошенника:
Общество с ограниченной ответственностью "ТД БИЗНЕС ФОРМАТ"
ИНН 5031050184
КПП 503101001
ОГРН 1025003914374
ОКПО 59366972
Адрес: 142403, Московская обл, р-н Ногинский, г Ногинск, пер. Пожарный 1
Телефоны: +7 (499) 390-19-04, +7 (967) 196-02-71
Сайт: bitrix-webstudio.ru
Надеемся, что очередная наша подобная история о пиратстве станет знаком для всех мошенников, что за это можно поплатиться. К тому же, дорогие взломщики, на подобных вещах много не заработаешь. Плюс ко всему явно возникнут проблемы с масштабируемостью.
Также надеемся, что подобная история станет уроком для всех пользователей платформы 1С-Битрикс. Приобретая явно дешевый продукт, Вы рискуете, в первую очередь, своим проектом и своими же деньгами. Если бы клиент действительно приобрел у этих ребята по такой цене, то получил бы непонятный продукт без возможности обновлений и оказания техподдержки. К тому же, клиент бы даже не предполагал, что ему продают заведомо нелицензионный продукт. И какого было бы его удивление, когда все это вскрылось. Поэтому, дорогие наши клиенты, если Вам предлагают что-то дешевле официальной цены, то лучше предварительно тщательно проверьте продавца, который занижает цену. Также рекомендуем обратиться к непосредственному разработчику решения и уточнить у него ценовую политику по данному решению.
А для нас с Вами, дорогие партнеры и разработчики, это пример того, что подобных мошенников можно выявлять и выводить на чистую воду. Всех, конечно, не выведешь, но пытаться надо. И вообще, обо всех случаях пиратства просим сообщать непосредственно в 1С-Битрикс и Битрикс сообщество, чтобы все были в курсе и знали "своих героев", то есть пиратов, в лицо.
Всем удачных продаж в августе!) Даже мошенникам. Им это особенно необходимо. Других вариантов для заработка у них нет)
После переноса Битрикс24 из облака в коробку перебирали с клиентом разные SMTP для отправки почты. Среди кандидатов первым был Google: настроил Postfix, две недели почта летала "на ура". Позже обнаружилось, что закончился триальный период и GSuite уже полгода как платный в России. У клиента была действующая подписка office365, туда и решили переезжать.
Несколько часов c гуглом и ошибкой "550 5.7.60 SMTP; Client does not have permissions to send as this sender" не дали результатов. Симтоматика следующая: из shell почта ходит, из Битрикса - нет.
Причиной оказались почтовые шаблоны в которых был прописан адрес @bitrix24.ru из облака. Он соотвественно попадал в "mail from: " и сервер smtp.office365.com его справедливо резал. Странный факт, что в google такая почта ходит.
2/ Имеем еще одну защиту нашего апатча от DDoS-атак.
Интересно было бы, если кто-то еще поделился своим опытом использования модуля, в принципе, при наличии прямых рук легко прикручивается к апатчу на bitrix VM.
Либо может еще есть удобные какие-то способы у вас.
[для врезки вправо]
На последок для выявления перегруза слотов апатча, команды через SSH:
У всех разные процессы деплоя. Я вполне допускаю, что кто-то использует git только в IDE для того чтобы пушить на боевой сервер, либо на сервер сборки, откуда например вебхуками код уйдёт на бой. Впрочем даже в последнем случае наверное иногда возникает потребность зайти на бой по ssh и сделать в системе контроля версий НЕЧТО (откатиться, например).
Так вот, мой опрос именно про то, используете ли вы GIT именно на боевом сервере. Ну и если используете, то какие обычно операции выполняете. Если какие-то операции выполняются редко, но регулярно (например, раз в месяц), то интересно было бы узнать в комментариях что это за такие особые сценарии
О комментариях в коде. Часто работаю с чужим кодом и вижу много попыток разработчиков комментировать код. Вещи довольно очевидные, но вижу их постоянно. Буквально только что наткнулся на очередной перл и меня "прорвало", захотелось высказаться. Комментирование кода - крайне необходимо, но чтобы это грамотно делать, нужно хорошо знать свой код и понимать места, которые вызывают трудность понимания. Разработчик, который будет смотреть ваш код - не дурак, и не нужно оставлять комментарии вроде
// Soap-подключение к сервису $this->SOAP_CLIENT = new SoapClient('https://' . $host);
или
catch (Exception $ex) { //ошибка в работе }
Мы все прекрасно знакомы с SoapClient и знаем как работают исключения, не нужно для этого оставлять дополнительные комментарии. Комментарии нужно писать там, где из названия функций, переменных и действий над ними не ясна суть происходящего (именно суть, далее опишу, что имею ввиду). Например:
if ($sales == 0) $sales = 0.1;
Все прекрасно понимают, что тут происходит, но зачем это делается (суть) не ясно вовсе. И такой код нужно снабдить комментарием вроде: в учетной системе не могут быть нулевые значения (такова специфика бизнеса), поэтому запишем любое небольшое значение не больше 1 рубля.
Кроме как в виде комментария данную особенность не отразить никак, но в основном комментировать код (упрощать его понимание) можно просто грамотно называя методы и переменные.
for($i=2;$i<=$n;$i++) $r *= $i;
Этот кусок кода НУЖНО обернуть в функцию, название которого отражает назначение кода.
Уважаемые партнёры Битрикс! Нам часто стали приходить вопросы от вас и ваших коллег: 1)
Есть ли у вас возможность сделать для нас специальную партнерскую ссылку на демо-версию, чтобы клиент не видел ваши контактные данные и онлайн консультант?
2)
Можем ли мы получить NFR лицензию на Ваши решения?
Эти вопросы стали хорошим поводом для статьи, в которой вы получите ответы и узнаете о тонкостях, которые помогут вам не только зарабатывать на продаже наших решений, не опасаясь что клиент уйдёт от вас к нам, но и даже создать собственную аффилиатскую сеть!
По порядку: 1) Мы предусмотрели такую ссылку и сделали так, что любой, кто перейдет по этой ссылке помечается как ваш клиент и не видит наш онлайн-консультант, а еще становится вашим аффилиатом.
Создать ссылку можно следующим образом:
Для BXReady: Интернет-магазин >
Для BXReady: Сайт компании >
Например, наша ссылка: , - поменяйте наш id партнёра на ваш и протестируйте полученную ссылку.
Фишка: Если человек, прошедший по вашей ссылке поделится ей с другими пользователями, или поделится комбинацией настроек в виджете:
То пользователи, получившие ссылку, также не увидят консультант и также будут метиться как ваши клиенты, расширяя аффилиатскую сеть И так далее.
А теперь представьте, кто каждый, кто делится ссылкой или комбинацией настроек, расширяет круг ваших потенциальных клиентов
Еще раз про NFR 2) Условия получения NFR лицензий.
У партнёров Битрикс есть возможность получить NFR лицензии на комплект наших решений (, )
Для предоставления NFR версий, нужно отправить нам запрос на почту:
В запросе обязательно укажите
ID партнера Битрикс
Название компании
Город
ФИО контактного лица, ответственного за работу с продуктом
email контактного лица
телефон контактного лица
Также необходимо сообщить Ваш хэш-ключ, к которому мы привяжем комплект купонов
Также,напоминаем, что для партнёров действуют
Уважаемые партнёры: Пользуйтесь партнёрскими ссылками и не забывайте про NFR лицензии
Ах да! И еще не забывайте про каждое четвертое решение бесплатно.
Написал пакет для composer, который содержит набор классов для работы с выборками из индексов sphinx через ORM D7 в привычном, для битрикс-программиста, виде.
Для начала использования нужно сделать несколько шагов:
Понятное дело, установить пакет. Командой composer require olegpro/bitrix-sphinx
В файле /bitrix/.settings.php в секцию connections добавить новое подключение с параметрами sphinx
Описать ORM-класс сущность нужного индекса
Можно использовать!
После всего этого вам станут доступны выборки из индексов сфинкса вот в таком виде:
Написал статью про настройку докера для локальной php разработки
Что я вообще хочу от докера при разработке. Во первых, мне нужна локальная копия сайта, именно на этой локальной копии я буду смотреть как собственно работает код. Эта локальная копия должна открываться по красивому адресу, например если основной рабочий сайт это example.com, то моя локальная копия должна открываться по адресу my.example.com. Безо всяких портов типа my.example.com:8747. Я часто открываю сразу несколько проектов и все открытые проекты не должны конфликтовать, то есть например у меня открыто два окна phpstorm в одном ведется разработка проекта example.com, во втором ведется разработка test.ru, и для каждого из этих проектов одновременно должны работать два локальных сайта my.example.com и my.test.ru. Во вторых, мне под каждый проект нужны специальные настройки (mbstring, timezone) и расширения php (типа xdebug). В третьих, мне нужны внешние инструменты типа phpmyadmin для работы с БД проекта или node.js для работы с gulp/webpack. И наконец в четвертых, все это должно быстро подниматься для новых разработчиков которые подключаются к проекту.