Форум русской поддержки Joomla!® CMS
08.12.2016, 10:02:58 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

создание материала удаленно

 (Прочитано 137 раз)
0 Пользователей и 1 Гость смотрят эту тему.
kristow
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 10


« : 19.07.2016, 10:37:54 »

Добрый день.
Подскажите пожалуйста как можно не заходя в панель управления, удаленно создавать новый материал, и создавать меню с привязкой на этот материал?
т.е. я хочу с помощью php скрипта делать выборку из своей базы, и скриптом создавать материал, и публиковать в меню с привязкой к материалу.
Подскажите как это сделать?  ! Чтобы не клацать долго и нудно по админ панели...
Может по SQL запросу? Или может какой-то api есть для Joomla?
Или готового решения нет?
Записан
Wertos
Завсегдатай
*****

Репутация: +21/-0
Offline Offline

Пол: Мужской
Сообщений: 543


« Ответ #1 : 20.07.2016, 19:22:25 »

Примерно так, подставляй свои данный и вперёд
Код
define( '_JEXEC', 1 );
define('JPATH_BASE', realpath(dirname(__FILE__)));
require_once ( JPATH_BASE .'/includes/defines.php' );
require_once ( JPATH_BASE .'/includes/framework.php' );
$basePath = JPATH_ADMINISTRATOR.'/components/com_content';
require_once $basePath.'/models/article.php';
 
$img_arr['image_intro'] = '';
$img_arr['float_intro'] = '';
$img_arr['image_intro_alt'] = '';
$img_arr['image_intro_caption'] = '';
$img_arr['image_fulltext'] = '';
$img_arr['float_fulltext'] = '';
$img_arr['image_fulltext_alt'] = '';
$img_arr['image_fulltext_caption'] = '';
 
$articles_arry['catid'] = '';
$articles_arry['created_by'] = 0;
$articles_arry['title'] = '';
$articles_arry['alias'] = JFilterOutput::stringURLSafe(JString::trim(JLanguage::getInstance('ru-RU')->transliterate($title)));
$articles_arry['introtext'] = '';
$articles_arry['fulltext'] = '';
$articles_arry['images'] = json_encode($img_arr);
$articles_arry['state'] = 1;
$articles_arry['urls'] = '{"urla":false,"urlatext":"","targeta":"","urlb":false,"urlbtext":"","targetb":"","urlc":false,"urlctext":"","targetc":""}';
$articles_arry['attribs'] = '{"show_title":"","link_titles":"","show_tags":"","show_intro":"","info_block_position":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","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_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}';
$articles_arry['metadata'] = '{"robots":"","author":"","rights":"","xreference":""}';
$articles_arry['language'] = '*';
$articles_arry['created'] = JHTML::Date(time(), 'Y-m-d H:i:s');
$articles_arry['metakey'] = '';
 
createArticle($articles_arry);
 
function createArticle($data)
{
   global $article_model;
 
   $data['rules'] = array(
       'core.edit.delete' => array(),
       'core.edit.edit' => array(),
       'core.edit.state' => array(),
   );
   if(!$article_model->save($data))
   {
       $err_msg = $article_model->getError();
       echo JText::_($err_msg)."\n";
       return false;
   }
}
 
Записан
kristow
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 10


« Ответ #2 : 21.07.2016, 13:45:18 »

Спасибо большое за ответ  Wertos
Вставил скрипт в сайт. При запуске выдает ошибку: PHP Fatal error:  Cannot redeclare class ContentModelArticle in \administrator\components\com_content\models\article.php on line 22
Я так понимаю пример кода не для Joomla 3.5 ?
Записан
Wertos
Завсегдатай
*****

Репутация: +21/-0
Offline Offline

Пол: Мужской
Сообщений: 543


« Ответ #3 : 21.07.2016, 16:16:28 »

Спасибо большое за ответ  Wertos
Вставил скрипт в сайт. При запуске выдает ошибку: PHP Fatal error:  Cannot redeclare class ContentModelArticle in \administrator\components\com_content\models\article.php on line 22
Я так понимаю пример кода не для Joomla 3.5 ?
У меня с 3.4 до 3.7 Dev работает !
И зачем его в сайт вставлять, это для отдельного PHP файла !
Записан
kristow
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 10


« Ответ #4 : 25.07.2016, 12:21:29 »

Я проверил пути через print:
Код:
define( '_JEXEC', 1 );
define('JPATH_BASE', realpath(dirname(__FILE__)));
require_once ( JPATH_BASE .'/includes/defines.php' );
require_once ( JPATH_BASE .'/includes/framework.php' );
$basePath = JPATH_ADMINISTRATOR.'/components/com_content';
print JPATH_BASE.'<br>';
print JPATH_ADMINISTRATOR.'<br>';
print $basePath.'<br>';
require_once $basePath.'/models/article.php';
Все верно. Но мне все равно выдает ошибку PHP Fatal error:  Call to a member function save() on a non-object in \material_new.php on line 45
У меня 45 строка это: if(!$article_model->save($data))
Сейчас тестил скрипт без вставки в сам код Joomla, как отдельный файл...
У меня кстати php5.5 - может поэтому ваш код у меня не работает?

P.S. нашел ваш пост http://joomlaforum.ru/index.php/topic,321011.msg1601561.html#msg1601561
и понял где ошибка Azn
Спасибо.
« Последнее редактирование: 25.07.2016, 12:43:20 от kristow » Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet