Ist es möglich, Joomla-Kategorien, Unterkategorien und Artikel mithilfe von PHP-Skripten dynamisch zu erstellen?
Gibt es einen Beispiellink?
Ist es möglich, Joomla-Kategorien, Unterkategorien und Artikel mithilfe von PHP-Skripten dynamisch zu erstellen?
Gibt es einen Beispiellink?
Antworten:
Dies ist ein ziemlich umfangreicher Prozess, aber hier ist eine reduzierte Version des Codes, den ich normalerweise verwende. Ich kann nicht unbedingt garantieren, dass es wie gezeigt läuft, da ich ein paar interne Dinge herausgerissen habe, die wir auf dem Weg machen, aber das sind die Teile, die Sie dafür brauchen.
Sie müssen sich Tabellen ansehen #__categories
und #__content
alle Felder abrufen, die Sie füllen möchten, und sie zu den angegebenen $category_data
und $article_data
Arrays hinzufügen .
Ich sollte erwähnen, dass Sie es schaffen könnten , die Datensätze mit jDatabase oder jTable einzufügen, aber ich würde dies im Allgemeinen nicht empfehlen, da das Wichtigste, was Sie vermissen würden, die integrierten Joomla-Regeln und -Logik sind, die Dinge wie das Überprüfen der Eindeutigkeit tun des Alias und 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;
}
}
Es gibt mindestens eine Erweiterung, "OSContent" im Joomla-Erweiterungsverzeichnis, die Sie als Beispiel verwenden können:
http://extensions.joomla.org/extensions/miscellaneous/mass-content/18000
Mit OSContent können Sie Artikel und Kategorien in großen Mengen erstellen.
com_content
der komplexesten integrierten Erweiterung in Joomla, bestens vertraut . Vielleicht möchten Sie dies auf eine andere Art und Weise angehen, indem Sie möglicherweise einige der aktuellen Funktionen erweitern und Ihre eigene Klasse schreiben