Программное создание материала
Более новый вариант
$newapp = JFactory::getApplication();
$mvcFactory = $newapp->bootComponent('com_content')->getMVCFactory();
$articleModel = $mvcFactory->createModel('Article', 'Administrator', ['ignore_request' => true]);
$title_article = 'My Article title';
$article = [
'catid' => 2,
'title' => $title_article,
'introtext' => 'My Article Intro Text',
'fulltext' => 'My Article Full Text',
'state' => 1,
'language' => '*',
'com_fields' => [
'field-name' => 'field value',
],
];
if (!$articleModel->save($article)){
throw new Exception($articleModel->getError());
}
// При этом, нужно обязательно быть залогиненым как админ. Или под другим аккаунтом, позволяющм редактировать поля.
Старый вариант
//Получаем объект базы данных
$db
= JFactory::getDbo();
//Создаем объект таблички #__content
$contentTable
=
new
JTableContent(
$db
);
//Определяем идентификатор пользователя от которого будет создан материал
$userid
= JFactory::getUser()->guest ? 472 : JFactory::getUser()->id;
//Данные материала
$dataContent
=
array
(
'title'
=>
'Новый материал'
,
'alias'
=>
'new-article'
,
'catid'
=> 2,
//Идентификатор категории в которой создадим материал
'state'
=> 1,
//Указываем что материал опубликован
'introtext'
=>
'Вступительный текст нового материала'
,
'fulltext'
=>
'Продолжение теккста нового материала'
,
'created'
=>
date
(
'Y-m-d H:i:s'
),
'publish_up'
=>
date
(
'Y-m-d H:i:s'
),
'created_by'
=>
$userid
,
'metakey'
=>
'Ключевые слова'
,
'metadesc'
=>
'Описания'
,
'featured'
=> 1
//Если хотим что бы материал был в избранном
);
//Вносим данные в таблицу
$contentTable
->bind(
$dataContent
);
//Проверяем или данные корректны
if
(
$contentTable
->check() ) {
//Создаем новую запись
$contentTable
->store();
}