Est-il possible de créer dynamiquement des catégories, sous-catégories et articles Joomla à l'aide de scripts PHP?
Y a-t-il un exemple de lien?
Est-il possible de créer dynamiquement des catégories, sous-catégories et articles Joomla à l'aide de scripts PHP?
Y a-t-il un exemple de lien?
Réponses:
C'est un processus assez long pour le faire, mais voici une version réduite du code que j'utilise généralement. Je ne garantis pas nécessairement qu'il fonctionnera comme indiqué depuis que j'ai arraché un tas de trucs internes que nous faisons en cours de route, mais ce sont les pièces dont vous avez besoin pour le faire.
Vous devrez regarder les tables #__categories
et #__content
obtenir tous les champs que vous souhaitez remplir et les ajouter aux données $category_data
et aux $article_data
tableaux.
Je dois mentionner que vous pouvez l' accomplir en insérant les enregistrements avec jDatabase ou jTable, mais je ne recommanderais généralement pas cela parce que la chose importante qui vous manque est les règles et la logique Joomla intégrées qui font des choses comme la vérification de l'unicité de l'alias et la gestion de l'ACL pour les nouveaux éléments de contenu.
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;
}
}
Il existe au moins une extension, "OSContent" dans le répertoire des extensions Joomla que vous pouvez utiliser comme exemple:
http://extensions.joomla.org/extensions/miscivers/mass-content/18000
OSContent vous permet de créer des articles et des catégories en vrac.
com_content
c'est l'extension intégrée la plus complexe de Joomla. Vous voudrez peut-être aborder cela d'une manière différente, en étendant éventuellement certaines des fonctionnalités actuelles et en écrivant votre propre classe