Bileşenimden #__content öğesine nasıl makale eklerim?


11

Bileşenimin ön uçtan geleneksel olmayan bir şekilde makaleler eklemesi gerekiyor. Onları sadece MySQL ile ekleyebileceğimin farkındayım, ancak bunu yapmak için temel işlevleri kullanmak istiyorum (mümkünse).

\ Com_content bileşenlerindeki kodu inceledikten sonra, olması gereken her şeyden biraz bunaldım ve sadece aşırı karmaşık olduğumu umuyordum.

Joomla'da bunun herhangi bir örneği ya da bunu gerçekleştirmek için izlenecek adımların bir sözleşmesi var mı?

Yanıtlar:


6

Model dosyasını açın ve şu satırları model sınıfının içine ekleyin:

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

Şimdi bir makale eklemek için model sınıfı içinde bir yöntem tanımlayabilirsiniz. Bunun gibi bir şey:

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

Makaleleri de alışılmadık bir şekilde yüklemek zorunda kaldım. Bunun için Joomla kodunun çoğundan yararlanabildim. Bunu ihtiyaçlarınıza göre ayarlamanız gerekiyordu.

Bu işlev, id (sayısal) veya takma ad verilen bir artlice döndürür.

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

Bu bir makale ALMAK için iyi bir temiz başlangıç ​​noktası gibi görünüyor, ama bir makale
Al Knight

Üzgünüm, yanlış
anladım
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.