it-swarm.com.de

Erstellen Sie Kategorien, Unterkategorien und Artikel mit PHP

Ist es möglich, Joomla-Kategorien, Unterkategorien und Artikel mithilfe von PHP Skripten dynamisch zu erstellen?

Gibt es einen Beispiellink?

10
useruseruser

Dies ist ein ziemlich umfangreicher Vorgang, aber hier ist eine verkleinerte Version des Codes, den ich normalerweise verwende. Ich kann nicht unbedingt garantieren, dass es so läuft, wie es dargestellt ist, da ich einige interne Dinge herausgerissen habe, die wir auf dem Weg machen, aber das sind die Teile, die Sie brauchen, um es zu tun.

Sie müssen sich die Tabellen #__categories Und #__content Ansehen, um alle Felder zu erhalten, die Sie ausfüllen möchten, und sie den angegebenen Arrays $category_data Und $article_data Hinzufügen .

Ich sollte erwähnen, dass Sie könnte es schaffen, die Datensätze mit jDatabase oder jTable einzufügen, aber ich würde dies im Allgemeinen nicht empfehlen, da das Wichtige, was Sie vermissen würden, die integrierten Joomla-Regeln und -Logik sind Dazu gehören das Überprüfen der Eindeutigkeit des Alias ​​und das Verwalten der ACL für die neuen Inhaltselemente.

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

Es gibt mindestens eine Erweiterung, "OSContent", im Joomla-Erweiterungsverzeichnis, die Sie als Beispiel verwenden können:

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

Mit OSContent können Sie Artikel und Kategorien in großen Mengen erstellen.

3
Neil Robertson