Константин Ильин

Константин Ильин

С нами с 10 февраля 2014; Место в рейтинге пользователей: #151
Константин Ильин
15 марта 2021, 10:27
0
Спасибо! Такое я уже делал, правда очень давно, тоже про него вспомнил, но подумал, что получше решение есть :)
Думаю так и сделаю
Константин Ильин
02 февраля 2021, 23:05
0
Пожелание о будущей доработке называется issue
точно, затупил.

Его название после добавления в корзину к товару уже никак не привязано и там может быть написано все что угодно.
В сессии хранится тока id опции цена, но названия нет. Получается он дергает товар при выводе корзины.
Или я чего то не знаю.
Константин Ильин
02 февраля 2021, 19:21
+1
@Иван Бочкарев, можете создать(PR) на будущее, чтобы в корзине хранилось название товара, чтобы его можно было видоизменять как угодно и в заказе после оно использовалось.

Пример проблемы:
Товар «Машина 2115», человек добавляет в корзину вместе с опциями, среди них например Цвет «Красный».
В корзине/заказе название товара и опции отдельно отображаются, далее в интернет эквайринг идет только название «Машина 2115», но цвет надо тоже отобразить в чеке, допустим другие опции не надо, но именно цвет надо. Т.е. должно было бы отображаться «Машина 2115, цвет Красный» х 1

Уже для программистов не составит труда, написать условия для изменения названия на основе опций, в плагине на событии msOnAddToCart

Сейчас я сделал после создания заказа приписать опции(пока условия не требуются). Все работает, но это влечет за собой переработку шаблонов корзины, письма.
case 'msOnChangeOrderStatus':
        if ($status == 1) { 
            $orderArray = $order->toArray();
            if(strtotime($orderArray['createdon'])+15 > time() ){
            	$products = $order->getMany('Products');
            	foreach ($products as $product) {
            	    $p = $product->toArray();
            		$newName = $p['name'];
            		if(!empty($p['options'])){
            		    foreach($p['options'] as $option => $value){
            		        $newName .= ', '.$value;
            		    }
            		}
            		$product->set('name', $newName);
            		$product->save();
            	}
            }
        }
    break;
Если есть такая возможность по времени, было бы круто иметь такую фичу, ну если поддержите данную затею.
Константин Ильин
02 февраля 2021, 00:02
0
Так попробуйте. Надо исходить из последних изменений которые вы делали. Например обновили минишоп и что-то не работает, повысили php — отвалилось все. У вас работало и вдруг долго стало и ошибки пошли, причинно-следственную связь надо построить.
Первое, чтобы я попробовал это версия пхп.
так же версии модх и минишопа написать можно.
Константин Ильин
01 февраля 2021, 23:01
0
Есть отличный скрипт от хорошего человека :)

ilyaut.ru/cheats/to-rebuild-all-previews-of-products/
Константин Ильин
19 января 2021, 12:21
1
+2
Недавно делал для товаров Минишопа.
$gallery = array(
    'id' => $id,
    'file' => $URL_FULL // https://site.ru/img/123.jpg
);
$upload = $modx->runProcessor('gallery/upload', $gallery, array(
    'processors_path' => MODX_CORE_PATH.'components/minishop2/processors/mgr/'
));

if ($upload->isError()) {
    //print_r($upload->getResponse());
}
$modx->error->reset();

для ms2gallery
// Почему то источник у меня слетал, так что этот код возможно не нужен.
if ($resource = $modx->getObject('modResource', $id)) {
    $properties = $resource->getProperties('ms2gallery');
    $properties['media_source'] = 3;
    $resource->setProperties($properties, 'ms2gallery');
    $resource->save();
}

$gallery = array(
    'id' => $id,
    'file' => $URL_FULL // https://site.ru/img/123.jpg
);

$upload = $modx->runProcessor('gallery/upload', $gallery, array(
    'processors_path' => MODX_CORE_PATH.'components/ms2gallery/processors/mgr/'
));
Константин Ильин
19 января 2021, 12:10
0
Приветствую!
Подскажете пожалуйста с Mailru
В системных настройках создал по типу:
{«keys»:{«id»:«12345»,«secret»:«12345»}}

Приложение создал:
prnt.sc/x76twq

Но выходит ошибка, хотя client_id передается
prnt.sc/x76xcv

Может надо еще scope указывать в настройках? Что еще надо сделать?) Может кто-то настраивал недавно :)
Константин Ильин
13 января 2021, 20:10
0
@Николай Савин, подскажите пожалуйста когда будут обновления инструкций? ну и по мере надобности сам компонент. например как я понял майл больше такого не позволяет делать.
Проект закончил, а тут вроде самое простое осталось, но не тут то было
Константин Ильин
29 декабря 2020, 10:50
0
На счет вывода названия, сидел думал вспомнил, что везде тянется pagetitel и тоже пришел к выводу что придется шаманить самому. Выводить это одно, но вот еще в заказ должно сохранятся, и тут я уже вроде решение нашел, на событие создания заказа, там писать свой код который переделывает name

В консоли попробовал этот скрипт, думаю вот оно решение. Как сделаю, выложу, может кому надо будет :)
if ($order = $modx->getObject('msOrder', 6)) {
	$products = $order->getMany('Products');
	foreach ($products as $product) {
	    $p = $product->toArray();
		$arr[] =  $p;
		if($p['product_id'] == 19){
		    $product->set('name', 'TEST');
		    $product->save();
		}	
	}
}
Константин Ильин
15 декабря 2020, 01:59
0
не решил. Так и появляются эти «некрасивые ошибки». Прям так сказать бесят, вроде делаешь, стараешься все делать по уму и тут на тебе ошибки…
Константин Ильин
10 декабря 2020, 22:50
0
Поясняю

var slider_demo2 = $('.slider_demo2');
var slider_demo1 = $('.slider_demo1');

эти две строчки как бы принимают объекты, но т.к. у вас из-за ajaxsnippet нет объектов $('.slider_demo2'); и $('.slider_demo1'); их физечески не существует при загрузке страницы, то переменные пусты или не объявлены. Соответственно, присвоение эти переменных должно происходить в as_complete, т.е. когда ajaxsnippet загрузит данные и в странице появится slider_demo2.

Более того ваше первое условие
if ($('.slider_demo2').length > 0) {

Говорит о том что если такого объекта slider_demo2 не существует, то не выполнять этот код.

Надеюсь тут все ясно станет.
Константин Ильин
10 декабря 2020, 19:01
0
переменная slider_demo2 должна объявляется внутри этого кода, иначе slider_demo2 наверняка пустая.
Константин Ильин
10 декабря 2020, 16:53
+3
Уххх, круто! Видно, что минишоп пошел на развитие!
Давно заметил, но не писал

При редактировании, а так же при создании опции в настройках, когда нажимаешь раскрыть на весь экран, заполняется только на определенную высоту
prnt.sc/vzsvua
Константин Ильин
24 ноября 2020, 08:32
0
Хочу уточнить
Нужно в настройках системы создать системную настройку «use_flock» со значением «xPDO :: LOG_LEVEL_WARN»?

prnt.sc/vov2i7

Или в настройках контекста?
Константин Ильин
29 октября 2020, 19:06
0
Попробуй сначала в переменную загнать.
{foreach $data as $item}
    {set $path = '@FILE chunk/' ~ $item['MIGX_formname'] ~ '.tpl'}
    {$_modx->getChunk($path, $item)}
{/foreach}

Ну и проверь что у тебя там в данных(в переменной)
{foreach $data as $item}
    {$item | print}
{/foreach}
Константин Ильин
17 октября 2020, 12:35
0
Мне больше процессоры по душе :) Так создаю:
$response = $modx->runProcessor('resource/create', [
'class_key' => 'msProduct',
'pagetitle' => $pagetitle,
'parent' => $parentID,
'content' => $description,
'published' => 0,

//Данные
'price' => $price,
'old_price' => 0,
//'favorite' => 0,
//'popular' => 0,
'vendor' => $idVendor,

//стандартные опции товара
'color' => ['Синий', 'Красный'],
'size' => ['S', 'M'],
'tags' => ['Тег1', 'Тег2'],

//свои опции созданные в настройках
'options-postavshik' => 'Москва',
'options-postavshik-article' => $articleNum,

//TV - 10 это id TV
'tv10' => 'Значение'
]);

$id = $response->response['object']['id'];
А в целом опции товара неудобны тем, что они в отдельно вкладке, люди путаются. Аж две вкладки(Свойства и Опции) с характеристиками товара. Опции хороши тем что есть выбор в какой категории показывать, но ощущение недоработанности. Ну а так MS2 давно надо переписывать под современные реалии магазинов.

Спасибо за компонент, наверняка буду пользоваться!
Константин Ильин
16 октября 2020, 22:56
0
Круто! Получается он в полной мере может заменить «Опции товара» входящие по умолчанию в ms2?
Константин Ильин
29 мая 2020, 12:18
0
Может кому пригодится.

301 редирект всех старых страниц с .html
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^(.+)$ $1.html [L,QSA]

#301 редирект с example.com/page.html на example.com/page
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /.*\.html\ HTTP/
RewriteRule ^(.*)\.html$ /$1 [R=301,L]
Константин Ильин
29 мая 2020, 12:07
0
А если было допустим /about.html, убрал в настройках html открывается нормально, но страницы проиндексированы как .html

Как лучше сделать 301 редирект всех страниц c .html на без него(и без слеша в конце) для modx?

/about.html --> /about
Константин Ильин
26 мая 2020, 17:24
0
А нет, все нормально, сам закосячил.

Спасибо еще раз вам, Алексей и Артем!