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

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

Был в сети 22 октября 2025, 18:41
Заказы принимаю
Да бы не заниматься двойной работой по заполнению словаря, сделал такой выход:
[[!GetNameFilter]]
$query = $modx->query("SELECT * FROM modx_tt_ms2_options WHERE `key`= '".$filter."'");
$item = $query->fetch(PDO::FETCH_ASSOC);
return $item['caption'];
в чанке tpl.mFilter2.filter.outer заменил вот так:
<h4>[[+table:is=`msoption`:then=`[[!GetNameFilter? &filter=`[[+filter]]`]]`:else=`[[%mse2_filter_[[+table]]_[[+filter]]]]`]] </h4>
Эх, снова столкнулся с альфа версией.

minishop2-2.3.0-alpha3

при сохранение объекта msProduct, Характеристики у товара пропадают.
Код довольно простой
$item = $modx->getObject('msProduct',$res['id']);
$item->set('price',$price);
$item->set('published ',1);
$item->save();
при этом цена сохраняется нормально

да это версия не стабильна и тому подобное, но что сделаешь сейчас, товаров больше 1000…

Подскажите как выйти из данной ситуации?
Вопрос(не претензия):
А это так и должно быть, что при каждой отправке формы в form добавляются безымянные input[hidden]
т.е. 10 раз нажал на отправить, 10 создалось.

на 2-х сайтах смотрел, тоже так же.
Разобрался

т.к. [[+price]] предоставляется в виде «22 380,79», а в &where надо передавать либо int либо float

написал вот такой сниппет:
[[!getPrice? &price=`[[+price]]`]]

$price = str_replace(",",".", $price);
$price = str_replace(" ","", $price);
if(!empty($addsum)){
    $price += $addsum;
}
return $price;

теперь так:
&where=`{"Data.price:>=": [[!getPrice? &price=`[[+price]]`]]," AND:Data.price:<=": [[!getPrice? &price=`[[+price]]` &addsum=`1000`]]}`
здравствуйте!

подскажите пожалуйста
[[!pdoPage?
    &element=`msProducts`
    &tpl=`product_item`
    &toPlaceholder=`result_another`
	&parents=`[[*parent]]`
	&limit=`4`
	&where=`{"Data.price:>=": [[+price]],"Data.price:<=": [[+price:add=`1000`]]}`
	&showLog=`1`
]]
[[+result_another:!empty=`<h2>Похожие товары</h2>
<div class="another_products">[[+result_another]]</div>`]]

where не отрабатывает
Если явно указать цену, то работает
&where=`{"Data.price:>=": 36000,"Data.price:<=": 37000}`
лог

0.0000429: xPDO query object created
0.0002530: leftJoined msProductData as Data
0.0002301: leftJoined msVendor as Vendor
0.0000038: Grouped by msProduct.id
0.0000691: Added selection of msProduct: SQL_CALC_FOUND_ROWS `id`, `type`, `contentType`, `pagetitle`, `longtitle`, `description`, `alias`, `link_attributes`, `published`, `pub_date`, `unpub_date`, `parent`, `isfolder`, `introtext`, `richtext`, `template`, `menuindex`, `searchable`, `cacheable`, `createdby`, `createdon`, `editedby`, `editedon`, `deleted`, `deletedon`, `deletedby`, `publishedon`, `publishedby`, `menutitle`, `donthit`, `privateweb`, `privatemgr`, `content_dispo`, `hidemenu`, `class_key`, `context_key`, `content_type`, `uri`, `uri_override`, `hide_children_in_tree`, `show_in_tree`, `properties`
0.0000288: Added selection of msProductData: `sku_id`, `article`, `sku_name`, `default`, `price`, `old_price`, `weight`, `image`, `thumb`, `vendor`, `made_in`, `new`, `popular`, `favorite`, `tags`, `color`, `size`, `source`
0.0000269: Added selection of msVendor: `name` AS `vendor.name`, `resource` AS `vendor.resource`, `country` AS `vendor.country`, `logo` AS `vendor.logo`, `address` AS `vendor.address`, `phone` AS `vendor.phone`, `fax` AS `vendor.fax`, `email` AS `vendor.email`, `description` AS `vendor.description`, `properties` AS `vendor.properties`
0.0012748: Processed additional conditions
0.0016050: Added where condition: class_key=msProduct, msProduct.parent:IN(25,82,83,94,162,166,167,174,84,95,164,168,175,173,85,96,165,176,86,97,177,87,98,178,88,99,179,89,100,90,101,91,92,105,106,107,108,117,122,123,127,128,129,130,131,135,139,141,144,145,150,151,152,153,154,155,157,158), msProduct.published=1, msProduct.deleted=0
0.0000720: Sorted by msProduct.id, ASC
0.0000038: Limited to 4, offset 0
0.0003731: SQL prepared "SELECT SQL_CALC_FOUND_ROWS `msProduct`.`id`, `msProduct`.`type`, `msProduct`.`contentType`, `msProduct`.`pagetitle`, `msProduct`.`longtitle`, `msProduct`.`description`, `msProduct`.`alias`, `msProduct`.`link_attributes`, `msProduct`.`published`, `msProduct`.`pub_date`, `msProduct`.`unpub_date`, `msProduct`.`parent`, `msProduct`.`isfolder`, `msProduct`.`introtext`, `msProduct`.`richtext`, `msProduct`.`template`, `msProduct`.`menuindex`, `msProduct`.`searchable`, `msProduct`.`cacheable`, `msProduct`.`createdby`, `msProduct`.`createdon`, `msProduct`.`editedby`, `msProduct`.`editedon`, `msProduct`.`deleted`, `msProduct`.`deletedon`, `msProduct`.`deletedby`, `msProduct`.`publishedon`, `msProduct`.`publishedby`, `msProduct`.`menutitle`, `msProduct`.`donthit`, `msProduct`.`privateweb`, `msProduct`.`privatemgr`, `msProduct`.`content_dispo`, `msProduct`.`hidemenu`, `msProduct`.`class_key`, `msProduct`.`context_key`, `msProduct`.`content_type`, `msProduct`.`uri`, `msProduct`.`uri_override`, `msProduct`.`hide_children_in_tree`, `msProduct`.`show_in_tree`, `msProduct`.`properties`, `Data`.`sku_id`, `Data`.`article`, `Data`.`sku_name`, `Data`.`default`, `Data`.`price`, `Data`.`old_price`, `Data`.`weight`, `Data`.`image`, `Data`.`thumb`, `Data`.`vendor`, `Data`.`made_in`, `Data`.`new`, `Data`.`popular`, `Data`.`favorite`, `Data`.`tags`, `Data`.`color`, `Data`.`size`, `Data`.`source`, `Vendor`.`name` AS `vendor.name`, `Vendor`.`resource` AS `vendor.resource`, `Vendor`.`country` AS `vendor.country`, `Vendor`.`logo` AS `vendor.logo`, `Vendor`.`address` AS `vendor.address`, `Vendor`.`phone` AS `vendor.phone`, `Vendor`.`fax` AS `vendor.fax`, `Vendor`.`email` AS `vendor.email`, `Vendor`.`description` AS `vendor.description`, `Vendor`.`properties` AS `vendor.properties` FROM `modx_tt_site_content` AS `msProduct` LEFT JOIN `modx_tt_ms2_products` `Data` ON `msProduct`.`id`=`Data`.`id` LEFT JOIN `modx_tt_ms2_vendors` `Vendor` ON `Data`.`vendor`=`Vendor`.`id` WHERE  ( `msProduct`.`class_key` = 'msProduct' AND `msProduct`.`parent` IN (25,82,83,94,162,166,167,174,84,95,164,168,175,173,85,96,165,176,86,97,177,87,98,178,88,99,179,89,100,90,101,91,92,105,106,107,108,117,122,123,127,128,129,130,131,135,139,141,144,145,150,151,152,153,154,155,157,158) AND `msProduct`.`published` = 1 AND `msProduct`.`deleted` = 0 )  GROUP BY msProduct.id ORDER BY msProduct.id ASC LIMIT 4 "
0.0026560: SQL executed
0.0000780: Total rows: 57
0.0000670: Rows fetched
0.0001771: Returning raw data
0.0009229: Checked the active modifiers
0.0025780: Loaded chunk "product_item"
0.0047231: Loaded options for products
0.0000079: Returning processed chunks
0.1194100: Total time
22 544 384: Memory usage
Новость отличная!

Но вот на счет совместимости, неожиданно всплыло в голове.
Сайт сделан на 2.3.0-alpha3, куча товаров, было бы здорово совместимость для версий сохранилась, хотяб через какие нибудь действия…

Васе желаю отличного настроя!
Работает для категории, Спасибо Максим!
Но если зайти на общую категорию(мультикатегорию), то не отображает характеристики подкатегорий.
Решил не допиливать)

через конкатенацию все таки сделал:
foreach ($options as $option) {
    $output .= ',msoption|'.$option['key'];
}
return $output;

для mFilter2 добавил так:
&filters=`
	ms|price:number
	,parent:categories
	,ms|vendor:vendors
	[[!OptionsCat]]
`
Вася, круто!!!
joxi.ru/52aNMjbF80e1A0

,msoption|obem_resivera
,msoption|proizvoditelnost
фильтрует нормально по позициям.
Названия свойства както самому прописать надо будет?(в настройках->Опции прописанно)

Пока хотябы так сделаю, чтоб закончить проект, буду ждать когда будут стабильные версии :)
Немного не понял

mSklad
«Компонент для синхронизации товаров, заказов и остатков miniShop2 с «1С УТ», «Класс365» и «МойСклад».»

Это разве не готовый компонент??
Если нет то объясните почему?

Вопрос задаю в связи с тем, что в ближайшую неделю хотел купить mSklad
Доброе время суток!

Как я понимаю Компонент может обработать выгрузку из 1С УТ, вопрос, а с изображениями как дело обстоит тоже выгружаются?

есть ли обратная синхронизация т.е. с сайта в 1С УТ вместе с характеристиками и изображениями?