Как добавить статью к #__content из моего компонента?

Мой компонент должен добавить статьи из внешнего интерфейса нестандартным способом. Я понимаю, что могу просто вставить их в MySQL, но я хотел бы использовать основные функции для этого (если это возможно).

Изучив код в компонентах \ com_content, я немного ошеломлен всем, что должно произойти, и надеялся, что я просто переусердствую.

Есть ли примеры этого в Joomla или соглашение о шагах, которые необходимо выполнить для его выполнения?

11 голосов | спросил Al Knight 29 J000000Tuesday14 2014, 19:13:05

2 ответа


6

Откройте файл модели и добавьте эти строки внутри класса модели:

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";
    //или
    //$ table-> alias = JApplication :: stringURLSafe ($ table-> title);
    $ table-> catid = 2;
    $ table-> state = 1;
    //и так далее!
    //затем сохраним его
    $ Таблицы- > сохранить ();
}
ответил Farahmand 29 J000000Tuesday14 2014, 23:44:58
1

Мне также пришлось загружать статьи в нетрадиционной форме. Для этого я смог использовать много кода Joomla. Вам нужно было настроить это на основе ваших потребностей.

Эта функция вернет артлит, заданный 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- > выберите ($ выбирает);
            $ query-> from ('#__ content as a');

            //выберите псевдоним или идентификатор
            $ where = 'a.title ='. $ Db- > д (NNText :: html_entity_decoder ($ ID));
            $ where. = 'OR a.alias ='. $ Db- > д (NNText :: html_entity_decoder ($ ID));
            if (is_numeric ($ id)) {
                    $ where. = 'OR a.id ='. $ ID;
            }

            $ query-> где ('('. $ where. ')');

            //проверяем даты публикации и публикации
            $ now = JFactory :: getDate ('now', 'UTC');
            $ nullDate = $ db-> getNullDate ();

            $ query-> где ('a.state = 1');

            $ query- & gt ;, где ('(a.publish_up ='. $ db-> q ($ nullDate). 'ИЛИ a.publish_up <='. $ db-> q ($ now). ')' );
            $ query- & gt ;, где ('(a.publish_down ='. $ db-> q ($ nullDate). 'ИЛИ a.publish_down> ='. $ db-> q ($ now). ')' );

            $ Db- > SetQuery ($ запроса);
            $ article = $ db-> loadObject ();
            return $ article;
    }
ответил ContextSwitch 29 J000000Tuesday14 2014, 19:58:57

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132