ฉันจะเพิ่มบทความใน #__content จากองค์ประกอบของฉันได้อย่างไร


11

องค์ประกอบของฉันต้องเพิ่มบทความจากส่วนหน้าด้วยวิธีที่ไม่ธรรมดา ฉันรู้ว่าฉันสามารถแทรกพวกเขาด้วย MySQL แต่ฉันต้องการใช้ฟังก์ชั่นหลักในการทำเช่นนั้น (ถ้าเป็นไปได้)

เมื่อศึกษารหัสในส่วนประกอบ \ com_content ฉันรู้สึกสับสนทุกอย่างที่ต้องเกิดขึ้นและหวังว่าฉันจะเข้าใจมันมากเกินไป

มีตัวอย่างของสิ่งนี้ใน Joomla หรือทำตามขั้นตอนเพื่อให้สำเร็จหรือไม่

คำตอบ:


6

เปิดไฟล์ model และเพิ่มบรรทัดเหล่านี้ภายในคลาส model:

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

ตอนนี้คุณสามารถกำหนดวิธีการภายในคลาสโมเดลเพื่อเพิ่มบทความ บางสิ่งเช่นนี้

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

ฉันยังต้องโหลดบทความด้วยวิธีที่แปลกใหม่ ฉันสามารถใช้ประโยชน์จากโค้ด Joomla ได้มากมายสำหรับเรื่องนี้ คุณจำเป็นต้องปรับเปลี่ยนสิ่งนี้ตามความต้องการของคุณ

ฟังก์ชั่นนี้จะส่งกลับ artlice ที่ได้รับ id (ตัวเลข) หรือชื่อแทน

    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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.