Добавление постов Joomla из нестандартного csv

от 2019 - 03 - 11

Все записи Joomla хранятся в таблице #_content (в нашем случае joom_content).
Начнем разбирать наш csv файл. Для этого в php существует функция str_get_csv().

$csv = file_get_contents('csv/TBL_EVENTS.csv');
$csv = str_getcsv($csv, '|');

В нашем случае в cvs использовался знак «|» как разделитель.
Далее переберем полученный массив и сформируем удобный для формирования sql-запроса.

for ($i = 8; $i <= count($csv); $i++) {
	$arr['id'] = (int)str_replace('"', '', $csv[$i]);
	$i++;
	$arr['tittle'] = $csv[$i];
	$i += 2;
	$arr['content'] = strip_tags($csv[$i]);
	$i += 2;
	$arr['date'] = $csv[$i];
	$i += 2;
	$arr['source'] = $csv[$i];

	$arrImport[] = $arr;
}

Оператор foreach не подошел в этом случае, так как требовалось пропустить ненужные поля.

Далее сформируем типичный для добавления постов в Joomla sql-запрос

foreach ($arrImport as $article) {
	$sql = "INSERT INTO `joom_content` (`id`, `asset_id`, `title`, `alias`, `introtext`, `fulltext`, `state`, `catid`, `created`, `created_by`, `created_by_alias`, `modified`, `modified_by`, `checked_out`, `checked_out_time`, `publish_up`, `publish_down`, `images`, `urls`, `attribs`, `version`, `ordering`, `metakey`, `metadesc`, `access`, `hits`, `metadata`, `featured`, `language`, `xreference`, `note`) VALUES (NULL, '0', '$article[tittle]', '', '', '$article[content]', '1', '103', '$article[date]', '956', '', '$article[date]', '956', '0', '0000-00-00 00:00:00.000000', '$article[date]', '0000-00-00 00:00:00.000000', '{\"image_intro\":\"images\\/demo\\/news\\/$article[image]\",\"float_intro\":\"\",\"image_intro_alt\":\"\\u0412 \\u043e\\u0441\\u043d\\u043e\\u0432\\u0435 \\u0440\\u043e\\u0441\\u0441\\u0438\\u0439\\u0441\\u043a\\u043e\\u0439 \\u043d\\u0430\\u0446\\u043f\\u043e\\u043b\\u0438\\u0442\\u0438\\u043a\\u0438 \\u2013 \\u043f\\u0440\\u0438\\u043d\\u0446\\u0438\\u043f\\u044b \\u043a\\u043e\\u043d\\u0441\\u043e\\u043b\\u0438\\u0434\\u0430\\u0446\\u0438\\u0438 \\u0438 \\u0443\\u0432\\u0430\\u0436\\u0435\\u043d\\u0438\\u044f\",\"image_intro_caption\":\"\",\"image_fulltext\":\"images\\/demo\\/news\\/$article[image]\",\"float_fulltext\":\"\",\"image_fulltext_alt\":\"\\u0412 \\u043e\\u0441\\u043d\\u043e\\u0432\\u0435 \\u0440\\u043e\\u0441\\u0441\\u0438\\u0439\\u0441\\u043a\\u043e\\u0439 \\u043d\\u0430\\u0446\\u043f\\u043e\\u043b\\u0438\\u0442\\u0438\\u043a\\u0438 \\u2013 \\u043f\\u0440\\u0438\\u043d\\u0446\\u0438\\u043f\\u044b \\u043a\\u043e\\u043d\\u0441\\u043e\\u043b\\u0438\\u0434\\u0430\\u0446\\u0438\\u0438 \\u0438 \\u0443\\u0432\\u0430\\u0436\\u0435\\u043d\\u0438\\u044f\",\"image_fulltext_caption\":\"\"}', '{\"urla\":false,\"urlatext\":\"\",\"targeta\":\"\",\"urlb\":false,\"urlbtext\":\"\",\"targetb\":\"\",\"urlc\":false,\"urlctext\":\"\",\"targetc\":\"\"}', '{\"article_layout\":\"\",\"show_title\":\"\",\"link_titles\":\"\",\"show_tags\":\"\",\"show_intro\":\"\",\"info_block_position\":\"\",\"info_block_show_title\":\"\",\"show_category\":\"\",\"link_category\":\"\",\"show_parent_category\":\"\",\"link_parent_category\":\"\",\"show_associations\":\"\",\"show_author\":\"\",\"link_author\":\"\",\"show_create_date\":\"\",\"show_modify_date\":\"\",\"show_publish_date\":\"\",\"show_item_navigation\":\"\",\"show_icons\":\"\",\"show_print_icon\":\"\",\"show_email_icon\":\"\",\"show_vote\":\"\",\"show_hits\":\"\",\"show_noauth\":\"\",\"urls_position\":\"\",\"alternative_readmore\":\"\",\"article_page_title\":\"\",\"show_publishing_options\":\"\",\"show_article_options\":\"\",\"show_urls_images_backend\":\"\",\"show_urls_images_frontend\":\"\",\"helix_ultimate_image\":\"\",\"helix_ultimate_article_format\":\"standard\",\"helix_ultimate_audio\":\"\",\"helix_ultimate_gallery\":\"\",\"helix_ultimate_video\":\"\"}', '1', '0', '', '', '1', '0', '{\"robots\":\"\",\"author\":\"\",\"rights\":\"\",\"xreference\":\"\"}', '0', '*', '', '')
	";
//здесь необходимо выполнить sql-запрос любым удобным образом
}

Примечание:

поле asset_id таблицы joom_content можно задать 0, оно используется для иерархии обновления страниц.