0 Пользователей и 1 Гость просматривают эту тему.
  • 4 Ответов
  • 298 Просмотров
*

kristow

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

Wertos

  • Завсегдатай
  • 505
  • 21
Re: создание материала удаленно
« Ответ #1 : 20.07.2016, 18:22:25 »
Примерно так, подставляй свои данный и вперёд
Код: php
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

  • Новичок
  • 9
  • 0
Re: создание материала удаленно
« Ответ #2 : 21.07.2016, 12: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

  • Завсегдатай
  • 505
  • 21
Re: создание материала удаленно
« Ответ #3 : 21.07.2016, 15: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

  • Новичок
  • 9
  • 0
Re: создание материала удаленно
« Ответ #4 : 25.07.2016, 11: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
и понял где ошибка :)
Спасибо.
« Последнее редактирование: 25.07.2016, 11:43:20 от kristow »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Сохранение данных из элементов формы внутри редактора материала

Автор step-di

Ответов: 0
Просмотров: 37
Последний ответ 01.09.2017, 09:36:56
от step-di
заголовок материала в шаблоне

Автор joy smile

Ответов: 1
Просмотров: 54
Последний ответ 30.08.2017, 20:20:13
от voland
Создание категорий для компонента

Автор ChervonStudio

Ответов: 6
Просмотров: 100
Последний ответ 29.08.2017, 11:56:50
от robert
3.5 сброс пароля или создание нового...

Автор boxrin

Ответов: 12
Просмотров: 158
Последний ответ 23.08.2017, 14:14:45
от SeBun
Создание компонента, отправка запроса, но куда?

Автор ChervonStudio

Ответов: 2
Просмотров: 43
Последний ответ 23.08.2017, 13:34:04
от Septdir