Создавайте категории, подкатегории и статьи, используя php

Возможно ли динамическое создание категорий, подкатегорий и статей Joomla с использованием PHP-скриптов?

Есть ли ссылка для примера?

8 голосов | спросил useruseruser 23 72014vEurope/Moscow11bEurope/MoscowSun, 23 Nov 2014 20:41:10 +0300 2014, 20:41:10

2 ответа


13

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

Вам нужно будет посмотреть таблицы #__categories и #__content, чтобы получить все поля, которые вы хотите заполнить, и добавить их к указанному $category_data и $article_data.

Я должен упомянуть, что вы могли выполнить его вставку записей с помощью jDatabase или jTable, но я обычно не рекомендовал бы это, потому что важная вещь, которую вам не хватало, это встроенная Joomla правила и логику, которые делают такие вещи, как проверка уникальности псевдонима и управление списком ACL для новых элементов контента.

if (!defined('_JEXEC')) {
    define( '_JEXEC', 1 );
    define('JPATH_BASE', realpath(dirname(__FILE__)));
    require_once ( JPATH_BASE .'/includes/defines.php' );
    require_once ( JPATH_BASE .'/includes/framework.php' );
    defined('DS') or define('DS', DIRECTORY_SEPARATOR);
}
$app = JFactory::getApplication('site');

$category_data['id'] = 0;
$category_data['parent_id'] = 0;
$category_data['title'] = 'My Category Title';
$category_data['alias'] = 'my-categegory-title-alias';
$category_data['extension'] = 'com_content';
$category_data['published'] = 1;
$category_data['language'] = '*';
$category_data['params'] = array('category_layout' => '','image' => '');
$category_data['metadata'] = array('author' => '','robots' => '');

$category_id = createCategory($category_data);
if(!$category_id){
    echo "Category create failed!";
}else{
    $article_data = array(
        'id' => 0,
        'catid' => $category_id,
        'title' => 'My article title',
        'alias' => 'my-article-alias',
        'introtext' => 'My intro text',
        'fulltext' => '<p>My full text</p>',
        'state' => 1,
        'language' => '*'
    );
    $article_id = createArticle($article_data);
    if(!$article_id){
        echo "Article create failed!";
    }
}

function createCategory( $data )
{
    $data['rules'] = array(
        'core.edit.state' => array(),
        'core.edit.delete' => array(),
        'core.edit.edit' => array(),
        'core.edit.state' => array(),
        'core.edit.own' => array(1=>true)
    );

    $basePath = JPATH_ADMINISTRATOR.'/components/com_categories';
    require_once $basePath.'/models/category.php';
    $config  = array('table_path' => $basePath.'/tables');
    $category_model = new CategoriesModelCategory($config);
    if(!$category_model->save($data)){
        $err_msg = $category_model->getError();
        return false;
    }else{
        $id = $category_model->getItem()->id;
        return $id;
    }
}
function createArticle($data)
{
    $data['rules'] = array(
        'core.edit.delete' => array(),
        'core.edit.edit' => array(),
        'core.edit.state' => array(),
    );

    $basePath = JPATH_ADMINISTRATOR.'/components/com_content';
    require_once $basePath.'/models/article.php';
    $config = array();
    $article_model = new ContentModelArticle($config);
    if(!$article_model->save($data)){
        $err_msg = $article_model->getError();
        return false;
    }else{
        $id = $article_model->getItem()->id;
        return $id;
    }
}
ответил GDP 23 72014vEurope/Moscow11bEurope/MoscowSun, 23 Nov 2014 21:06:44 +0300 2014, 21:06:44
2

В каталоге расширения Joomla существует, по крайней мере, одно расширение «OSContent», которое вы можете использовать в качестве примера:

http://extensions.joomla.org/extensions/miscellaneous/mass- содержание /18000

OSContent позволяет создавать статьи и категории навалом.

ответил Neil Robertson 24 12014vEurope/Moscow11bEurope/MoscowMon, 24 Nov 2014 07:15:41 +0300 2014, 07:15:41

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132