Apakah mungkin untuk secara dinamis membuat kategori, subkategori dan artikel Joomla menggunakan skrip PHP?
Apakah ada tautan contoh?
Apakah mungkin untuk secara dinamis membuat kategori, subkategori dan artikel Joomla menggunakan skrip PHP?
Apakah ada tautan contoh?
Jawaban:
Ini adalah proses yang agak luas untuk melakukan ini, tetapi ini adalah versi yang dipangkas dari kode yang biasanya saya gunakan. Saya tidak akan selalu menjamin bahwa itu akan berjalan seperti yang ditunjukkan sejak saya merobek banyak hal internal yang kami lakukan di sepanjang jalan, tetapi ini adalah bagian-bagian yang perlu Anda lakukan.
Anda harus melihat tabel #__categories
dan #__content
mendapatkan semua bidang yang ingin Anda isi dan menambahkannya ke array yang diberikan $category_data
dan $article_data
.
Saya harus menyebutkan bahwa Anda bisa menyelesaikannya dengan memasukkan catatan dengan jDatabase atau jTable, tetapi saya biasanya tidak merekomendasikan itu karena hal penting yang akan Anda lewatkan adalah aturan dan logika Joomla bawaan yang melakukan hal-hal seperti memeriksa keunikan. alias, dan mengelola ACL untuk item konten baru.
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;
}
}
Setidaknya ada satu ekstensi, "OSContent" di Direktori Ekstensi Joomla yang dapat Anda gunakan sebagai contoh:
http://extensions.joomla.org/extensions/miscellaneous/mass-content/18000
OSContent memungkinkan Anda membuat artikel dan kategori secara massal.
com_content
ekstensi bawaan yang paling kompleks di Joomla. Anda mungkin ingin mendekati ini dengan cara yang berbeda, mungkin memperluas beberapa fungsi saat ini dan menulis kelas Anda sendiri