Làm cách nào để thêm bài viết vào #__content từ thành phần của tôi?


11

Thành phần của tôi cần thêm các bài viết từ front-end theo cách không thông thường. Tôi nhận ra rằng tôi chỉ có thể chèn chúng bằng MySQL, nhưng tôi muốn sử dụng các chức năng cốt lõi để làm như vậy (nếu có thể).

Đã nghiên cứu mã trong các thành phần \ com_content, tôi hơi choáng ngợp trước mọi thứ cần phải xảy ra và hy vọng rằng tôi chỉ áp dụng nó quá mức.

Có bất kỳ ví dụ nào về điều này trong Joomla, hoặc quy ước về các bước cần tuân thủ để hoàn thành nó không?

Câu trả lời:


6

Mở tệp mô hình và thêm các dòng này bên trong lớp mô hình:

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

Bây giờ bạn có thể định nghĩa một phương thức bên trong lớp mô hình để thêm một bài viết. Một cái gì đó như thế này:

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

1

Tôi cũng đã phải tải các bài viết một cách độc đáo. Tôi đã có thể tận dụng rất nhiều mã Joomla cho việc này. Bạn cần phải điều chỉnh điều này dựa trên nhu cầu của bạn.

Hàm này sẽ trả về một artlice được cung cấp một id (số) hoặc bí danh.

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

Điều này có vẻ như là một điểm khởi đầu sạch sẽ để NHẬN một bài viết, nhưng tôi cần THÊM một bài viết ...
Al Knight

Xin lỗi, tôi đã hiểu nhầm
ContextSwitch
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.