it-swarm.com.de

Wie füge ich einen Artikel aus meiner Komponente zu #__content hinzu?

Meine Komponente muss Artikel vom Front-End auf nicht herkömmliche Weise hinzufügen. Mir ist klar, dass ich sie einfach mit MySQL einfügen kann, aber ich würde gerne die Kernfunktionen verwenden, um dies zu tun (wenn es möglich ist).

Nachdem ich den Code in components\com_content studiert habe, bin ich ein wenig überwältigt von allem, was passieren muss, und habe gehofft, dass ich es nur zu kompliziert mache.

Gibt es Beispiele dafür in Joomla oder eine Konvention von Schritten, die befolgt werden müssen, um dies zu erreichen?

11
Al Knight

Öffnen Sie die Modelldatei und fügen Sie diese Zeilen in die Modellklasse ein:

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

Jetzt können Sie eine Methode innerhalb der Modellklasse definieren, um einen Artikel hinzuzufügen. Etwas wie das:

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();
}
6
Farahmand

Ich musste auch Artikel auf unkonventionelle Weise laden. Ich konnte einen Großteil des Joomla-Codes dafür nutzen. Sie mussten dies an Ihre Bedürfnisse anpassen.

Diese Funktion gibt ein Artlice mit einer ID (numerisch) oder einem Alias ​​zurück.

    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;
    }
1
ContextSwitch