Кирилл
С нами с 02 мая 2019; Место в рейтинге пользователей: #88Изменяем форму заказа minishop2
Minishop2 количество товаров в корзине
Доброго времени дня!
Необходимо вывести в мини корзине количество товаров (кол-во строк в корзине).
Как вывести на странице разобрался:
Плейсхолдер {$total_count} видел, не подходит. Он выводит общее количество товара. В моем случае товар продается метрами.
Например: кладем в корзину 5 метров одного товара и 3 метра другого. Плейсхолдер
{$total_count} выведет 8, а надо 2 (т.к. в корзине 2 товара)
Решение:
1) Расширил класс корзины:
2) Что бы при добавлении в корзину у нас мини корзина сразу обновлялась дописал колбеки:
Необходимо вывести в мини корзине количество товаров (кол-во строк в корзине).
Как вывести на странице разобрался:
count(($miniShop2->cart->get()));
А как сделать что бы при добавлении нового товара автоматически обновлялось не знаю.Плейсхолдер {$total_count} видел, не подходит. Он выводит общее количество товара. В моем случае товар продается метрами.
Например: кладем в корзину 5 метров одного товара и 3 метра другого. Плейсхолдер
{$total_count} выведет 8, а надо 2 (т.к. в корзине 2 товара)
Решение:
1) Расширил класс корзины:
<?php
if(!class_exists('msCartHandler')) {
require_once dirname(dirname(dirname(__FILE__))) . '/model/minishop2/mscarthandler.class.php';
}
class myCartHandler extends msCartHandler implements msCartInterface{
public function status($data = array())
{
$status = array(
'total_count' => 0,
'total_cost' => 0,
'total_weight' => 0,
'total_num' => 0,
);
foreach ($this->cart as $item) {
if (empty($item['ctx']) || $item['ctx'] == $this->ctx) {
$status['total_count'] += $item['count'];
$status['total_cost'] += $item['price'] * $item['count'];
$status['total_weight'] += $item['weight'] * $item['count'];
$status['total_num']++;
}
}
return array_merge($data, $status);
}
}
— теперь у нас появился новый плейсхолдер — total_num2) Что бы при добавлении в корзину у нас мини корзина сразу обновлялась дописал колбеки:
/* Добавление твоаров в корзине */
miniShop2.Callbacks.Cart.add.response.success = function(response) {
//console.log(response.data['total_num']);
miniShop2.Cart.totalNum = '.ms2_total_num';
$(miniShop2.Cart.totalNum).text(response.data['total_num']);
};
/* Изменение твоаров в корзине */
miniShop2.Callbacks.Cart.change.response.success = function(response) {
miniShop2.Cart.totalNum = '.ms2_total_num';
$(miniShop2.Cart.totalNum).text(response.data['total_num']);
};
3) Добавляем в чанк с мини корзиной плейсхолдер и класс.<span class="ms2_total_num">{$total_num}</span>
П.с. за наводку спасибо пользователю — Алексей 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 очень крутое решение для minishop2 но для нормальной работы с остатками там очень мало функционала.
Проблемы:
Проблемы:
- На странице каталога и товара нет плейсхолдера, с помощью которого можно было бы скрыть кнопку добавления в корзину и вывести свою информацию
- На странице каталога при добавлении товара проверяется на наличии первая модификация, и, если она отсутствует, то выскакивает оповещение о недоступности товара
- На миникарточке указана неправильная цена, т.к. выводится цена продукта, а не цена модификации
Amp для modx
Наткнулся на плагин для revo AMP модх.
ссылка на github репозиторий
Кто реализовывал AMP на modx? Поделитесь любой информацией.
ссылка на github репозиторий
Кто реализовывал AMP на modx? Поделитесь любой информацией.
mFilter2 type slider for touch
Здравствуйте! В mFilter2 нет возможности пальцем на touch устройствах(мобилки, планшеты...) передвигать слайдер, например «Цены». Яркий пример этому можно посмотреть на minishop2.com, а вот пример где все норм. 3d-m.ru/3d-printery-professionalnye/
Есть возможность как это поправить, кто сталкивался?
Есть возможность как это поправить, кто сталкивался?
Вывод minishop2-combo-options в карточке товара
Здравствуйте!
Столкнулся со следующей проблемой.
Добавляю новые доп. поля с помощью системы плагинов. Нормално выводятся в карточку товара все, кроме тех, которые имеют тип minishop2-combo-options
В месте вставки плесхолдера просто пустота, хотя запись вбазе имеется.
msproductdata.js
msproductdata.map.inc.php
Столкнулся со следующей проблемой.
Добавляю новые доп. поля с помощью системы плагинов. Нормално выводятся в карточку товара все, кроме тех, которые имеют тип minishop2-combo-options
В месте вставки плесхолдера просто пустота, хотя запись вбазе имеется.
msproductdata.js
naznachenie:{
xtype: 'minishop2-combo-options',
description:'<b>[[+naznachenie]]</b>'+_('ms2_product_naznachenie_help')
},
naznachenie:{
width: 60,
sortable: false,
editor: {
xtype: 'minishop2-combo-options',
name: 'naznachenie'
}
},
msproductdata.map.inc.php
'naznachenie' => array(
'dbtype' => 'text'
,'phptype' => 'json'
,'null' => true
,'default' => NULL
),
'naznachenie' => array (
'alias' => 'naznachenie'
,'primary' => false
,'unique' => false
,'type' => 'BTREE'
,'columns' => array (
'action' => array (
'length' => ''
,'collation' => 'A'
,'null' => false
)
)
),
Свой фильтр в mFilter2
Добрый день. Расскажите, пожалуйста, с какой целью используются методы getMyNewValues(array $fields, array $ids), buildMyNewFilter(array $values) и filterMyNew(array $requested, array $values, array $ids) при кастомизации mFilter2. Расковырял компонент, но так и не понял, что должен возвращать каждый из них. Хотя с последним ситуация более менее понятна. Странно, что в модели и сниппете не удается сделать var_dump. Очевидно, данные кешируются. Разъясните, как реализовать фильтр по произвольной таблице.
[msTelegram] Уведомления о заказе в telegram
Небольшой плагин на уведомление о новом заказе в телеграм, отличная замена сервисам смс рассылки.
Сделано на основе гайда от Михаила.
Как получить токен, узнать айди чата и тд так же отлично расписано в гайде.
Плагин вешается на событие msOnCreateOrder.
Сделано на основе гайда от Михаила.
Как получить токен, узнать айди чата и тд так же отлично расписано в гайде.
Плагин вешается на событие msOnCreateOrder.
Поиск заказа по номеру телефона
Здравствуйте!
В админке minishop2 есть достаточно удобное поле поиска заказа по номеру/email/комментарию.
Хочу его расширить, чтобы можно было искать по другим полям, например по номеру телефона, который был указан при заказе.
Как я понял это делает метод prepareQueryBeforeCount (getlist.class.php), но добавление условия поиска не помогло ('OR:phone' => $query при условии numeric строка 49 github.com/bezumkin/miniShop2/blob/master/core/components/minishop2/processors/mgr/orders/getlist.class.php)
Подскажите пожалуйста что делаю не так? Тот ли файл? Возможно есть другие способы
Спасибо!
В админке minishop2 есть достаточно удобное поле поиска заказа по номеру/email/комментарию.
Хочу его расширить, чтобы можно было искать по другим полям, например по номеру телефона, который был указан при заказе.
Как я понял это делает метод prepareQueryBeforeCount (getlist.class.php), но добавление условия поиска не помогло ('OR:phone' => $query при условии numeric строка 49 github.com/bezumkin/miniShop2/blob/master/core/components/minishop2/processors/mgr/orders/getlist.class.php)
Подскажите пожалуйста что делаю не так? Тот ли файл? Возможно есть другие способы
Спасибо!