CFI - экспорт/импорт материалов Joomla

CFI - экспорт/импорт материалов Joomla

Скачивания 14 Просмотры 11 CTR 127% Plg Free

Экспорт и импорт материалов Joomla в CSV: массовое редактирование meta description, пользовательских полей, тегов и свойств материалов быстро и удобно.

CFI - экспорт/импорт материалов Joomla

Описание

Плагин позволяет делать экспорт материалов Joomla в CSV файл, после чего вы можете отредактировать данные в табличном редакторе (например, Exel или Open Office Calc) и затем загрузить файл обратно. В некоторых случаях это удобнее и быстрее. Плагин позволяет выгружать id тегов, а так же работать с пользовательскими полями материалов Joomla, а так же обычно нередактируемыми свойствами материалов: просмотры, дата изменения и т.д.

Когда использовать экспорт и импорт материалов Joomla?

Массовое (пакетное) обновление meta description

Вы хотите изменить содержимое тега meta description для материалов выбранных категорий для сайта на Joomla. Заходить в каждый материал, изменять, сохранять - это долго. Экспорт и импорт - быстрее. Есть, конечно, WT SEO Meta templates, но вдруг вы им не пользуетесь или он не подходит под ваши задачи.

Пакетное изменение полей материалов Joomla

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

Перенос данных между Joomla сайтами

Вы можете экспортировать материалы на одном сайте и перенести их на другой, предварительно отредактировав.

Время выполнения импорта/экспорта и объёмы материалов Joomla

PHP-скрипту устанавливается лимит 0. Далее на временные лимиты влияют параметры самого веб-сервера:

  • Nginx (fastcgi_read_timeoutproxy_read_timeoutclient_body_timeout),
  • Apache (TimeoutProxyTimeout),
  • PHP-FPM (request_terminate_timeout),

из-за чего скрипт может прекратить свою работу по инициативе веб-сервера.

Экспорт выполняется быстрее, чем импорт. Скорость импорта на слабом сервере может колебаться от 3–4 до 10 материалов в секунду. Объём экспорта на слабом сервере может составлять до нескольких десятков тысяч материалов с учётом пользовательских полей. На тестах 14 000 материалов без пользовательских полей выгружалось чуть меньше 1,5 минут.

Большое влияние имеет количество импортируемых свойств материала, есть ли среди них нередактируемые свойства (hitsmodified и т. д.), а также количество пользовательских полей. Чем больше пользовательских полей, тем медленнее происходит импорт.

Рекомендуется подобрать оптимальное количество импортируемых данных опытным путём, а большое количество материалов импортировать по частям, так как длительные тяжёлые процессы обычно выполняются в CLI-интерфейсе.

Как проходит экспорт материалов Joomla?

При экспорте вы можете выгрузить до нескольких десятков тысяч материалов.

Фильтрация материалов Joomla

При экспорте учитываются фильтры материалов панели администратора Joomla (параметры поиска). Вы можете выгрузить материалы только одной или нескольких выбранных категорий, только избранные, только опубликованные, только с определёнными тегами и так далее.

Параметр количество элементов на странице влияет на количество материалов в «пачке», выгружаемых из базы данных за раз.

Свойства материала Joomla для экспорта

В окне экспорта вы можете выбрать, какие именно свойства материала (titlecatid и т. д.) выгружать. Всем свойствам материала добавляется префикс article: id → articleid.

Свойства материала используются в качестве заголовков таблицы. Свойство материала id выгружается всегда. Дополнительно к свойствам материала можно выгрузить id тегов.

Пользовательские поля материала Joomla

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

Пользовательские поля материалов могут принадлежать разным категориям. Убедитесь, что все выбранные категории имеют одинаковый набор полей.

Если часть пользовательских полей принадлежат всем категориям, а часть — только одной категории, то экспорт объединит эти поля в одну таблицу.

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

Пример

Вы можете выбрать только id материала и нужные вам пользовательские поля. Импорт затем корректно обработает такую таблицу.

Как происходит импорт Joomla?

С помощью импорта вы можете создавать новые материалы или обновлять существующие. Столбец articleid в таблице импорта используется как идентификатор материала.

Если в таблице импорта в столбце articleid пустота или 0, то импорт создаст новый материал. Если значение есть, то будет обновлён материал с указанным articleid.

Создание новых материалов Joomla из импорта

Если для новых материалов не указана категория (отсутствует столбец catid или он пустой), то импорт создаст материал в категории по умолчанию (первая категория в списке). Для нового материала обязательно поле articletitle (заголовок материала).

Обновление материалов Joomla из импорта

Для обновления материалов обязательно поле articleid. В остальных столбцах можно указывать любые свойства материала, которые вы можете увидеть в форме создания материала, включая даже нередактируемые (hits — количество просмотров, modified — дата последнего изменения и т. д.).

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

Формат данных должен быть таким же, какой предусматривают эти поля: в некоторых случаях это обычные строки, а в некоторых — массивы или json.

Возможная ошибка: Недопустимый тип файла text/html

При импорте возможна ошибка "Неверный тип файла" и "Недопустимый тип файла text/html", где вместо text/html могут быть указаны и другие типы. Импорт проверяет типы загружаемых файлов из соображений безопасности. Данная ошибка связана с некорректным MIME-типом файла, который в данном случае зависит от настроек сервера. Правильный MIME-тип для csv файла - text/csv или text/plain. Если при скачивании с сервера csv файла ему присваивается MIME-тип по умолчанию (text/html), то стоит обратиться в техническую поддержку вашего хостинга или к администратору сервера для корректной настройке MIME-типов.

Либо же изменить настройки Медиа-менеджера Joomla:

  • вы можете добавить этот MIME-тип в разрешённые в настройках стандартного Медиа-менеджера (меню Контент - Медиа-менеджер - настройки)
  • или отключить проверку MIME-типов вообще (не рекомендуется).

Разработчикам

При импорте и экспорте вы можете обрабатывать данные с помощью собственных плагинов. Создайте плагин группы cfi. Вызов плагина происходит в изолированном диспетчере, поэтому все остальные плагины не будут вызваны, даже системные.

Импорт

Добавьте в плагин событие onImportPrepareArticleData($event). Событие вызывается при импорте для каждой строки импортируемой таблицы.

Вы можете получить данные:

  • $columns = $event->getArgument('columns');
  • $strNum = $event->getArgument('strNum');
  • $article = $event->getArgument('article');

Вернуть обработанные данные обратно в процесс импорта:

  • $event->setArgument('article', $article);

Необходимо, чтобы количество столбцов в массиве $columns совпадало с количеством столбцов в массиве $article. Иначе будет ошибка.

В $strNum хранится номер строки в таблице импорта.

Экспорт

Добавьте в плагин событие onExportPrepareData($event). Экспорт получает список материалов из модели с list.limit согласно настройкам. Событие вызывается при экспорте для каждой страницы пагинации списка материалов.

Вы можете получить данные:

  • $columns = $event->getArgument('columns'); — выгружаемые данные, заголовки таблицы
  • $articles = $event->getArgument('articles'); — массив с полными данными материалов

Вернуть обработанные данные обратно в процесс экспорта:

  • $event->setArgument('articles', $articles);

В $articles хранится массив с данными материалов.

Описание формата файла

Данные экспортируются в файл и импортируются из файла формата CSV с обязательным разделителем ;.

Кодировка файла по умолчанию, если не установлена опция «Преобразовывать кодировку…»: UTF-8 без BOM. Поддерживается автоматическое преобразование кодировки, указанной в единственной настройке плагина.

Первая строка файла всегда представляет собой заголовки полей файла.

Поле articleid является обязательным, при его отсутствии импорт данных из файла не производится.

Любые иные имена полей принимаются за имена пользовательских полей материала. В случаях отсутствия у материала указанных пользовательских полей последние будут игнорироваться.

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

Данные об ошибках импорта хранятся в логе cfi.php в стандартной папке логов Joomla!.

При отсутствии ошибок импорта данных импортируемый файл удаляется, в противном случае файл сохраняется в стандартной папке временных файлов Joomla!.

Формат данных

При экспорте данные записываются в файл как есть, в том формате, в котором они хранятся в БД вашего сайта: простой текст, текст с разметкой HTML, структуры json, иные сложные строковые структуры.

Для стандартных настраиваемых полей Joomla! списочного типа, возвращающих структуры хранимых данных в виде неассоциированных массивов, в результирующий файл возвращается json. Для нестандартных полей в файл перед json-значением записывается структура array::: это необходимо для того, чтобы при возможном последующем импорте этих данных плагин смог разобрать json-значение из файла и подставить соответствующему полю подготовленный массив. Если из вышеуказанной фразы вы ничего не поняли – не страшно, просто не трогайте значение array:: в вашем файле или удалите этот столбец полностью во избежание повреждения данных соответствующего поля материала.

Защита данных при импорте

Данные при импорте проходят валидацию Joomla, а так же могут быть обработаны сторонними плагинами группы cfi.

Разработчик плагина не несёт ответственность за некорректное содержимое импортируемых файлов, которое может вывести из строя ваш сайт.

Joomla

Тип расширения:
Плагин
Каталог:
System
Версия Joomla:
6.0.2

Что нового

Добавлено

Рефакторинг

Плагин полностью переписан заново.
Добавлено

Новый интерфейс импорта/экспорта

Экспорт и импорт открывается в модальном окне. Появился функционал выбора свойств материала, тегов и пользовательских полей для экспорта непосредственно перед самим экспортом.
Добавлено

Фильтрация материалов при экспорте

Вы можете отфильтровать нужные вам материалы с помощью стандартных параметров поиска в панели администратора, а потом экспортировать только их: только избранные, только опубликованные, только материалы 2-х категорий, только материалы с определённым тегом и т.д.
Добавлено

Импорт/экспорт всех данных материала

При экспорте и импорте вы можете изменять все данные материала, которые можете найти в форме редактирования материала. Даже нередактируемые, такие как просмотры или дата изменения.
Добавлено

Импорт только пользовательских полей

Для импорта обязательным полем осталось только articleid. Таким образом вы можете импортировать только данные пользовательских полей, не изменяя данные самого материла.
Добавлено

Joomla 6

Плагин переписан с актуальной для Joomla 4+ структуре и успешно протестирован на Joomla 6.
Добавлено

Разработчикам: предобработка плагинами

Вы можете обрабатывать данные собственными плагинами на лету непосредственно перед импортом или экспортом данных.

Расширения Joomla WebTolk

101 Всего расширений
12 Категорий
512 Выпущено версий
625875 Всего скачиваний
Корзина
Корзина пуста