Миграция с ShopModxBox-2.0 на ShopModxBox-3.0

Прежде всего, сразу же напоминаю, что прежде чем что-то делать, делаем бэкап. Лучше всего данную процедуру выполнять сначала на дев-копии сайта. Вопрос второй: кому и зачем вообще следует обновлять предыдущие версии ShopModxBox? Отвечаю: Изначально ShopModxBox формировался из трех отдельных компонентов: shopModx, Billing, Basket. Это было обусловленно идеей, что кто-то может захотеть написать свою какую-то собственную корзину, к примеру. Но эта идея не пошла. В итоге мы решили, что все эти три компонента объединяются в один — shopModx, который сразу в себе будет нести и биллинг, и корзину и все остальное необходимое. Какой от этого плюс? Плюс прежде всего в том, что все это теперь будет обновляемо. То есть если какие-то баги фиксятся или улучшения какие появляются, можно будет просто обновлять shopModx из репозитория и все. Второй плюс в том, что теперь любой уже работающий MODX-сайт можно будет превратить в магазин, при чем даже если у вас там другие CRC используются. Конечно для этого надо будет дополнительные движения выполнить, в частности JS-скрипты нужны, хотя можно будет и простыми формами обойтись. Чуть позже я выложу примеры работы с новым API магазина (работа с корзиной, оплата и т.п.). Собственно, сам процесс миграции: — Удаляем лишные расширяющие пакеты <?php $modx->removeExtensionPackage('modxsite'); $modx->removeExtensionPackage('shopModx'); $modx->removeExtensionPackage('basket'); $modx->removeExtensionPackage('billing'); — Очищаем таблицу modx_extension_packages <?php $q = $modx->newQuery('modExtensionPackage'); $q->command('delete'); $s = $q->prepare(); // print $q->toSQL(); $s->execute(); Это факсит багу, из-за которой забивается лог-файл сообщениями невозможности подключить компонент github.com/modxcms/revolution/pull/12359#issuecomment-180780998 — Удаляем компоненты (неймспейсы, плагины, сниппеты и т.п. (можно еще и файлы, но не обязательно) ): Basket (особенно плагин Basket) joxi.ru/BA0dezWIBZ4E3A Billing ShopModxGroupEdit (вот этот компонент можете попробовать пока не удалять, так как в новой версии shopModx он еще не выведен). <?php $modx->runProcessor('workspace/namespace/removemultiple',array(
"namespaces" => "basket,billing,shopmodxgroupedit,patch,shopmodxbox,shopmodxboxpatch", )); — Удаляем старые пункты меню (по одному, так как MODX не удаляет автоматом дочерние пенкты) Опять-таки, пункт «Групповой редактор» тоже можно пока не удалять, а просто перенести на уровень выше. joxi.ru/823OeZKC635RM2 — Удаляем папку core/cache/ (Обязательно!) — Устанавливаем новую версию shopModx — Устанавливаем новую версию modxSite (с object-процессором) — Устанавливаем modResourceField — Создаем через Console необходимые поля. $modx->getManager()->addField("modResource", "price"); $modx->getManager()->addIndex("modResource", "price");

$modx->getManager()->addField("modResource", "article"); $modx->getManager()->addIndex("modResource", "article");

$modx->getManager()->addField("modResource", "currency"); $modx->getManager()->addIndex("modResource", "currency"); — Создаем расширенное TV-поле price (используя компонент modResourceField). (Это можно не делать, если у вас по прежнему будут использоваться специальные документы-товары с собственными полями, какие и были). — Обновить паблик и смарти шаблоны shopmodx с гита, а так же процессоры modxsite/web. Важный момент: если у вас нет приобретенной подписки на пакеты и на балансе нет монет и возникнут вопросы в процессе обновления текущего сайта: задать их можно, но на помощь особо рассчитывать не придется. UPD: Исходники shopModx тоже выложил. github.com/MODX-Club/shopModx