Возможно, заявленная в заголовке тема - Миграция VirtueMart 1.* to VirtueMart 3.* (на момент написания статьи актуален VirtueMart 3.0.18) - и не отличается новизной; но, как показывает практика, миграция VirtueMart, равно как и миграция Joomla 1.5, по сей день все еще не потеряли своей актуальности: в Сети продолжает иметь место быть изрядное количество стареньких магазинов на основе старенького уязвимого движка... для владельцев/админов такого рода мертвых сайтов и предназначена данная статья; также в помощь подборка статей блога Как, вы еще не обновили Joomla? . Почему бы и не оживить ваш сайт? Итак, миграция VirtueMart пошагово:
- Миграцию реализуем только на тестовом сайте! ни в коем случае не на продакшне.
- Если возможно, увеличьте время ожидания ответа в вашем файле параметров php.ini.
- Если версия вашего VirtueMart более старая, чем 1.1.9 - обновите VirtueMart до этой версии, применив соответствующий патч (качаем с оф. сайта патч и устанавливаем средствами административной панели VirtueMart).
- Перенесите используемые в магазине изображения из /components/com_virtuemart/shop_image в /images/stories/virtuemart (необходимо ее создать), сохраняя при этом всю иерархию субдиректорий.
- Теперь переименуйте каталог com_virtuemart (например, в com_virtuemart_old).
- Отключите режим отладки в настройках Joomla.
- Отключите/удалите все расширения VirtueMart.
- Обновите Joomla 1.5 к Joomla 2.5, используя компонент jUpgrade.
- Установите язык вашего сайта, который будет использоваться в описаниях продуктов. Это очень важный шаг, который необходимо сделать перед тем, как вы продолжите обновление.
- Установите VirtueMart 2 (например, 2.0.20), также AIO component (идет в комплекте) стандартными средствами вашей обновленной Joomla 2.5.
- Перейдите в администрирование VirtueMart (Настройки -> Настройки -> Магазин) и установите нужный язык(и) для вашего магазина (даже если сайт не мультиязычный), далее здесь же (Дополнительные параметры) включите инструменты обновления базы данных, т.е. отметьте чекбокс "Разрешить обновление базы данных, enable database tools", и сохраните конфигурацию VirtueMart. Если сервер позволяет, увеличьте "Настройки максимального времени исполнения скрипта" и "Максимальный объем используемой памяти на сервере".
- Перейдите в Инструменты -> Инструменты и Миграция, далее вкладка Миграция. "Выберите задачу для миграции" - устанавливаем "Все", Далее снимите галку из чекбокса "Перезаписать номера заказов" и отметьте чекбокс "Использовать id заказа VM1 как номер заказа VM 2".
- Теперь жмем "Начать миграцию/Start Migration". Возможно, придется несколько раз нажать эту кнопку, чтобы перенести все продукты. Далее, после успешной миграции, можно обновлять и VirtueMart и Joomla уже штатными средствами администрирования (до актуальных на момент написания статьи Joomla 3.6.2 и VirtueMart 3.0.18 вам предстоят еще несколько прыжков).
На правах рекламы и короткой строкой. Не хотите ли вы поручить эту работу нам? Или - заказать сайт на нашем портале? Или - заказать интернет-магазин? Заходите на огонек, всегда ждем.
После миграции скрупулезно выполняем все нотиции и варнинги VirtueMart: он способен вам их дать не только в административной панели управления (это уж будьте благонадежны), но и во фронтальной части сайта. К слову, Taking config from file - это нормально, ошибки здесь нет. Вы можете увидеть короткую дискуссию по этому поводу на forum.virtuemart.net; но вот все остальное вам придется педантично исправить.
Открываем Компоненты -> VirtueMart -> Магазин -> Магазин, не меняя никаких значений - жмем кнопку Сохранить, при этом сразу видим, какие обязательные поля остались у нас с вами незаполненными после миграции. Заполняем все и сохраняем: на вкладке Продавец/Валюта не забываем указать родной деревянный. Если Отсутствует флаг ru-RU для языка ru-RU - открываем Расширения -> Менеджер языков -> Языки контента и проверяем/создаем параметр Префикс изображения. Также, вероятнее всего, вам понадобится вручную создать каталог vmfiles и прописать в настройках VirtueMart безопасный путь к нему; для определения последнего можно воспользоваться этим скриптом:
<?php
echo 'Document root: '.$_SERVER['DOCUMENT_ROOT'].'<br>';
?>
Лечим vmError: $link["view"] is empty - по ссылке, Your VirtueMart installation contains an error: No user as marked as vendor - по ссылке, также не забываем правильно определить НДС 18% в, соответственно, Товары -> Налоги и правила расчета. Проверяем Настройки -> Настройки -> Формирование цен, здесь можно отметить все чекбоксы или только некоторые, некритично. Если после всех манипуляций ваш интернет-магазин по-прежнему отказывается показывать цены - проверяем в любом товаре Группу покупателя, должно быть Доступен для всех. Если данный филд показыает иное значение, и если вы не горите желанием вручную его менять для каждого товара - опционально выполнить следующий запрос (смените префикс jos на актуальный) к БД:
UPDATE jos_virtuemart_product_prices SET virtuemart_shoppergroup_id=0