Bagaimana saya menambahkan artikel ke #__content dari komponen saya?

11

Komponen saya perlu menambahkan artikel dari front-end dengan cara yang tidak konvensional. Saya sadar saya hanya bisa menyisipkannya dengan MySQL, tetapi saya ingin menggunakan fungsi inti untuk melakukannya (jika memungkinkan).

Setelah mempelajari kode dalam komponen \ com_content, saya sedikit kewalahan dengan segala sesuatu yang perlu terjadi, dan berharap bahwa saya hanya rumit itu.

Apakah ada contoh ini di Joomla, atau konvensi langkah yang harus diikuti untuk mencapainya?

Al Knight
sumber

Jawaban:

6

Buka file model dan tambahkan baris ini di dalam kelas model:

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

Sekarang Anda dapat mendefinisikan metode di dalam kelas model untuk menambahkan artikel. Sesuatu seperti ini:

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
sumber
1

Saya juga harus memuat artikel dengan cara yang tidak konvensional. Saya dapat memanfaatkan banyak kode Joomla untuk ini. Anda perlu menyesuaikan ini berdasarkan kebutuhan Anda.

Fungsi ini akan mengembalikan artlice yang diberi id (angka) atau 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;
    }
ContextSwitch
sumber
Ini terlihat seperti titik awal bersih yang baik untuk MENDAPAT artikel, tapi saya perlu TAMBAH artikel ...
Al Knight
Maaf, saya salah paham
ContextSwitch