it-swarm.dev

PHPを使用してカテゴリ、サブカテゴリ、記事を作成する

PHPスクリプトを使用して、Joomlaカテゴリ、サブカテゴリ、および記事を動的に作成することは可能ですか?

リンクの例はありますか?

10
useruseruser

これを行うにはかなり広範囲にわたるプロセスですが、ここでは、私が一般的に使用するコードの縮小バージョンを示します。私たちが途中で行う内部の要素の束を取り除いたので、それが示されているように動作することを必ずしも保証しませんが、これらはあなたがそれを行うために必要な部分です。

入力するすべてのフィールドを取得し、それらを特定の#__categoriesおよび#__content配列に追加するには、テーブル$category_dataおよび$article_dataを調べる必要があります。

couldは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;
    }
}
15
GDP

Joomla拡張機能ディレクトリには、例として使用できる少なくとも1つの拡張機能「OSContent」があります。

http://extensions.joomla.org/extensions/miscellaneous/mass-content/180

OSContentを使用すると、記事とカテゴリをまとめて作成できます。

3
Neil Robertson