เป็นไปได้ไหมที่จะสร้างหมวดหมู่ Joomla หมวดหมู่ย่อยและบทความแบบไดนามิกโดยใช้สคริปต์ PHP?
มีลิงค์ตัวอย่างหรือไม่?
เป็นไปได้ไหมที่จะสร้างหมวดหมู่ Joomla หมวดหมู่ย่อยและบทความแบบไดนามิกโดยใช้สคริปต์ PHP?
มีลิงค์ตัวอย่างหรือไม่?
คำตอบ:
เป็นกระบวนการที่ค่อนข้างครอบคลุมในการทำเช่นนี้ แต่นี่เป็นโค้ดที่ถูกตัดทอนซึ่งฉันใช้ ฉันไม่จำเป็นต้องรับประกันว่ามันจะทำงานตามที่ปรากฏเนื่องจากฉันฉีกสิ่งต่างๆมากมายที่เราทำไปตามทาง แต่สิ่งเหล่านี้คือชิ้นส่วนที่คุณต้องทำ
คุณจะต้องดูตาราง#__categories
และ#__content
รับเขตข้อมูลทั้งหมดที่คุณต้องการเติมและเพิ่มลงในตารางที่กำหนด$category_data
และ$article_data
อาร์เรย์
ฉันควรพูดถึงว่าคุณสามารถทำมันให้สำเร็จด้วยการแทรกข้อมูลด้วย jDatabase หรือ jTable แต่โดยทั่วไปฉันไม่แนะนำเพราะสิ่งสำคัญที่คุณขาดหายไปคือกฎ Joomla และตรรกะในตัวที่ทำสิ่งต่าง ๆ เช่นการตรวจสอบเอกลักษณ์ ของนามแฝงและการจัดการ ACL สำหรับไอเท็มเนื้อหาใหม่
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;
}
}
มีอย่างน้อยหนึ่งนามสกุล "OSContent" ในไดเรกทอรีของ Joomla Extensions ที่คุณสามารถใช้เป็นตัวอย่างได้:
http://extensions.joomla.org/extensions/miscellaneous/mass-content/18000
OSContent ช่วยให้คุณสร้างบทความและหมวดหมู่เป็นกลุ่ม
com_content
เป็นส่วนเสริมในตัวที่ซับซ้อนที่สุดใน Joomla คุณอาจต้องการใช้วิธีนี้ในวิธีที่แตกต่างออกไปซึ่งเป็นไปได้ที่จะขยายฟังก์ชันการทำงานปัจจุบันและเขียนคลาสของคุณเอง