PHP komut dosyalarını kullanarak Joomla kategorileri, alt kategorileri ve makaleleri dinamik olarak oluşturmak mümkün müdür?
Örnek bir bağlantı var mı?
PHP komut dosyalarını kullanarak Joomla kategorileri, alt kategorileri ve makaleleri dinamik olarak oluşturmak mümkün müdür?
Örnek bir bağlantı var mı?
Yanıtlar:
Bunu yapmak oldukça kapsamlı bir işlemdir, ancak genel olarak kullandığım kodun kırpılmış bir versiyonu. Yol boyunca yaptığımız bir sürü iç şeyi yırttığımdan, gösterildiği gibi çalışacağını garanti etmeyeceğim, ancak bunlar yapmanız gereken parçalar.
Tablolara bakmanız #__categories
ve #__content
doldurmak istediğiniz tüm alanları almanız ve bunları verilen $category_data
ve $article_data
dizilere eklemeniz gerekir .
Bunu belirtmeliyim olabilir o jDatabase veya JTable ile kayıt eklenmesi başarmak, ancak eksik olacağını önemli şeydir çünkü genellikle tavsiye edersin yerleşik benzersizliğini kontrol gibi şeyler yapmak Joomla kuralları ve mantık ve yeni içerik öğeleri için EKL'yi yönetme.
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;
}
}
Joomla Uzantıları Dizini'nde örnek olarak kullanabileceğiniz en az bir uzantı "OSContent" vardır:
http://extensions.joomla.org/extensions/miscellaneous/mass-content/18000
OSContent, toplu olarak makaleler ve kategoriler oluşturmanıza olanak tanır.
com_content
Joomla en karmaşık yerleşik uzantısı olduğu gibi PHP son derece aşina sürece buna karşı öneriyoruz . Buna farklı bir şekilde yaklaşmak isteyebilirsiniz, mevcut işlevselliğin bir kısmını genişletmek ve kendi sınıfınızı yazmak mümkündür