Без перерывов и выходных! 10:00 - 19:30 (пн-пт), 12:00 – 17:00 (сб-вс)
Х

Уважаемые клиенты!

Скидка 15% в честь открытия филиала!

Открылся филиал сервисного центра КомпЛайн в микрорайоне Южный по адресу ул. Софьи Перовской д.54.

Рады встретить Вас в нашем новом офисе.

Приходите!

Перенос статей из CMS Joomla на MODx

ГлавнаяСтатьиСайты и оптимизацияПереход с Joomla на MODx, перенос joomla, статьи
Переход с Joomla на MODx, перенос joomla, статьи

Переход с Joomla на MODx

Joomla как cms сама по себе хороша, но всегда есть что-то лучше. Выбор CMS для сайта это актуальный вопрос в интернете. Какую выбрать CMS, на чем сделать свой сайт….  Популярность этих вопросов и поиска на них ответов была и остается на высоте.

Освоив джумлу со всеми ее достоинствами и дырами, многим хочется чего то нового, более быстрого, простого в управлении и доработке, а главное более защищенного в плане взлома сайта. Кто имеет (имел) сайт на joomla, наверняка имел прецеденты со взломом. Тут джумла конечно хромает. Хотя ее разработчики стараются и латают все обнаруженные дыры.

Достаточно про jooml'у. Рассмотрим как можно осуществить перенос Joomla статей на другой CMS. Итак вы уже решили переезжать с нее на новый CMS кстати, MODx это не CMS а CMF (Content Manager Framework). Еели есть потребность в переносе всех статей со старого сайта, и если у вас их очень много, то копировать ручками будет делом достаточно муторным и долгим. Это можно ускорить. В интернете по запросу «переход с Joomla на Modx» вы сможете найти только один полезный совет с куском кода. Что бы им воспользоваться и написана данная статья.

Скачать скрипт переноса.

Для того чтобы его использовать, в него нужно добавить строки подключения БД обоих CMS. Исходной – откуда копируем и конечной – куда копируем. Чтобы не парится, я выкладываю рабочий дописанный  файл.

Для использования данного скрипта  необходимы минимальные знания работы с php. Данный скрипт можно использовать и настроить под свой конкретный случай. Можно также использовать его для переноса статей из других cms. Так как принцип работы все цмс основанных на базе данных один и тот же. Отличия лишь в строении и названиях таблиц БД.

Разумеется лучше производить эксперименты с копирование на localhost под управлением denwer.

Предварительно создав бекап обоих баз.

Суть скрипта в том, что он в цикле копирует каждую строку с материалом из первой базы во вторую. Таким образом можно копировать практически любые объемные данные из одной базы в другую, и осуществить быстрый (относительно ручной работы) перенос Joomla статей на MODx (как в нашем примере).

 

Еще есть один ньюанс, касаемый проиндексированных URL вашего сайта. Для сохранения проиндексированных ссылок в поисковых системах, при смене системы управления (cms) нужно максимально сохранять прежние адреса страниц.  Как с помощью данного скрипта сделать копирование полностью, со старыми УРЛами я до конца не разбирался. Начал искать, но израсходовав прилично времени, решил сделать это вручную. Параллельно наводя порядок в контенте сайта.

Таблица БД Joomla

перенос joomla 

Таблица БД MODx

Переход с Joomla

Краткие комментарии данного скрипта, чтобы проще было понять как он работает

подключение к серверу первой  базы данных 'localhost' – имя сервера , 'root' – имя пользователя БД сервера, 'pass' – пароль к базе данных

   
?php
$a=array();
$i=0;
 $OnConnectServer = mysql_connect('localhost','root', 'pass') ;
   
 or die ('Not connected : ' .mysql_error());
mysql_select_db('delete',$OnConnectServer);-подключение к базе данных с именем 'delete'
$query="SELECT* from jos_content order by id"; - создаем запрос на отбор из таблицы;
jos_content» в которой содержатся статьи (articles) БД joomla

 

$res =mysql_query($query);
while($row=mysql_fetch_array($res)){
$a[$i]['id']=$row['id'];
$a[$i]['pagetitle']=($row['title']);
$a[$i]['content']=($row['introtext']);
$a[$i]['longtitle']=($row['metakey']);
$a[$i]['description']=($row['metadesc']);
$a[$i]['alias']=($row['alias']);
$a[$i]['content']=($row['introtext']);
$a[$i]['createdon']=strtotime($row['created']);
$i++;

Данный блок из выше назначенной таблицы по столбикам копирует значения и присваивает их переменным, и которых позднее будет вставлять во вторую базу. В этом блоке настраивается отбор строк которые нужно копировать во вторую базу.

Следующий этап - копирование во вторую базу

$OnConnectServer= mysql_connect('localhost', 'root', '') – подключение к серверу второй  базы данных
 or die ('Not connected : ' .mysql_error());
mysql_select_db('modx2',$OnConnectServer);
foreach ($aas $v){
$query="SELECT * from modx_site_content
where id='$v[id]'";
$res = mysql_query($query);
if (mysql_num_rows($res) != 0){
 continue;}
$query="INSERT INTO modx_site_content –

Данный фрагмент начинает вставлять скопированные значения из первой базы в таблицу modx_site_content» второй базы (MODx)

(id, type,contentType, pagetitle, longtitle, description, alias, published, parent,
isfolder, introtext, content, richtext, template, menuindex, searchable, cacheable,
createdby, createdon, editedby, editedon, deleted, deletedon, deletedby,
publishedon, publishedby, donthit, haskeywords, hasmetatags, privateweb,
privatemgr, content_dispo, hidemenu) VALUES

($v[id],'document','text/html','$v[pagetitle]','$v[longtitle]','$v[description]','$v[alias]',1,69,0,'$v[introtext]','$v[content]',1,6,7,1,0,1,$v[createdon],1,$v[createdon],0,0,0,$v[createdon],1,0,0,0,0,0,0,0)";

Так как таблица в которой хранятся материалы MODx содержит множество других значений, помимо Названия, тегов, текста, все эти поля обязательны к заполнению определенными значениями, либо значениями по умолчанию.

mysql_query($query);
$query="insert into
modx_site_tmplvar_contentvalues (tmplvarid,contentid,value) VALUES
(1,$v[id],'news')";
mysql_query($query);
}
?;


Ваши вопросы и комментарии

Виктор 12 дек 2016 в 13:02 # Ответить

Вы можете перенести сайт с Джумлы на модх?
Сколько займет времени?
Стоимость работ?

ОтменитьОставьте ваш вопрос