Pavel Zarubin
С нами с 07 сентября 2016; Место в рейтинге пользователей: #17[miniShop2] - Перенос изображений в Selectel
В данном топике решается проблема переноса изображений с сайта на Selectel Cloud Storage.
Ситуация с которой пришлось столкнуться — магазин наполнялся и все было хорошо, в какой то момент решили перейти на облачное хранилище. По хорошему нужно было создать новый медиасорс и его привязаться к Selectel, а затем задать его по дефолту, но было сделано иначе. Просто MS2 Images настроили на Selectel и дальше приняли спокойно наполнять.
И вроде бы все нормально, но… что же со старыми файлами что лежат на хостинге? А да, с ними проблемка…
Под катом скрипт для переноса вот таких изображений в облако.
Ситуация с которой пришлось столкнуться — магазин наполнялся и все было хорошо, в какой то момент решили перейти на облачное хранилище. По хорошему нужно было создать новый медиасорс и его привязаться к Selectel, а затем задать его по дефолту, но было сделано иначе. Просто MS2 Images настроили на Selectel и дальше приняли спокойно наполнять.
И вроде бы все нормально, но… что же со старыми файлами что лежат на хостинге? А да, с ними проблемка…
Под катом скрипт для переноса вот таких изображений в облако.
Делимся приемами оптимизации под Google PageSpeed
Поделитесь опытом, кто как оптимизирует сайт? Кто набирает 85 баллов на продуктовой странице или на странице категории товаров, то есть на тех, где minishop2 свои ресурсы подключает?
[ExtJs] Связанные комбобоксы
mFilter2 и оптимизация скорости на 7k товарах
Всем, кто хоть раз пытался завести mFilter2 на большом кол-ве товаров и хотя-бы 10 опциях в фильтре, известно, что тормозов не избежать. Вот и мне попался на днях сайт, в котором, казалось бы, всего-то 7000 товаров и 10 опций на странице каталога. Однако сниппет фильтра отрабатывал за 3-4 секунды. Переписал на Fenom — стал отрабатывать за 2-3 секунды.
Не годится! Тем более, что у заказчика было требование: «Чтобы сайтом было комфортно пользоваться». Что-ж, взял задачу — надо решать!
Дебаг показал, что проблема в методе mse2FiltersHandler::getMsOptionValues, а именно в запросе (7k товаров!), который выглядит как-то так:
SELECT `product_id`, `key`, `value` FROM `modx_ms2_product_options` AS `msProductOption`
WHERE (`msProductOption`.`product_id` IN (3394,3408,еще 7 тысяч ID)
AND `msProductOption`.`key` IN ('atr_n1','atr_n6','atr_n5','atr_n12','atr_n43','atr_n46','atr_n29','atr_n11','atr_n44','atr_n2'))
msOptionsPrice2 и составной товар
Возникла необходимость при помощи msOptionsPrice2 реализовать составной товар. Оказалось, что компонент не умеет прибавлять к начальной цене товара несколько цен из модификаций одной опции.
Например, есть опция Наполнители, у нее около 20 значений. На фронте, при выборе каждого из значений, цена товара должна увеличиваться на N рублей. Проблема заключается в том, что имена тегам чекбоксов мы даем в виде массива:
<input type="checkbox" name="cb[]">
Компонент, в свою очередь, с таким работать не умеет. Предлагаю решение в четыре простых шага!Мультидоменность контекстами
В сообществе часто проскакивают вопросы про мультидоменность на одной копии MODX. А у меня, как раз, сайты демо версий компонентов реализованы таким образом. Думаю, информация будет полезной!
как переопределить функцию компонента в ExtJs?
Приветствую, дорогое сообщество!
Сегодня в очередной раз, понадобилось добавить свои поля в заказ miniShop2, в сообществе уже есть несколько дельных статей, как это сделать, но у всех вариантов есть недостатки:
Это либо исходники править или поля хранятся в json формате и доступны только на чтение.
А хочется полноценных полей, которые можно и редактировать из админки и через api и что при этом исходники не трогать.
Вот в общем у меня какая стратегия выработалась для решения этой задачи:
1)В системную настройку ms2_order_address_fields добавляем наше будущее поле
2)Добавляем в словари miniShop2 название нашего поля на нужном языке, что бы отображать его в админке и на фронте.
3)Далее нужно расширить модель таблицы ms2_order_addresses, причём сделать это не в исходниках, а на лету через плагин, подробно об этом писал наш Гуру Василий — modx.pro/solutions/7037-expanding-any-table-modx/
Сегодня в очередной раз, понадобилось добавить свои поля в заказ miniShop2, в сообществе уже есть несколько дельных статей, как это сделать, но у всех вариантов есть недостатки:
Это либо исходники править или поля хранятся в json формате и доступны только на чтение.
А хочется полноценных полей, которые можно и редактировать из админки и через api и что при этом исходники не трогать.
Вот в общем у меня какая стратегия выработалась для решения этой задачи:
1)В системную настройку ms2_order_address_fields добавляем наше будущее поле
2)Добавляем в словари miniShop2 название нашего поля на нужном языке, что бы отображать его в админке и на фронте.
3)Далее нужно расширить модель таблицы ms2_order_addresses, причём сделать это не в исходниках, а на лету через плагин, подробно об этом писал наш Гуру Василий — modx.pro/solutions/7037-expanding-any-table-modx/
[ExtJS] Расширяем нативную гриду юзеров
После статьи о расширении профиля юзера правильными дополнительными полями мне посыпались вопросы о расширении нативной таблицы со списком юзеров. Мы знаем, что практически любой стандартный компонент системы, работающий на ExtJS, можно расширить не затрагивая исходника. Главное
Сразу опишем задачу, которую реализуем в рамках статьи:
- Убрать слева каждой записи ненужный чекбокс,
- Добавить столбцы: Фото, Дата рождения, Страна, Город,
- Добавить возможность отфильтровать пользователей по стране,
- Заменить некрасивое поле поиска на симпатичное и компактное,
- Подсветить заблокированных красным цветом.