Итак, мы имеем SQL-файл с содержимым прежней базы данных. Нам его необходимо переделать для MODx.
SQL-файл - это текстовый файл, содержащий команды на языке SQL - основном средстве для работы с базами данных. Здесь мы, конечно, не будем разбирать сам язык запросов, так как книги только по введению в SQL содержат около 1000 страниц. Будем считать, что читатели имеют об этом представление. Наша задача - переделать базу данных. Сделать это можно разными способами, например с помощью программы MySQL-Front в визуальном режиме. Но зачем нам сотни раз всякие кнопочки нажимать? Мы просто отредактируем SQL с помощью обычного текстового редактора Notepad++.Основной метод работы - Copy-Paste, а также поиск и замена.
SQL-файл выглядит примерно так:
Сначала вырабатываем общую стратегию работы.
У нас есть полностью отлаженный сайт под MODx - вот этот самый, который сейчас на экране - назовем его для краткости MX-сайт. И есть другой сайт, совершенно с иным содержимым, работавший под Etomite - назовем для краткости ET-сайт. Для ET-сайта мы имеем SQL-файл. Назовем его ET-SQL. Для MX-сайта мы тоже сделаем MX-SQL. Вот с этими файлами мы и будем далее работать.
Базы данных Etomite и MODx похожие, но всё-таки разные. Они отличаются наличием таблиц, а некоторые одинаковые таблицы отличаются структурой. Часть таблиц мы можем взять из MX-SQL, а часть (прежде всего контент сайта) мы обязаны оставить из ET-SQL.
Сведем сведения по базам данных в таблицу. В ET-SQL имена таблиц имеют префикс etomite_ (мог быть и другой), а в MX-SQL - префикс modx_ (тоже мог быть другой). Пока мы будем эти префиксы использовать, потом заменим.
Сведения о таблицах
| Таблица (без префикса) |
ET-SQL | MX-SQL |
Различия | Наши действия в ET-SQL |
| active_users member_groups membergroup_access membergroup_names site_keywords user_messages |
есть | есть | нет | Оставляем, как есть |
| categories | нет | есть | Копируем из MX-SQL, получая в ET-SQL категории ресурсов. Они у нас уже упорядочены и, хотя в Etomite не использовались, это позволит нам потом, уже в менеджере, разспределить ресурсы по категориям. | |
| document_groups | есть | есть | структура | Копируем из MX-SQL только структуру (CREATE TABLE). Таблицу document_groups не надо заполнять, иначе после правки документ, отнесенный к какой-то группе будет доступен только WEB-пользователям этой группы! В Etomite WEB-пользователей не было и действие групп распространялось только на менеджеров. |
| documentgroup_names | есть | есть | структура, добавлены два поля |
Копируем из MX-SQL структуру (CREATE TABLE), а содержимое (INSERT) корректируем, добавляя в конце два поля. Таблица маленькая, это сделать легко. Например, вместо: INSERT INTO `modx_documentgroup_names` VALUES (1,'Новости'); запишем INSERT INTO `modx_documentgroup_names` VALUES (1,'Новости',0,0); |
|
easy2_comments |
нет | есть | Это дополнительные таблицы | Копируем из MX-SQL структуру (CREATE TABLE), и содержимое (INSERT) тоже, но просто для примера - чтобы было. Не понадобится - удалим в менеджере |
|
event_log |
нет | есть | Копируем из MX-SQL структуру (CREATE TABLE) - заполнятся потом "сами". |
|
| manager_log | есть | есть | контент | Оставляем структуру (CREATE TABLE), и содержимое (INSERT)- удаляем. |
| manager_users | есть | есть | струкутра - длина поля username |
Копируем из MX-SQL структуру (CREATE TABLE), а содержимое (INSERT) оставляем неизменным. |
| site_content site_htmlsnippets site_snippets site_templates |
есть | есть | структура - значительные отличия |
Копируем из MX-SQL структуру (CREATE TABLE), а содержимое (INSERT) - очень серьезно редактируем. Об этом - отдельная заметка. |
|
site_content_metatags
|
нет | есть | Копируем из MX-SQL структуру (CREATE TABLE) | |
| site_modules site_plugin_events site_plugins site_tmplvars system_eventnames user_settings web_groups web_user_attributes web_user_settings web_users webgroup_access webgroup_names |
нет | есть | Копируем из MX-SQL структуру (CREATE TABLE) и содержимое (INSERT) | |
| system_settings user_attributes user_roles |
есть | есть | структура и содержимое |
Заменяем на скопированные из MX-SQL структуру (CREATE TABLE) и содержимое (INSERT) |
Замечание.
В ET-SQL могут обнаружиться и иные таблицы, например epg2_galleries (для одного из видов галерей).
Скорее всего, сниппеты, работающие с этими таблицами, в MODx не будут использоваться и такие таблицы можно просто удалить.
Итак, основную черновую работу мы проделали. Серьезную работу по редактированию основных таблиц (выделены цветом) мы опишем отдельно. А теперь, обычным поиском и заменой исправляем в ET-SQL:
- CHARSET=cp1251 на CHARSET=utf8
- префиксы таблиц `etomite_ на `modx_ (или какие-то другие).
Далее нам предстоит ещё много работы... Продолжение следует...
Написать комментарий