¿Cómo agrego un artículo a #__contenido desde mi componente?

11

Mi componente necesita agregar artículos desde el front-end de una manera no convencional. Me doy cuenta de que solo puedo insertarlos con MySQL, pero me gustaría usar las funciones principales para hacerlo (si es posible).

Habiendo estudiado el código en components \ com_content, estoy un poco abrumado por todo lo que tiene que suceder, y esperaba que lo estuviera complicando demasiado.

¿Hay algún ejemplo de esto en Joomla, o una convención de pasos a seguir para lograrlo?

Al caballero
fuente

Respuestas:

6

Abra el archivo del modelo y agregue estas líneas dentro de la clase de modelo:

public function getContentTable($type = 'Content', $prefix = 'JTable', $config = array())
{
    return JTable::getInstance($type, $prefix, $config);
}

Ahora puede definir un método dentro de la clase de modelo para agregar un artículo. Algo como esto:

public function addArticle()
{
    $table = $this->getContentTable();
    $table->title = "Foo";
    $table->alias = "foo";
    // or
    // $table->alias = JApplication::stringURLSafe($table->title);
    $table->catid = 2;
    $table->state = 1;
    // and so on!
    // then save it
    $table->save();
}
Farahmand
fuente
1

También tuve que cargar artículos de una manera poco convencional. Pude aprovechar mucho el código de Joomla para esto. Usted hizo necesario ajustar esto en función de sus necesidades.

Esta función devolverá un artlice dado un id (numérico) o un alias.

    function loadArticle($id){

            $app = JFactory::getApplication();
            $db = JFactory::getDBO();
            $query = $db->getQuery(true);
            $selects = array('a.introtext','a.publish_up','a.publish_down');
            $query->select($selects);
            $query->from('#__content as a');

            // select the alias or id
            $where = 'a.title = ' . $db->q(NNText::html_entity_decoder($id));
            $where .= ' OR a.alias = ' . $db->q(NNText::html_entity_decoder($id));
            if (is_numeric($id)) {
                    $where .= ' OR a.id = ' . $id;
            }

            $query->where('(' . $where . ')');

            // check the publish and unpublish dates
            $now = JFactory::getDate('now','UTC');
            $nullDate = $db->getNullDate();

            $query->where('a.state = 1');

            $query->where('( a.publish_up = ' . $db->q($nullDate) . ' OR a.publish_up <= ' . $db->q($now) . ' )');
            $query->where('( a.publish_down = ' . $db->q($nullDate) . ' OR a.publish_down >= ' . $db->q($now) . ' )');

            $db->setQuery($query);
            $article = $db->loadObject();
            return $article;
    }
Cambio de contexto
fuente
Esto parece un buen punto de partida limpio para OBTENER un artículo, pero necesito AGREGAR un artículo ...
Al Knight
Lo siento, no he entendido bien
ContextSwitch