[miniShop2] Версия 2.4.0 rc
Представляю вам последнюю тестовую версию miniShop2.4-rc.

Наконец-то, в этой версии представлены изменения, которые нарушат работу текущих магазинов при обновлении.
Это связано с переходом на Fenom, и, как следствие, изменением логики работы сниппетов и сокращением общего количества чанков.
Еще раз, НЕ ОБНОВЛЯЙТЕ РАБОЧИЕ МАГАЗИНЫ, ПОКА НЕ ПРОЧИТАЕТЕ ЭТУ ЗАМЕТКУ ЦЕЛИКОМ!!!
Итак, удалены чанки:
— tpl.msOrder.delivery, tpl.msOrder.payment, tpl.msOrder.success и tpl.msOrder.outer
— tpl.msCart.row и tpl.msCart.empty
— tpl.msGetOrder.row
— tpl.msOptions.outer и tpl.msOptions.row
— tpl.msProductOptions.outer и tpl.msProductOptions.row
— tpl.msGallery.outer, tpl.msGallery.row и tpl.msGallery.empty
Добавлены чанки:
— tpl.msOrder
— tpl.msCart
— tpl.msGetOrder
— tpl.msOptions
— tpl.msProductOptions
— tpl.msGallery
Было 24 чанка, стало 16 — по одному на каждый сниппет + несколько почтовых уведомлений.
Например, вот сокращенный вывод корзины:
Больше не нужно бегать по 3 чанкам и что-то менять — всё в одном месте. Модификаторы MODX тоже не нужны, всё делает Fenom.
Скорость, простота и удобство. Надо, конечно, переписать все свои старые чанки, но такова цена прогресса.
Как известно, почтовая вёрстка требует прописывать стили прямо в HTML элементы, в результате чего поддержка нескольких шаблонов писем становится серьёзной головной болью.
А с помощью Fenom мы можем использовать один шаблон и расширять его другими.
Для чего в комплекте с miniShop2 идёт чанк tpl.msEmail с общим шаблоном письма по умолчанию, который разбит на смысловые блоки.
Другие письма расширяют этот чанк и меняют нужные им блоки:
Например, письмо с новым заказом покупателю выглядит так:

Обратите внимание, что в miniShop2 теперь есть и неплохой почтовый шаблон из коробки.
Ах, да! Все письма теперь подготавливаются сниппетом msGetOrder, так что вы легко можете тестировать их оформление с его помощью:
Все сниппеты переписаны заново, понимают массивы в параметрах (для вызова из Fenom), выводят лог работы и позволяют указывать общие параметры pdoTools там, где это логически обоснованно.
Понятно дело, все стандартные чанки тоже переписаны и даже поддерживают адаптивность из коробки, если у вы используете Twitter Bootstrap.
Но это всё фигня, потому что впервые в истории для всех сниппетов написана документация с примерами — docs.modx.pro/components/minishop2/snippets/
Ну а галерея теперь использует Fotorama.

Скрипты и стили подключаются только если в чанке галереи есть блок .fotorama. Так что, если вам она не нужна — просто измените чанк.
Полгода работы, сотни файлов и тысячи строк — miniShop2 полностью обновлён и переписан, чтобы служить вам верой и правдой еще несколько лет. Весь интерфейс админки, все классы, сниппеты, чанки, новая система регистрации дополнений, скрипты и стили фронтенда.
Помимо рефакторинга, важнейшей задачей было написание документации — и вот она docs.modx.pro/components/minishop2/.
Для новичков даже есть быстрый старт, а для опытных пользователей — заметки об обновлении.
Больше никаких работ не планируется, только исправление найденных ошибок и выпуск стабильной версии после этого.
Сказать спасибо за проделанную работу можно через PayPal или форму на bezumkin.ru (требует авторизацию через id.modx.pro).
Новая версия уже установлена на minishop2.com и доступна в репозитории modstore.pro.
Пришла спасибо от Максима — 500р.
И еще одна, тоже 500р — от Паши Гвоздя.
Владимир Бурнос — еще 500р.
Юрий Браги — 1000р!
Александр Здоров — 500р.
Павел Романов — еще 1000р!
Старый друг Виталий Батушев — 1000р!
Парни из modstore.pro заготовили и перечислили еще 30000 рублей!
Всем ответное «спасибо» и «на здоровье»!
Рассуждения о том, что кому и как нужно делать, чтобы в один миг всем стало хорошо — почистил. Не хочется портить очередной перепалкой такое радостное событие, как окончание полугодовой разработки.
Надеюсь на понимание.

Наконец-то, в этой версии представлены изменения, которые нарушат работу текущих магазинов при обновлении.
Это связано с переходом на Fenom, и, как следствие, изменением логики работы сниппетов и сокращением общего количества чанков.
Еще раз, НЕ ОБНОВЛЯЙТЕ РАБОЧИЕ МАГАЗИНЫ, ПОКА НЕ ПРОЧИТАЕТЕ ЭТУ ЗАМЕТКУ ЦЕЛИКОМ!!!
Итак, удалены чанки:
— tpl.msOrder.delivery, tpl.msOrder.payment, tpl.msOrder.success и tpl.msOrder.outer
— tpl.msCart.row и tpl.msCart.empty
— tpl.msGetOrder.row
— tpl.msOptions.outer и tpl.msOptions.row
— tpl.msProductOptions.outer и tpl.msProductOptions.row
— tpl.msGallery.outer, tpl.msGallery.row и tpl.msGallery.empty
Добавлены чанки:
— tpl.msOrder
— tpl.msCart
— tpl.msGetOrder
— tpl.msOptions
— tpl.msProductOptions
— tpl.msGallery
Было 24 чанка, стало 16 — по одному на каждый сниппет + несколько почтовых уведомлений.
Например, вот сокращенный вывод корзины:
<div id="msCart">
{if !count($products)}
{'ms2_cart_is_empty' | lexicon}
{else}
<div class="table-responsive">
<table class="table table-striped">
<tr class="header">
<th class="image"> </th>
<th class="title">{'ms2_cart_title' | lexicon}</th>
...
</tr>
{foreach $products as $product}
<tr id="{$product.key}">
<td class="image">
<img src="{$product.thumb}" alt="{$product.pagetitle}" title="{$product.pagetitle}"/>
</td>
<td class="title">
<a href="{$product.id | url}">{$product.pagetitle}</a>
</td>
...
</tr>
{/foreach}
<tr class="footer">
<th class="total" colspan="2">{'ms2_cart_total' | lexicon}:</th>
...
</tr>
</table>
</div>
{/if}То есть, мы прямо в чанке проверяем количество товаров, и если их нет — то выводим сообщение о пустой корзине. Если же они есть — то разбираем их самостоятельно, проверяя и оформляя все значения.Больше не нужно бегать по 3 чанкам и что-то менять — всё в одном месте. Модификаторы MODX тоже не нужны, всё делает Fenom.
Скорость, простота и удобство. Надо, конечно, переписать все свои старые чанки, но такова цена прогресса.
Оформление писем
Как известно, почтовая вёрстка требует прописывать стили прямо в HTML элементы, в результате чего поддержка нескольких шаблонов писем становится серьёзной головной болью.
А с помощью Fenom мы можем использовать один шаблон и расширять его другими.
Для чего в комплекте с miniShop2 идёт чанк tpl.msEmail с общим шаблоном письма по умолчанию, который разбит на смысловые блоки.
Другие письма расширяют этот чанк и меняют нужные им блоки:
- logo — логотип магазина со ссылкой на главную страницу
- title — заголовок письма
- products — таблица заказанные товаров
- footer — ссылка на сайте в подвале письма
Например, письмо с новым заказом покупателю выглядит так:
{extends 'tpl.msEmail'}
{block 'title'}
{'ms2_email_subject_new_user' | lexicon : $order}
{/block}
{block 'products'}
{parent}
{if $payment_link?}
<p style="margin-left:20px;{$style.p}">
{'ms2_payment_link' | lexicon : ['link' => $payment_link]}
</p>
{/if}
{/block}Как видите, здесь наследуется основной шаблон, меняется заголовок, а к таблице товаров добавляется ссылка на оплату (если есть).
Обратите внимание, что в miniShop2 теперь есть и неплохой почтовый шаблон из коробки.
Ах, да! Все письма теперь подготавливаются сниппетом msGetOrder, так что вы легко можете тестировать их оформление с его помощью:
[[!msGetOrder?
&id=`15`
&tpl=`tpl.msEmail.new.user`
]]админам выводятся любые заказыСниппеты
Все сниппеты переписаны заново, понимают массивы в параметрах (для вызова из Fenom), выводят лог работы и позволяют указывать общие параметры pdoTools там, где это логически обоснованно.
Понятно дело, все стандартные чанки тоже переписаны и даже поддерживают адаптивность из коробки, если у вы используете Twitter Bootstrap.
Но это всё фигня, потому что впервые в истории для всех сниппетов написана документация с примерами — docs.modx.pro/components/minishop2/snippets/
Галерея
Ну а галерея теперь использует Fotorama.

Скрипты и стили подключаются только если в чанке галереи есть блок .fotorama. Так что, если вам она не нужна — просто измените чанк.
Заключение
Полгода работы, сотни файлов и тысячи строк — miniShop2 полностью обновлён и переписан, чтобы служить вам верой и правдой еще несколько лет. Весь интерфейс админки, все классы, сниппеты, чанки, новая система регистрации дополнений, скрипты и стили фронтенда.
Помимо рефакторинга, важнейшей задачей было написание документации — и вот она docs.modx.pro/components/minishop2/.
Для новичков даже есть быстрый старт, а для опытных пользователей — заметки об обновлении.
Больше никаких работ не планируется, только исправление найденных ошибок и выпуск стабильной версии после этого.
Сказать спасибо за проделанную работу можно через PayPal или форму на bezumkin.ru (требует авторизацию через id.modx.pro).
Новая версия уже установлена на minishop2.com и доступна в репозитории modstore.pro.
P.S.
Пришла спасибо от Максима — 500р.
И еще одна, тоже 500р — от Паши Гвоздя.
Владимир Бурнос — еще 500р.
Юрий Браги — 1000р!
Александр Здоров — 500р.
Павел Романов — еще 1000р!
Старый друг Виталий Батушев — 1000р!
Парни из modstore.pro заготовили и перечислили еще 30000 рублей!
Всем ответное «спасибо» и «на здоровье»!
P.P.S.
Рассуждения о том, что кому и как нужно делать, чтобы в один миг всем стало хорошо — почистил. Не хочется портить очередной перепалкой такое радостное событие, как окончание полугодовой разработки.
Надеюсь на понимание.
Комментарии: 193
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
И я не хочу заставлять всех включать эту настройку.
В modstore.pro лежат 2 версии: 2.2 и 2.4. Сначала ставится первая, а потом её можно обновить на вторую. Как проверим, что 2.4-rc не имеет фатальных ошибок, 2.2 отключу.
При клике на категорию справа пустое серое окно. В консоли вижу следующее:
Все кэши почистил. Проверял в разных браузерах.
Версия MODX 2.4.3-pl
Версия PHP 5.6
В чем может быть дело?
А ведь все остальные разделы сайта открываются нормально.
P.S. Собственно, если создать ресурс «Товар магазина», то происходит то же самое: справа от дерева пусто
На minishop2.com с PHP 7.0 всё отлично работает. Да и с другими версиями PHP пока никто больше на pdoTools не жаловался.
[28-Jun-2016 18:59:37 Asia/Yekaterinburg] PHP Fatal error: Maximum function nesting level of '1000' reached, aborting! in /http/rada2/core/xpdo/xpdo.class.php on line 595 [28-Jun-2016 18:59:37 Asia/Yekaterinburg] PHP Stack trace: [28-Jun-2016 18:59:37 Asia/Yekaterinburg] PHP 1. {main}() /http/rada2/connectors/index.php:0 [28-Jun-2016 18:59:37 Asia/Yekaterinburg] PHP 2. modConnectorRequest->handleRequest() /http/rada2/connectors/index.php:59 [28-Jun-2016 18:59:37 Asia/Yekaterinburg] PHP 3. modConnectorRequest->prepareResponse() /http/rada2/core/model/modx/modconnectorrequest.class.php:69 [28-Jun-2016 18:59:37 Asia/Yekaterinburg] PHP 4. modConnectorResponse->outputContent() /http/rada2/core/model/modx/modconnectorrequest.class.php:82 [28-Jun-2016 18:59:37 Asia/Yekaterinburg] PHP 5. modX->runProcessor() /http/rada2/core/model/modx/modconnectorresponse.class.php:131 [28-Jun-2016 18:59:37 Asia/Yekaterinburg] PHP 6. modProcessor->run() /http/rada2/core/model/modx/modx.class.php:1690 [28-Jun-2016 18:59:37 Asia/Yekaterinburg] PHP 7. modObjectUpdateProcessor->process() /http/rada2/core/model/modx/modprocessor.class.php:173 [28-Jun-2016 18:59:37 Asia/Yekaterinburg] PHP 8. modObjectUpdateProcessor->saveObject() /http/rada2/core/model/modx/modprocessor.class.php:822 [28-Jun-2016 18:59:37 Asia/Yekaterinburg] PHP 9. msProduct->save() /http/rada2/core/model/modx/modprocessor.class.php:837 [28-Jun-2016 18:59:37 Asia/Yekaterinburg] PHP 10. modResource->save() /http/rada2/core/components/minishop2/model/minishop2/msproduct.class.php:158 [28-Jun-2016 18:59:37 Asia/Yekaterinburg] PHP 11. modAccessibleObject->save() /http/rada2/core/model/modx/modresource.class.php:645 [28-Jun-2016 18:59:37 Asia/Yekaterinburg] PHP 12. xPDOObject->save() /http/rada2/core/model/modx/modaccessibleobject.class.php:172 [28-Jun-2016 18:59:37 Asia/Yekaterinburg] PHP 13. xPDOObject->_saveRelatedObjects() /http/rada2/core/xpdo/om/xpdoobject.class.php:1353 [28-Jun-2016 18:59:37 Asia/Yekaterinburg] PHP 14. xPDOObject->_saveRelatedObject() /http/rada2/core/xpdo/om/xpdoobject.class.php:1536 [28-Jun-2016 18:59:37 Asia/Yekaterinburg] PHP 15. msProductData->save() /http/rada2/core/xpdo/om/xpdoobject.class.php:1585 [28-Jun-2016 18:59:37 Asia/Yekaterinburg] PHP 16. xPDOObject->save() /http/rada2/core/components/minishop2/model/minishop2/msproductdata.class.php:23 [28-Jun-2016 18:59:37 Asia/Yekaterinburg] PHP 17. xPDOObject->_saveRelatedObjects() /http/rada2/core/xpdo/om/xpdoobject.class.php:1353 [28-Jun-2016 18:59:37 Asia/Yekaterinburg] PHP 18. xPDOObject->_saveRelatedObject() /http/rada2/core/xpdo/om/xpdoobject.class.php:1536 [28-Jun-2016 18:59:37 Asia/Yekaterinburg] PHP 19. msProduct->save() /http/rada2/core/xpdo/om/xpdoobject.class.php:1588 [28-Jun-2016 18:59:37 Asia/Yekaterinburg] PHP 20. modResource->save() /http/rada2/core/components/minishop2/model/minishop2/msproduct.class.php:158 [28-Jun-2016 18:59:37 Asia/Yekaterinburg] PHP 21. modAccessibleObject->save() /http/rada2/core/model/modx/modresource.class.php:645 [28-Jun-2016 18:59:37 Asia/Yekaterinburg] PHP 22. xPDOObject->save() /http/rada2/core/model/modx/modaccessibleobject.class.php:172 [28-Jun-2016 18:59:37 Asia/Yekaterinburg] PHP 23. xPDOObject->_saveRelatedObjects() /http/rada2/core/xpdo/om/xpdoobject.class.php:1353 [28-Jun-2016 18:59:37 Asia/Yekaterinburg] PHP 24. xPDOObject->_saveRelatedObject() /http/rada2/core/xpdo/om/xpdoobject.class.php:1536 [28-Jun-2016 18:59:37 Asia/Yekaterinburg] PHP 25. msProductData->save() /http/rada2/core/xpdo/om/xpdoobject.class.php:1585 [28-Jun-2016 18:59:37 Asia/Yekaterinburg] PHP 26. xPDOObject->save() /http/rada2/core/components/minishop2/model/minishop2/msproductdata.class.php:23 [28-Jun-2016 18:59:37 Asia/Yekaterinburg] PHP 27. xPDOObject->_saveRelatedObjects() /http/rada2/core/xpdo/om/xpdoobject.class.php:1353 [28-Jun-2016 18:59:37 Asia/Yekaterinburg] PHP 28. xPDOObject->_saveRelatedObject() /http/rada2/core/xpdo/om/xpdoobject.class.php:1536 [28-Jun-2016 18:59:37 Asia/Yekaterinburg] PHP 29. msProduct->save() /http/rada2/core/xpdo/om/xpdoobject.class.php:1588 [28-Jun-2016 18:59:37 Asia/Yekaterinburg] PHP 30. modResource->save() /http/rada2/core/components/minishop2/model/minishop2/msproduct.class.php:158 [28-Jun-2016 18:59:37 Asia/Yekaterinburg] PHP 31. modAccessibleObject->save() /http/rada2/core/model/modx/modresource.class.php:645 [28-Jun-2016 18:59:37 Asia/Yekaterinburg] PHP 32. xPDOObject->save() /http/rada2/core/model/modx/modaccessibleobject.class.php:172 [28-Jun-2016 18:59:37 Asia/Yekaterinburg] PHP 33. xPDOObject->_saveRelatedObjects() /http/rada2/core/xpdo/om/xpdoobject.class.php:1353 [28-Jun-2016 18:59:37 Asia/Yekaterinburg] PHP 34. xPDOObject->_saveRelatedObject() /http/rada2/core/xpdo/om/xpdoobject.class.php:1536 [28-Jun-2016 18:59:37 Asia/Yekaterinburg] PHP 35. msProductData->save() /http/rada2/core/xpdo/om/xpdoobject.class.php:1585php 5.6.10. Кэш чистил. Только у меня так? Раньше вроде работало. Причём замена на msProduct происходит, если обновить страницу, но после никакие изменения у товара не сохраняются.Как можно в логах посмотреть, что именно не работает, на что ругается miniShop? У меня не открываются категории и товары, а то в журнале ошибок ничего не пишет при этом.
Спасибо за понимание.
Ну и проверить работу можно на modhost.pro. Думаю, у тебя мешается какой-то другой компонент, например, AjaxManager.
Проверь работу дополнения на modhost.pro и убедись, что там всё в порядке. А потом ищи конфликтующие дополнения у себя на сайте, начиная с AjaxManager и подобных «улучшателей» админки.
Вот сейчас и думаю, что делать с этим. Буду экспериментировать с обновлениями :-)
В FF 38.0.5 при удалении заказа не исчезает прелоудер — joxi.ru/dp27oobSvXx627
В Chrome ошибки нет.
В логах: PHP Fatal error: Uncaught Error: Call to undefined method miniShop2::loadMap() in /home/c/cl63547/dacha2000.call-center.bz/public_html/core/cache/includes/elements/modplugin/2.include.cache.php:9\nStack trace:\n#0 /home/c/cl63547/dacha2000.call-center.bz/public_html/core/model/modx/modscript.class.php(70): include()\n#1 /home/c/cl63547/dacha2000.call-center.bz/public_html/core/model/modx/modx.class.php(1600): modScript->process()\n#2 /home/c/cl63547/dacha2000.call-center.bz/public_html/core/model/modx/modx.class.php(531): modX->invokeEvent('OnMODXInit', Array)\n#3 /home/c/cl63547/dacha2000.call-center.bz/public_html/manager/index.php(52): modX->initialize('mgr')\n#4 {main}\n thrown in /home/c/cl63547/dacha2000.call-center.bz/public_html/core/cache/includes/elements/modplugin/2.include.cache.php on line 9, referer: dacha2000.call-center.bz/manager/
После установки кеш сичтил. Дополнений на сайте минимум. Подскажите в чем может быть дело?
Функция loadMap вполне себе на месте в классе miniShop2. Может хостинг как-то прям дико кэширует php код и у тебя там работает класс от версии 2.2
Ограничение у нас только на домены второго уровня, на поддомены ограничений давно нет. То есть
домен modx.pro считается, а id.modx.pro уже нет.
На тарифе «Минимальный» можно добавить 3 домена второго уровня и сколько угодно поддоменов к ним.
впервые работаю с Fenom, пытаюсь вывести что-то вроде
всё отваливается.
так тоже:
так
и так
естесственно, работает.
Как правильно строку к переменной присоединить?
А так — смотри строковые операторы.
2.5.0-pl
7.0.7
2.4.0-rc
2.5.4-pl
Скорее всего код метрики\аналитикс вставили без пробелов от кавычек {w*****, вот и fenom ругался, что не понимает что такое w.
p.s. Не помню, когда код метрики\аналитикс вставлял последний раз. Сейчас только GTM ставлю и уже в него номер аналитикса и метрику (только гуглу не говорите :).
Я верно понимаю, что реализовано этой функции в ближайшее время не будет и нужно и дальше продолжать «колхозить» на своих сайтах для реализации SKU?
modstore.pro/packages/integration/mstradeoffers
На что-то новое замахиваться пока нет ни сил, ни желания. Да и разработчикам дополнений нужно привыкнуть хотя-бы к этой версии, прежде чем еще что-то накручивать.
Снипет msProducts некоторые товары выводит по два раза, причем никакой логики и закономерности обнаружить не удалось( Просто рандомные товары… Только первый раз товар выводится с первой фоткой из галереи, а второй раз — со второй. Лог чистый
Вот вызов снипета
Вот чанк
Заранее огромное спасибо!
Можно проверить в БД, можно просто посортировать картинки в галерее — при этом порядок исправится.
Файл конечно же не пустой.
На modhost.pro пытаюсь воспроизвести – не получается)) Картинка загружается.
Если что — вот где берётся содержимое файла, можете попробовать отдебажить косяк на своём хостинге.
Поменял на 5.6, для теста – всё ок. Никогда не нравился этот хостер)
Постараюсь установить новую виртуальную машину с 5.3 и проверить.
Вот phpinfo(), может поможет)
Спасибо за ваши труды Василий!
Полагаю, что на твоём хостинге он как-то необычно сконфигурирован. Подождём еще сообщений.
Кстати говоря, вся новая галерея товаров целиком портирована из платной ms2Gallery, с вырезанием некоторых функций. И в поддержке магазина у меня таких вопросов пока нет.
Два сайта поменял, на версию выше оба заработали. Хостинг Таймвеб.
Подождём еще сообщений.
Вывод фотографии товара в письме о новом заказе менеджеру не работает. Проверено на разных почтовых серверах.
Код чанка tpl.msGetOrder
Вид в mail.ru
Вид в Яндекс
Код письма в Яндекс
tpl.msGetOrder выводит картинки на сайте, а tpl.msEmail — в письме. В одном случае достаточно относительных url, в другом необходимы полные.
PHP 7.0.8
От таких вопросов в монастырь без интернета хочется уйти.
MySQL 5.5 + Nginx 1.10.1 + PHP 7.0.7
Вот еще тогда глюк:
Не показывается картинка здесь, хотя на сайте показывается.
Fatal error: Call to a member function getProperties() on null in ...core/cache/includes/elements/modsnippet/25.include.cache.php on line 71
В старом minishope выводилась заглушка.
Сейчас нужно отключать msGallery.
В старом minishope нельзя было галерею отключать, т.к. все скрипты вместе с ним отключались.
Такого быть не должно, поэтому сниппет и падает при попытке работы с источником.
А то есть разные категории товаров с отличающимися размерами картинок.
я вот чуть переделал msGetOrder под проект, чтобы он еще несколько нужных значений выводил, сохранил под другим именем и вызвал его на странице оформления — на ней всё работает, но в письма уходит всё равно с пустыми местами вместо этих значений…
ну и еще чанки бы тоже переопределять
Перечитал вопрос и я понял, что предложенное вряд ли поможет.
В крайнем случае, можно вызвать какой-то сниппет из чанка, для получения дополнительных данных.
Если добавить price в ms2_product_extra_fields, то цена появляется и здесь удобнее, чем в главном окне.
Исправлю.
docs.modx.pro/components/minishop2/interface/item#Обновление-превью
docs.modx.pro/components/pdotools/parser#Плейсхолдеры-с-точкой-или-тире
В товаре выводятся сопутствующие товары, используется тот же tpl.msProducts.row, но TV не выводится в них.
а в БД все ок
как и выше писалось: Fatal error: Call to protected method FenomX::_assertNoEval() from context '' in site\core\components\pdotools\model\pdotools\_fenom.php on line 529
эта ошибка при оформление заказа остается, все остальное хорошо работает, сменить версию на повыше и сразу начинает работать все нормльно
Раньше после оформления заказа можно было на сайте увидеть его содержимое и надпись
«Спасибо за оформление заказа #**** на нашем сайте ****»
Как сейчас эту фразу с номером оформленного заказа вставить?
Понял, как вывести ID заказа — {$order.id}.
Как вывести номер заказа пока не понял.
Когда первый раз захожу в карточку товара, то картинки (как я понимаю) адаптируются под мобильный
После обновления страницы, картинки нормально отображаются
===
UPD: о, сам нашел. data-width=«100%» (или в пикселях, тоже норм)
Надеюсь найдется решение как исправить это, а то не хочется сотню товаров руками перебирать!
$fields = array(
'receiver' => 'fullname',
'phone' => 'phone',
'email' => 'email',
'comment' => 'extended[comment]',
'index' => 'zip',
'country' => 'country',
'region' => 'state',
'city' => 'city',
'street' => 'address',
'building' => 'extended[building]',
'room' => 'extended[room]',
);
Сниппет msOrder 112 строка нет metro.
Во-первых, хотелось бы событие для плагина из коробки для самостоятельно обработки отправки письма.
Во-вторых, в новом релизе msGetOrder вызывается прямо в minishop2.class.php, и если надо сделать вывод нестандартных изображений в письме, то приходится или править основной код вызова, или извращаться с msGallery в теле письма. Что кажется не слишком удобным, плюс к этому изображения в письме на отправку могут отличаться от изображений по-умолчанию, которые показываются в админке сайта, и при этом не могут быть одинаковыми, предвосхищая вопрос.
Поиск и все ссылки на этом сайте ведут
на bezumkin.ru/modx/minishop2/import/2309/
откуда перекидывает на docs.modx.pro/
По многочисленным просьбам общественности написал скрипт импорта в miniShop2 из CSV. У нас уже проскакивало несколько вариантов, но все они как то не очень.
Особенности:
Это не сниппет, это самодостаточный скрипт.
Использует процессоры для импорта ресурсов и изображений.
Умеет обновлять ресурсы по указанному ключевому полю.
Поддерживает ТВ параметры и поля товаров, включая JSON типа size и color.
Есть режим отладки, с подробным логом и обработкой только первой строки файла.
Выводит сообщения через системный лог.
Теретически, можно импортировать не только товары, но и категории или другие ресурсы, но не проверял.
Скрипт входит в состав miniShop2 с версии 2.1.4 и лежит в /core/components/minishop2/import/csv.php. Запускать его можно как из браузера (если у вас открыта директория core), так и из консоли.
Если захотите его перенести в другое, более подходящее место, то нужно отредактировать строку
require_once dirname(dirname(dirname(dirname(__FILE__)))). '/config/config.inc.php';
и указать другой путь для получения config.inc.php.
Если вы запускаете скрипт из core, и вообще, если у вас открыта core всем гостям — то вы сам себе злобный буратина. Это небесопасно, я вас предупредил!
Параметры
Параметры можно указывать двумя путями: через командную строку и через массивы $_GET или $_POST
file — путь к импортируемому файлу, от корня сайта. Например «core/import/file.csv»
fields — строка с полями испортируемого файла.
Здесь нужно перечислить имена, как они идут в файле. Например: «alias,article,pagetitle,price,image,discount».
В параметре и файле можно использовать не только поля ресурса, но и:
Массивы свойств товара: «size,size,size,color,color»
Изображения для галереи: «gallery,gallery,gallery»
ТВ параметры (слово «tv» + id параметра): «tv1,tv2,tv3»
update — указывает, нужно ли обновлять ресурсы. Значения 1 или 0.
key — если включено обновление, обязательно нужно указать ключ товара, по которому определяется его уникальность. Например «article».
debug — Режим отладки. Если = 1, то скрипт подробно обрабатывает первую строку файла и выходит.
delimeter — Разделитель колонок в csv файле, по умолчанию ";".
Если вы загружаете изображения в галерею, я рекомендую указать товарам id медиа источника source, чтобы не получить кучу картинок в корне сайта.
Примеры
Импорт через консоль:
php ./core/components/minishop2/import/csv.php «file.csv» «article,pagetitle,tv1,size,size,gallery,gallery,tv3» 1 «article» 1 "|"
Импорт через браузер
mysite.com/core/components/minishop2/import/csv.php?file=file.csv&fields=article,pagetitle,tv1,size,size,gallery,gallery,tv3&update=1&key=article&debug=1&delimeter=|
В конце работы скрипт выведет статистику и ошибки, если есть.
Хостинг sprinthost
Очень важная вещь появилась — вывод всех опций, порадовала возможность быстрого редактирования и прочее.
Вопрос по Fenom в корзине: как заменить изображение на другой размер?
product.thumb — 300 пикселей, хотелось бы не грузить такую картинку. Есть вариант использования плейсхолдера, типа [[+100x100]]?
Оказалось, точку не убрал
чтобы вывести ссылку на продукт. Во-первых, никак не нашел вообще описание синтаксиса. Ну да ладно. Вопрос, собственно, не в этом. Когда приходит письмо, то, если я его открываю в Thunthebird, то там ссылка нормальная. А если открываю в браузере на сайте mail.ru, то там ссылка порезана. Как быть?
Мне кажется ссылки в письмах на сайте маил.ру дело рук не данного компонента.
Хотя вы даже скриншот не показали, пример не привели. На такой вопрос трудно ответить по существу
Поэкспериментировал сегодня. Выяснилось, что Mail.ru совершенно не причем. Оказывается, что ссылка на продукт присутствует в письме Юзеру и Менеджеру о том, что заказ сделан. В этих двух первых письмах всё правильно. Потом, после оплаты, приходят письма об оплате заказа. В обоих письмах и Юзеру и Менеджеру ссылка с пустым href. Где это поправить? Ведь по сути шаблон один и тот же используется. Или нет? Тогда что не так?
Они размножились, хотя в опциях товара
В чём прикол?
«Лечится» пересохранением ресурсов, но офигеешь не одну тысячу пересохранять
проверяю baltax.ru/test-order (там просто стоит вывод письма из заказа [[!msGetOrder? &id=`243` &tpl=`tpl.msEmail.new_sale_user` ]])
Письмо выводится с деталями заказа, но в письме Юзеру и Менеджеру, приходит пустая таблица из-за того что какбэ нет массива который нужно обходить {foreach $products as $product}
Можете сами проверить купив какой-нить товар за 0 руб. например baltax.ru/katalog-tovarov/dop-oborudovanie-calix/montazhnyie-komplektyi-calix/art-m69-1557593 и вам придет письмо но без деталей заказа
Чё за фигня? Почему массив $products не существует когда идет генерация письма? Где копать? Мож какую настройку включить?
При таких настройках работает:
joxi.ru/a2Xak8bIy8KvyA
Но когда убираешь «Вкладка галерея товара», при редактировании товара вот такое:
joxi.ru/Drl7eY6C4NkXgA
как видно на скриншоте специально протестил на modhost
Проблема только одна, свойства товара не отображаются при просмотре товара:
Обнаружил интересный толи баг, толи ёще что.
В полной корзине товаров в чанке tpl.msCart благодаря Fenom — делаю вывод опции размера, как разумеется до этого идет конструкция http://c2n.me/3BrT2FP все ок. вышел. Это был 1ый товар.
2ой товар http://c2n.me/3BrVG2L видно что выводится 1ая опция из 1го товара! НООО самое интересное, что если открыть исходный код браузера — там все ок! :)))
Почему то ссылается во 2ом товаре на опцию 1го товара, хотя обращение к другим поля массива — все ок, видно по скринам.
Проверял другой браузер, плагины — нет! Сам программист, но не понимаю где искать, почему в исходном коде норм, в бразуер нет, страница НЕ закеширована.
Обратился уже и к мануалу Fenom Rus по логике все верно.
p.s. зато теперь про нововведений Fenom стало многое ясно, что где куда и зачем — не плохая штука, удобная, т.к. упрощает код за счёт базового синтаксиса и возможностей.
Писал вам на почту пару дней назад, не уверен получили ли вы сообщение, т.к. ответа не последовало.
Присутствует баг, что если у товара заполнен «Производитель», то при следующем редактировании товара список всех производителей не появляется и выбрать другого становится невозможно. Мне кажется это очень похоже на это github.com/bezumkin/miniShop2/issues/230
Только у меня эта ошибка на любом товаре воспроизводится, не только клонированном.
Буду очень признателен, если подскажите как победить это.
В итоге проблему победил, если вдруг кому пригодится, вот решение:
открываете файл assets/components/minishop2/js/mgr/misc/ms2.combo.js
находите строку 202, либо вот этот кусок кода:
и меняете это:
на это:
В итоге поле производителя стало отображать нормально всех производителей при редактировании товара.
Буду признателен, если Василий подскажет верно ли я сделал и не аукнется ли это потом где-то.
Где смог проверил, вроде все в порядке.
Дело было вовсе не в плагине.
У MS2 есть возможность переопределить логику работы корзины, написав собственный класс для её расширения, чем я тебе и предлагаю заняться. Можно будет вызывать там какие угодно события, в любой последовательности.
Если что, у событий плагинов есть приоритет и одно событие можно использовать хоть в 100 плагинах, тогда изменение цены пройдёт по цепочке от низшего приоритета к высшему.
В логе ошибка есть, но она позже появилась и к делу не относится вероятнее всего. Что можно предпринять в данном случае?
1. В админке не находило /assets/components/minishop2/js/mgr/misc/default.window.js и /assets/components/minishop2/js/mgr/settings/delivery/grid.js и другие js и css файлы, в итоге чего minify просто выдавал ошибку 400 для всего пака скриптов
2. На фронтенде больше не регистрируется объект miniShop2 и связанные с ним вещи(раньше это делалось в core/components/minishop2/model/minishop2/minishop2.class.php, теперь это делается судя по-всему через default.js, но проблема связана с тем что ассеты в /assets/components/minishop2 не обновились по какой-то причине(проблема из п.1)
Как это можно решить? И почему ассеты отказываются обновиться?
Скорее всего проблемы в разрешении на директории, из-за чего просто не получается что-то в них записать. Такое часто бывает на кривых хостингах.
Или только идти путем плагинов с добавлением Свойств товаров и в этом случае они смогут быть отображены в списке товаров, аналогично цене, заголовоку и прочее.
joxi.ru/823x1l0uJJENEA
Телефон покупателя: {$address.phone}
Email покупателя: {$user.email}
Способ доставки: {$delivery.name}
Тип оплаты: {$payment.name}
Комментарий к заказу: {$address.comment}
Притом в order Тоже есть поле comment.
Спасибо добрый человек за наводку. )
Исходные данные. Есть страница с корзиной, которая содержит следующее:
[[!mySnippet]]
[[!msCart]]
[[!msOrder]]
[[!msGetOrder]]
Сниппетом mySnippet после клика на кнопку «Оплатить» генерируется дополнительная платежная информация и записывается во внешнюю базу данных. Кроме того, эта информация выводится покупателю. После этого сниппетом msGetOrder отправляется email покупателю (как указано в документации) и выводится содержимое заказа.
Мне нужно включить в email покупателю дополнительную платежную информацию из внешней базы данных, записанную перед этим сниппетом mySnippet. Я пытаюсь сделать это в сниппете msGetOrder, но складывается впечатление, что email покупателю отправляется до того, как дополнительная платежная информация записывается во внешнюю базу данных.
Мои вопросы:
— скажите пожалуйста, где, как и в какой момент отправляется email покупателю;
— где и как мне нужно сделать запись во внешнюю базу данных (после клика на кнопку «Оплатить»), чтобы эту информацию можно было бы потом извлечь и вставить в email покупателю;
— можно ли изменить момент отправки email покупателю так, чтобы это происходило гарантированно после записи во внешнюю базу данных.
Зараннее Спасибо.
Стандартной опцией не получается… Чанки все равно остаются от новой версии ms2
@Восстановить
Это позволит восстановить предыдущий вариант параметров компонента, такими какими они были до установки новой версии пакета.@
Как то надо вернуть на метсо старые чанки
Подскажите!
как я могу вывести товары по tv-параметру
Есть поля:
collection-id- текстовое, где я через запятую вписываю числа
tagg — tagLister
В одном товаре может быть несколько тегов
Нужно вывести товары, у которых есть совпадение хотя бы по одному из чисел в collection-id или tagg
делаю вот так не выходит
[[msProducts?
&limit=`0`
&parents=`0`
&depth=`0`
&tpl=`tpl.msProducts.row`
&includeTVs=`collection-id,tagg` &where=`{«collection-id:LIKE»:"[[*collection-id]]"}`]]
Вопрос по галерее минишопа. Есть товар, у товара картинки с водяными знаками проставленные в настройках источника медиа
joxi.ru/12M7daECllewJr
Создал отдельно original чтобы был в полный размер и с водяным знаком.
Вопрос в том, что в папке каждого продукта лежат файлы оригинал без водяного знака.
joxi.ru/VrwWwPXI77NjNr
Удалять их понятное дело нельзя, т.к. они могут понадобится, например для перегенерации превью
Как запретить к ним доступ? т.к. негодяи захотят, спарсят все картинки без водяного знака.