Có thể tự động tạo các danh mục, danh mục con và bài viết Joomla bằng các tập lệnh PHP không?
Có bất kỳ liên kết ví dụ?
Có thể tự động tạo các danh mục, danh mục con và bài viết Joomla bằng các tập lệnh PHP không?
Có bất kỳ liên kết ví dụ?
Câu trả lời:
Đây là một quá trình khá rộng rãi để làm điều này, nhưng đây là phiên bản rút gọn của mã mà tôi thường sử dụng. Tôi sẽ không nhất thiết đảm bảo rằng nó sẽ chạy như được hiển thị kể từ khi tôi lấy ra một loạt các nội dung mà chúng tôi làm trên đường đi, nhưng đây là những phần bạn cần để làm điều đó.
Bạn sẽ cần xem xét các bảng #__categories
và #__content
để có được tất cả các trường bạn muốn điền và thêm chúng vào các mảng đã cho $category_data
và $article_data
mảng.
Tôi nên đề cập rằng bạn có thể hoàn thành việc chèn các bản ghi bằng jDatabase hoặc jTable, nhưng tôi thường không khuyên bạn vì điều quan trọng mà bạn đang thiếu là các quy tắc và logic Joomla tích hợp thực hiện những việc như kiểm tra tính duy nhất của bí danh và quản lý ACL cho các mục nội dung mới.
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;
}
}
Có ít nhất một phần mở rộng, "OSContent" trong Thư mục phần mở rộng Joomla mà bạn có thể sử dụng làm ví dụ:
http://extensions.j Joomla.org/extensions/misiverse/mass-content/18000
OSContent cho phép bạn tạo hàng loạt bài viết và chuyên mục.
com_content
là phần mở rộng tích hợp phức tạp nhất trong Joomla. Bạn có thể muốn tiếp cận điều này theo một cách khác, có thể mở rộng một số chức năng hiện tại và viết lớp của riêng bạn