Alexey
С нами с 02 августа 2015; Место в рейтинге пользователей: #108Обнуляющие смайлики (или почему minishop2 отправляет заказы без товаров)
Всем привет.
Буквально вчера, словил неприятную багу.
(P.S. вполне возможно что многие знают об этой баге. Но ради интереса решил воспроизвести данную багу на других сайтах — в 90% случаев ошибка воспроизводится).
Имеется сайт на MODX Revolution 2.7.3 в связке с miniShop2 2.5.0.
Бага заключалась в том, что пришёл «пустой» заказ. Т.е. все реквизиты клиента в письме и заказе есть, а вот товаров в этом заказе нет.
Долго и упорно не мог понять в чём же проблема. Благо есть вебвизор и он таки помог воспроизвести ошибку.
Дело оказалось в смайликах. Которые были вставлены в комментарий к заказу.
Буквально вчера, словил неприятную багу.
(P.S. вполне возможно что многие знают об этой баге. Но ради интереса решил воспроизвести данную багу на других сайтах — в 90% случаев ошибка воспроизводится).
Имеется сайт на MODX Revolution 2.7.3 в связке с miniShop2 2.5.0.
Бага заключалась в том, что пришёл «пустой» заказ. Т.е. все реквизиты клиента в письме и заказе есть, а вот товаров в этом заказе нет.
Долго и упорно не мог понять в чём же проблема. Благо есть вебвизор и он таки помог воспроизвести ошибку.
Дело оказалось в смайликах. Которые были вставлены в комментарий к заказу.
Вывод фоток с Instagram по тегу или юзеру без токена
Всем привет!
Если у вас есть задача вывести фотографии по нику или тегу то можете использовать данное решение:
Если у вас есть задача вывести фотографии по нику или тегу то можете использовать данное решение:
Проблемы с MIGX после переноса на другой хостинг. Решено
Приветствую!
Сделал сайт перенес на хостинг заказчика. Вроде бы все было нормально. Прошло чуть больше месяца. Зашел на сайт добавить информацию и обнаружил проблему. При редактировании и добавлении строки TV типа MIXG страница и модальное окно съезжают вверх (за пределы окна браузера). Если уменьшить зум страницы, то видно что в модальном окне данные грузятся бесконечно.
Сделал сайт перенес на хостинг заказчика. Вроде бы все было нормально. Прошло чуть больше месяца. Зашел на сайт добавить информацию и обнаружил проблему. При редактировании и добавлении строки TV типа MIXG страница и модальное окно съезжают вверх (за пределы окна браузера). Если уменьшить зум страницы, то видно что в модальном окне данные грузятся бесконечно.
Теория выгрузок из 1С в MODX (часть 1 из 2)
И снова привет!
Выгрузка товаров на сайт — это самый, самый частый кейс моей мини-студии. Для реализации мелких-средних интернет-магазинов используем классическую и сверхпопулярную связку MODX+miniShop2, для крупых — нет, но я как-нибудь обязательно расскажу почему.
Выгрузка товаров на сайт — это самый, самый частый кейс моей мини-студии. Для реализации мелких-средних интернет-магазинов используем классическую и сверхпопулярную связку MODX+miniShop2, для крупых — нет, но я как-нибудь обязательно расскажу почему.
Пошаговая работа скрипта в Console
Здравствуйте, необходимо выполнить данный скрипт
$q = $modx->newQuery('msProduct');
$q->where(array('parent' => '9'));
$col = $modx->getCollection('msProduct', $q);
foreach ($col as $item){
$oe_number = $item->get('oe_number');
$article = $item->get('article');
$old_price = $item->get('old_price');
$price = $old_price * 1.2;
$item->set('price', $price);
if (empty($oe_number)) {
$item->set('oe_number', $article);
}
$item->save();
}
Но так как товаров порядка 30 000, то нужно разбить на пошаговое выполнение, нашел данную шпаргалку — ilyaut.ru/cheats/step-by-step-the-script-in-console/, но мозгов доделать не хватает, вот что получилось<?php
// Сколько ресурсов обрабатывать за раз
$step = 1;
// Если процесс уже остановлен, сбрасываем OFFSET
if (!isset($_SESSION['Console']['completed'])) {
$_SESSION['console_offset'] = 0;
}
$offset = isset($_SESSION['console_offset']) && $_SESSION['console_offset'] ? $_SESSION['console_offset'] : 0;
// Формируем запрос
$q = $modx->newQuery('msProduct');
$q->where(array('parent' => '9'));
$total = $modx->getCount('msProduct', $q);
// Пропускаем все уже обработанные объекты
$q->limit($step, $offset);
$resources = $modx->getCollection('msProduct', $q);
// Обработка
foreach ($resources as $resource){
$oe_number = $resource->get('oe_number');
$article = $resource->get('article');
$old_price = $resource->get('old_price');
$price = $old_price * 1.2;
$resource->set('price', $price);
if (empty($oe_number)) {
$resource->set('oe_number', $article);
}
$resource->save();
print "<p>Processing resource <b>".$resource->get('pagetitle')."</b></p>";
}
// Меняем offset
$_SESSION['console_offset'] = $offset + $step;
if ($_SESSION['console_offset'] >= $total) {
$sucsess = 100;
$_SESSION['Console']['completed'] = true;
unset($_SESSION['console_offset']);
} else {
$sucsess = round($_SESSION['console_offset'] / $total, 2) * 100;
$_SESSION['Console']['completed'] = false;
}
for ($i=0; $i<=100; $i++) {
if ($i <= $sucsess) {
print '=';
} else {
print '_';
}
}
$current = isset($_SESSION['console_offset']) ?
$_SESSION['console_offset'] :
($sucsess == 100 ? $total : 0);
print "\n";
print $sucsess.'% ('.$current.')'."\n\n";
Подскажите, как правильно написать пошаговое выполнение скрипта modExtra. Новые "плюшки" к чаю
Шпаргалка на все случаи жизни
Полезные ссылки, которые Вам пригодятся в некоторых ситуациях.
Как в админке с помощью ExtJS отследить изменение значения TV и поменять его сразу или перезагрузкой стараницы?
Есть плагин изменения значения tv при определенных условиях.
if ($modx->event->name == 'OnDocFormSave' && $mode != 'new') {
//куча условий
//.......
// меняем значение TV
$resource->setTVValue('my_tv', 'Новое значение');
//...
}
//перезагружает страницу в админке при каждом сохранении ресурса
//НЕ пойму как сделать, чтобы перезагружалось только при изменении значения TV
if ($modx->event->name == 'OnDocFormPrerender' && $mode != 'new') {
$modx->controller->addHTML('
<script type="text/javascript">
Ext.ComponentMgr.onAvailable("modx-panel-resource", function (e) {
var res = Ext.getCmp("modx-panel-resource");
res.on("beforeSubmit", function(){
//Перезагрузка страницу после сохранения
location.reload();
});
});
</script>');
}
Данная конструкция перезагружает страницу в админке при каждом сохранении ресурса, НЕ пойму как сделать, чтобы перезагружалась только при изменении значения TV… Не могу передать значение переменной из кода на событие OnDocFormSave в код на событие OnDocFormPrerender, представляется, что это невозможно… Модифицируем HTML на лету
Привет друзья. Хочу поделиться методикой, которую иногда использую в тех случаях, когда мне нужно подменить или каким то образом модифицировать на лету готовый HTML. Причем сделать это на уровне сервера, а не через JS.
Curl клиент modx
Встроенный curl клиент для отправки запросов на сторонние сервисы (RESTful и другие).
Так как все чаще используются сторонние сервисы в повседневной разработке сайтов, для этих целей в modx есть встроенный клиент, с помощью которого можно отправлять запросы:
Так как все чаще используются сторонние сервисы в повседневной разработке сайтов, для этих целей в modx есть встроенный клиент, с помощью которого можно отправлять запросы:
/* @var modRest $client */
$client = $modx->getService('rest', 'rest.modRest');
$response = $client->get('GET запрос');
или
$response = $client->post('POST запрос');
// Обработка полученных данных в json или xml формате и преобразование их в массив
$array = $response->process();
В заметке перечислены способы работы с клиентом