Установка shopModxBox на существующий сайт (ответ)

Хотел написать ответ комментом в топике-вопросе, но ответ получился слишком объемным, поэтому решил выделить его в отдельный топик. В целом конечно же можно устанавливать shopModx на уже работающие сайты (что мы практикуем довольно часто, переделывая чужие сайты), но задача это действительно не простая и требует очень хорошего знания MODX-а. К тому же в чистом виде ставить shopModx не особо имеет смысл, так как это всего лишь основа для магазина и без компонентов billing и basket никакого функционала магазина не будет и близко, поэтому здесь мы рассмотрим вкратце установку именно ShopModxBox на готовый сайт (или перенос готового сайта на него). Есть как минимум два довольно разных способа. Способ 1 1. На существующий сайт (не забывайте про бекапы и лучше делать на копии сайта) устанавливаете следующие компоненты из репозитория: modxSite modCaptcha modHybridAuth shopmodxUnitPay edinayaKassa Последние два — если планируете использовать эти платежные системы. modHybridAuth — так же в случае, если планируете вход через социалки. Список компонентов конечно же может измениться, смотрите актуальный здесь: github.com/Fi1osof/ShopModxBox/tree/master/core/components и устанавливайте все, что найдете из репозитория modx.com или нашего rest.modxstore.ru/extras/ (некоторых модулей может не быть в репозиториях, к примеру billing и basket (пока нет)). 2. Затягиваете гитом все файлы из проекта и заливайте их на сайт. 3. Создать недостающие таблицы. Проще всего это сделать установив отдельно чистую сборку ShopModxBox и через phpMyAdmin сделать экспорт базы данных, указав «только структуру» и конструкцию «if table not exists», то есть импортировав этот дамп вы создадите только те таблицы, которых нет в базе. 4. Создать контекст spravochniki (чтобы не отходить от заданной структуры) и в нем документы-валюты, которые будут использоваться в магазине. Даже если одна только валюта, все равно ее надо создать. По умолчанию это RUR. После чего надо зайти в настройки пространства shopModx и указать валюту по умолчанию (настройка shopmodx.default_currency) (ну и шаблон для товаров по умолчанию тоже там же хорошо было бы установить (настройка shopmodx.product_default_template)). 5. Надо будет обновить все документы товаров, «превратив» их в товары. Для этого им надо сменить тип документа и выполнить обновление цены. Примерный скрипт такой: 6. В настройках modxSmarty указать актуальный Smarty-шаблон и этот шаблон таки оформить, перенеся скин сайта. Ну и там же дописываете/переписываете необходимый функционал. Способ 2. Второй способ подразумевает совершенно другой подход, и именно его мы и используем при переносе готовых магазинов. Здесь мы не ShopModxBox ставим поверх существующего сайта, а сайт поверх сборки. За основу для этого можно взять вот этот материал, но в целом он трансформировался вот в этот SQL-скрипт: gist.github.com/Fi1osof/b54b347fc739b405def1 Имейте ввиду, что этот скрипт заточен под MODX Evolution. Если вы переносите с Рево на Рево, то надо заменить перечисления колонок на Все. К примеру: Было Стало Очевидно, что old заменяем на название базы-источника. Так же следует учесть, что у текущего пользователя баз данных права должны быть и на базу-источник и на целевую базу. Итак, распишем весь этот процесс по шагам. 1. «Рядом» с оригинальным сайтом разворачиваем чистую сборку ShopModxBox (под «Рядом» я подразумеваю один и тот же сервер, чтобы удобней было работать сразу с двумя базами данных и файлы из одного сайта в другой перекидывать). 2. Вышеупомянутым скриптом через phpMyAdmin перекидываем из оригинальной базы данных в новую базу документы, шаблоны, TV-параметры (и их значения) (пользователей переносим дополнительно, если надо). Надо здесь понимать, что главное на сайте — это сама информация (структура, документы сопутствующие данные и т.п.). А вот функционал (выборки всякие, сниппеты, плагины и т.п.) — это уже сопутствующее и то, что должно переписываться без особого труда. Если у вас функционала больше чем информации — значит или что-то не так, или просто не надо браться за перенос. 3. Делаем копию дефолтового шаблона shopmodx (папки assets/components/modxsite/templates/shopmodx/ и core/components/modxsite/templates/shopmodx/), указываем актуальный шаблон в настройке модуля modxSmarty. 4. Обновляем документы-товары, создавая для них товары (см. п. 5 в первом способе выше). 5. Все MODX-шаблоны переводим в Smarty-шаблоны (указываем, что они статические и выбираем файл base.php в источнике файлов controllers/) (Смотрите как шаблоны устроены в ShopModxBox). 6. Программируем все необходимое. Да, ни один из этих способов нельзя назвать простым, просто потому реально много чего приходится переделать, и если у вас недостаточно знаний в MODX-е или в ShopModxBox-е, то за это в принципе можно и не браться. Но в целом если руку набить, то можно довольно быстро перенос выполнять. У меня вот среднее время на перенос — 8-15 часов. Совсем недавно три довольно объемных магазина перенес вместе с выгрузкой в яндекс.маркет и хитрым импортом (который пришлось для них дописывать), и все это заняло 80 часов. Кстати, следующая сборка ShopModxBox будет включать в себя обновленный импортер, о котором я уже как-то упоминал.