it-swarm-es.com

Crea categorías, subcategorías y artículos usando php

¿Es posible crear dinámicamente categorías, subcategorías y artículos de Joomla usando scripts PHP?

¿Hay algún enlace de ejemplo?

10
useruseruser

Es un proceso bastante extenso para hacer esto, pero aquí hay una versión recortada del código que generalmente uso. No necesariamente garantizaré que se ejecutará como se muestra, ya que eliminé un montón de cosas internas que hacemos en el camino, pero estas son las piezas que necesita para hacerlo.

Tendrás que mirar las tablas #__categories y #__content para obtener todos los campos que desea rellenar y agregarlos a los $category_data y $article_data matrices.

Debo mencionar que usted podría lograrlo insertando los registros con jDatabase o jTable, pero generalmente no lo recomendaría porque lo importante que se estaría perdiendo son las reglas y la lógica incorporadas de Joomla que hacen cosas como verificar la unicidad del alias y administrar la ACL para los nuevos elementos de contenido.

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;
    }
}
15
GDP

Hay al menos una extensión, "OSContent" en el directorio de extensiones de Joomla que podría usar como ejemplo:

http://extensions.joomla.org/extensions/miscellaneous/mass-content/180

OSContent le permite crear artículos y categorías a granel.

3
Neil Robertson