Перейти к основному содержанию

Как перенести сайт с Joomla! на Drupal и при этом сохранить число просмотров статей

11.11.2017

Пользователи CMS Drupal, имевшие опыт миграции сайта с Joomla!, наверняка знают о существовании модуля, который раньше позволял перенести сайт с Джумлы на Друпал легко и безболезненно. Однако после выхода новых версий Joomla! этот модуль для Drupal считается устаревшим и со своей задачей уже не справляется.

Сейчас один из самых простых способов перейти с Joomla! на Drupal — использование модуля Feeds. С его помощью можно импортировать категории материалов сайта Joomla!, сами материалы и данные пользователей сайта.

Принцип прост: из базы данных Джумлы экспортируем контент, например, в файл формата CSV, а затем модулем Feeds помещаем содержимое файла в базу Друпала.

Мы не будем вдаваться в подробности настройки и использования модуля Feeds, но остановимся на нюансе, который может поставить в тупик людей, не достигших пока 80-го уровня в программировании.

Как перейти с Джумлы на Друпал и не потерять количество просмотров статей?

По умолчанию модуль Feeds этого не умеет. Дело в том, что Joomla! хранит число просмотров в той же таблице базы данных, что и остальные атрибуты статей — заголовок, текст, имя автора, дату создания и прочее. А Drupal в свою очередь сохраняет количество просмотров статей в особой таблице базы — «node_counter». И Feeds при импорте материалов из Джумлы в Друпал просто-напросто не знает, какому полю в таблице можно сопоставить поле «hits». Нет в таблице со статьями такого поля.

Почему это вообще может быть важно? Ну, например, ваш сайт существует 10 лет, число просмотров статей исчисляется миллионами, и вам не хочется при миграции с Joomla! на Drupal обнулить счетчик. Или у вас на сайте под Joomla! висел рейтинг самых читаемых материалов, и вы хотите его сохранить после смены движка.

«УпраВЕБ» подготовил небольшую инструкцию для тех, кто не знает, как решить такую проблему. Отметим, что это решение — не единственное, однако одно из самых легких. Для примера используем Joomla! 3.8 и Drupal 7.

Итак. Вы уже импортировали модулем Feeds категории материалов, они успешно превратились в термины таксономии Друпала, и теперь вы готовы «скормить» модулю Feeds файл .csv, содержащий сами статьи, экспортированные из базы данных Джумлы.

Стоп. Не спешите.

Сначала убедитесь, что у вас включен модуль Statistics. Именно он отвечает за подсчет просмотров статей в Drupal. Кроме того, пока модуль Statistics не включен в первый раз, в базе данных Drupal не появится нужная нам таблица node_counter.

После этого идем в настройки типа материалов, который планируем назначить импортируемым статьям — вероятнее всего, это «Статья (Машинное имя: article)» — и на странице «Управление полями» добавляем новое поле — Hits.

Типом данных этого поля указываем «Целое число», сохраняем, остальные настройки поля оставляем по умолчанию.

Теперь переходим к настройкам импорта. На вкладке Mapping в списке вариантов подстановки у нас появилась новая строчка: «Hits (field_hits)». Если не появилась, обновите кэш Друпала. Указываем имя источника — hits, поле для хранения данных — «Hits (field_hits)». Сохраняем.

После этого можно спокойно настроить все, что еще не настроено, и импортировать модулем Feeds данные из заготовленного файла. Если вы все сделали правильно, то у каждой импортированной статьи появится поле Hits, отображающее число, соответствующее числу просмотров:

Теперь осталось безжизненные цифры превратить в реальное число просмотров ваших статей, перенесенных с Joomla! на Drupal.

Для этого заходим в панель управления базой данных Друпала и выполняем следующий SQL-запрос (в двух местах заменив «имя_базы_данных» на имя вашей БД):

REPLACE INTO `имя_базы_данных`.`node_counter` (`nid`, `totalcount`)
SELECT `entity_id`, `field_hits_value`
FROM `имя_базы_данных`.`field_data_field_hits` ;

После этого видим, что число просмотров стало соответствовать данным из поля Hits:

Теперь, если вы не сделали этого ранее, в настройках модуля Statistics установите галочку «Подсчитывать просмотры материалов»:

А поле «Hits», которое мы добавили типу материала «Статья», теперь можно спокойно удалить, оно свою функцию выполнило и больше нам не нужно: