Fi1osof 18 марта 2016 3 7
Прежде всего, сразу же напоминаю, что прежде чем что-то делать, делаем бэкап. Лучше всего данную процедуру выполнять сначала на дев-копии сайта.

Вопрос второй: кому и зачем вообще следует обновлять предыдущие версии 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
7 комментариев
J
Jok 18 марта 2016г в 22:06 #
Николай приветствую!
Я так понимаю без оплаченной подписки добавить репозиторий нельзя?

Этот поставщик не может быть проверен, и поэтому не может быть использован как поставщик. Пожалуйста проверьте URL сервиса и повторите попытку.
Fi1osof1
Fi1osof 18 марта 2016г в 22:12 #
Да, об этом я писал в прошлой статье.
D
DzirT 31 марта 2016г в 10:05 #
после обновления, при попытке добавить в корзину «Ошибка выполнения запроса». $this->modx->basket->getActiveOrderID() пустая,
ошибка в error.log; (ERROR @ /index.php) Processor core/model/modx/processors/basket/web/orders/products/getdata.php does not exist; Array
(
)
Что то сделано не правильно?
Fi1osof1
Fi1osof 31 марта 2016г в 10:18 #
Вот этот пункт выполнен:
Удаляем папку core/cache/ (Обязательно!)
$this->modx->basket не должно быть в принципе.
D
DzirT 31 марта 2016г в 10:24 #
Вот этот пункт выполнен:
конечно
Fi1osof1
Fi1osof 31 марта 2016г в 10:26 #
Пришли доступ в админку на n.lanets@modxclub.ru, я посмотрю.
Fi1osof1
Fi1osof 31 марта 2016г в 10:55 #
В общем, я был дико удивлен, увидев под капотом ShopModxBox-2.2.3)))) Анонс этой сборки состоялся полтора года назад :)
Но еще больше я был удивлен, что подправив пару параметров в JS (пути на новые коннекторы), товары стали добавляться в корзину :)
Резюме: вы не выполнили вот это условие:
— Обновить паблик и смарти шаблоны shopmodx с гита
У вас там весь фронт полуторагодичной давности. Вам надо смарти и паблик шаблоны обновить, а скин должен нормальным расширяющим быть. Если сами не справитесь с обновлением до последней версии, могу в счет 500 монет обновить вам.
Авторизуйтесь или зарегистрируйтесь (можно через соцсети ), чтобы оставлять комментарии.