Поступил мне давеча заказ на обновление Joomla 1.0.13 и Virtuemart 1.0.8 до последних версий. Причем, и на сайте множество материалов, и в магазине куча товаров. Так как мне не доводилось до этого дня обновлять одновременно и то, и другое, я погуглил и нашел красивый мануал, оформленный в виде ролика-презентации (посмотреть). Скажу сразу: полная лажа. Презентация чудовищная, не предоставляющая никакой возможности понять ее правильно. Ну да ладно. Я все-таки попробовал.

Доктор готов препарировать Joomla и Virtuemart. Сестра, спирт и скальпель!
Обновление. Сумерки. Начало.
Для начала я сделал бекапы (back up, резервная копия) всех файлов и таблиц – на случай неудачного обновления – и попробовал делать все, как указано в ролике
- Обновил Virtuemart до версии 1.1.0 (минимально поддерживаемая Joomla 1.5 версия магазина)
- Установил компонент com_Migrator (Скачан 92 раз)
- с его помощью сделал дамп необходимых для переноса данных таблиц
- начал новую установку Joomla 1.5.15 (Скачан 86 раз) и на нужном шаге запустил "Migration Wizard", который подхватил сохраненный ранее дамп
- скопировал таблицы Virtuemart в новую базу данных
- скачал и установил компонент mtwMigrator
- далее…. А далее начинается разброд и шатание в ролике-презентации, поэтому я действовал по интуиции.
Далее я мучался с апдейтом несколько часов, в результате чего получил нечто, напоминающее сайт, но работающее плохо, с дублированным контентом, с неработающими всплывающими окнами магазина. Короче говоря, кошмар.
После этого я решил сделать все сам, не опираясь на сомнительные руководства и ролики.
Обновление. Рассвет разума.
Итак, чтобы обновить до последних актуальных версий сайт на Joomla 1.0.x и магазин Virtuemart 1.0.х , делаем следующие шаги.
- Обновляем Virtuemart до версии 1.0.15 Скачать обновление: Patch_VirtueMart-1.0.8_TO_VirtueMart-1.0.15 (Скачан 99 раз)
- Обновляем Virtuemart до версии 1.1.0 Скачать дистрибутив Virtuemart 1.1.0: VirtueMart_1.1.0_RC3-Manual_Installation_Package (Скачан 119 раз)
На этом моменте нужно остановиться поподробнее. Чтобы обновить VirtueMart линейки 1.0.х до линейки 1.1.х нужно из приведенного архива распаковать все файлы прямо в корень вашего старого сайта; с заменой. Сразу после этого идем в админку Joomla и заходим в управление магазином Virtuemart. Скрипт уже будет в курсе, что произошло что-то важное в его жизни, и возвестит о том, что нужно нажать большую зеленую кнопку для обновления таблиц в базе данных. Обязательно нажимаем эту кнопку. И не прерываем ни в коем случае процесс обновления!
Вот только после этого можно приступать к остальным шагам.
Теперь нам нужно поставить в отдельную папку свеженькую Joomla линейки 1.5.х (скачать Joomla 1.5.15 (Скачан 86 раз))
Устанавливаем ее, как буд-то хотим сделать совершенно новый сайт; то есть, никаких дампов не заливаем ни на каком шаге установки! Просто устанавливаем Joomla. Сразу же после успешной установки ядра заходим в админку сайта и устанавливаем Virtuemart 1.1.0 для Joomla 1.5 (скачать: VirtueMart 1.1.0 Joomla 1.5 (Скачан 90 раз)) Архив нужно распаковать; внутри вы найдете компонент и все необходимые модули и плагины. Устанавливаем сначала компонент, затем модули и плагины. Если при установке компонента вы получили ошибку "There was an error uploading this file to the server" (см.картинку),

значит у вас на сервере выделено недостаточно памяти для загружаемых файлов. Лечится это довольно просто: нужно в файле htaccess в корне сайта прописать одну строку:
php_value upload_max_filesize 32M
После этого компонент должен стать без проблем.
Теперь можно установить языковой пакет, если вам это нужно. Строго говоря, это можно сделать и потом.
Сразу после этого устанавливаем компонент mtwMigrator и идем в меню Components – mtwMigrator на вкладку "Global Configuration", где заполняем все поля в соответствии с настройками базы данных старого сайта(!). Заполнили? Нажимаем большую зеленую кнопку "Check". Если вместо кнопки появится надпись "Joomla 1.0 Detected!", значит вы сделали все правильно и можно (и нужно) нажать кнопку "Save" справа вверху. Если же появилась какая-либо другая надпись, проверяйте параметры соединения с БД. Повторяю: здесь нужно вводить все параметры соединения с базой данных старого сайта.
После нажатия кнопки "Save" советую опять зайти во вкладку "Global Configuration" компонента mtwMigrator и убедиться в том, что введенные вами только что данные сохранились. Если вы опять видите пустые поля и кнопку "Check", значит запись в конфигурационный файл компонента не удалась (по причине отсутствия прав на запись, как правило). В этом случае вам нужно сменить права на файл /administrator/components/com_mtwmigrator/mtwmigrator_config.php , либо просто руками внести в него нужные значения. Как это сделать – отдельный разговор. Если кому-то будет интересно, помогу, обращайтесь.
Теперь нужно сообщить компоненту, что конкретно мы будем переносить из старого сайта.
Идем во вкладку "Global", где я советую поставить все радиокнопки в положение "yes". Исключение можно сделать только для пункта "Migrate Frontpage". Сохраняем конфигурацию нажатием кнопки "Apply" ("Применить").
И последняя вкладка – "3rd Extensions".
Собственно, тут получится активировать только компонент "Virtuemart", так как только он у нас на данный момент установлен. Позднее, если вы захотите перенести содержимое какого-либо другого компонента, присутствующего в списке, вы сможете установив необходимый компонент, здесь активировать его и совершить перенос.
Сохраняем конфигурацию нажатием кнопки "Save" ("Сохранить").
Кульминационный момент – нажимаем большую кнопку "Start Migration!" и, если на предыдущих шагах все было сделано верно, то через несколько секунд процесс завершится успешно. Различные неудачи как правило связано с неверным конфигурированием, но я готов помочь страждущим разобраться с ними.
Итак, теперь у нас есть Свежая Joomla и почти свежий Virtuemart с уже перенесенным со старого сайта содержимым. Осталось только обновить Virtuemart до последней стабильной версии (на данный момент это 1.1.4) и настроить все остальные параметры сайта и магазина.
Обновление Virtuemart
Напомню, что сейчас у нас стоит Virtuemart v.1.1.0 – продукт не первой свежести. Обновим его.
Качаем обновление Virtuemart 1.1.0 - 1.1.1 (Скачан 98 раз)
Можно воспользоваться штатным средством обновления (меню в Virtuemart "Check for Updates", вкладка "Upload a Patch") Но, как показал опыт, эта обновлялка часто отказывается работать по совершенно непонятным причинам. Поэтому не будет большого криминала, если мы извлечем из архива все файлы (все они будут внутри папки administrator) кроме "update.xml", так как он не содержит ничего интересного; и скопируем эти файлы прямо в корень сайта. Причем, при копировании скажем заменять существующие файлы новыми.
После этого идем в меню Virtuemart "Configuration" ("Конфигурация") и просто сохраняем текущее состояние.
И второй шаг – обновляем с версии 1.1.1 до последней на данный момент стабильной версии – 1.1.4 Скачать обновление Virtuemart 1.1.1 - 1.1.4 (Скачан 119 раз)
Производим те же самые действия, что и с прошлым пакетом обновления: разархивировать, скопировать в корень сайта с заменой и сохранить конфигурацию через меню магазина.
Но на этом приключения не кончаются.
Доводка напильником
Так как Virtuemart – система сделанная по принципу "Строили сарай, а получился небоскреб", множество "костылей" системы преподносятся как "фичи" и частенько приходится доставать напильник и доводить систему до кондиции.
Сразу же после последнего обновления вы можете обнаружить, что ваш магазин просто лежит. Кроме того, может лечь даже весь сайт. А если включить отображение ошибок на сервере, то мы увидим фатал еррор (Fatal error: Call to undefined method ps_function::checkFuncPermissions()), который как бы говорит нам, что настало время собственноручно помочь слонику по кличке Virtuemart подняться.
Открываем в блокноте (или в любом другом девелоперском редакторе, но только не в Ворде!) файл /components/com_virtuemart/virtuemart_parser.php и в строке номер 190 (или 193) находим такой код:
$funcParams = $ps_function->checkFuncPermissions( $func );
и меняем имя метода на getFuncPermissions. То есть, в результате должно получиться:
$funcParams = $ps_function->getFuncPermissions( $func );
Сохраняем файл, вздыхаем с облегчением. Самое смешное, что на заморских форумах люди встречались и с обратной ситуацией, когда для решения проблемы нужно было переименовать метод из getFuncPermissions в checkFuncPermissions.
Облегчение и релаксация
Ну, поздравляю вас! Вы справились и прошли этот квест! Теперь вам остались сущие пустяки – настроить по своему желанию сам Joomla-сайт, по желанию доустановить компоненты, модули, плагины, шаблоны и языки.
Желаю вам удачи в нелегком деле сайтостроительства и веб-предпринимательства!
–
Видео для релаксации после трудов праведных: Вампирское зеркало
Да, не тольков интернет-магазинах делаются деньги, но даже на приколах и розыгрышах.
16 декабря 2009
Alecfyz
Категории
Теги записи: 

neyron, Всегда пожалуйста. Обращайтесь.
Спасибо. За столь подробное разъяснение. В моём случае надо было поменять с \»get\» на \»check\» в virtuemart_parser.php.