Программное добавление статьи в Joomla

Я новичок в Joomla (честно говоря, только начал изучать возможность использования Joomla) и мне нужна помощь с программным добавлением статей в бэкэнд-таблицы Joomla (подробности см. Ниже). Также в том же духе я хотел бы понять, как должны быть значения для столбцов:

  • parent_id
  • lft
  • rgt
  • уровень

быть сгенерированы для таблицы jos_assets (#__assets) и какова их функциональная роль (например, являются ли они «указателями / индексами», аналогичными, скажем, индексному дескриптору операционной системы для уникальной идентификации файла, или они являются более функциональными атрибутами, такими как определение категории, подкатегории и т.д)

Было бы полезно использовать следующий УПРОЩЕННЫЙ пример, чтобы проиллюстрировать то, что я пытаюсь сделать. Допустим, у нас есть программа, которая собирает различную ключевую информацию, такую ​​как имена авторов веб-статей, тип темы статей, дату публикации, а также ссылку на статью. Я хочу иметь возможность расширить эту программу для программного хранения этой информации в Joomla. В настоящее время эта информация хранится в настраиваемой таблице, и пользователь через настраиваемую веб-страницу php может использовать критерии поиска, например, по имени автора, в течение определенного диапазона дат, чтобы найти интересующие статьи. Затем результат этого поиска отображается вместе с гиперссылкой на настоящую статью. Статьи хранятся локально на веб-сервере и не являются внешними ссылками. Часть гиперссылки, хранящаяся в настраиваемой таблице, включает относительный путь к физическому документу (относительно корневого веб-сайта), например:

Author   date         type    html_file
Tom      08-14-2011   WEB     /tech/11200/ar_324.html
Jim      05-20-2010   IND     /tech/42350/ar_985.html

и Т. Д.

Со всеми преимуществами, которые предлагает Joomla по сравнению с написанием пользовательских страниц поиска и презентаций на php, а также с отслеживанием тенденций и т. Д., Мы действительно хотели бы переключиться на нее. Похоже, что среди других таблиц, например, #__assets и #__content могут быть заполнены программно, чтобы заполнить Joomla из нашей существующей программы php (которая используется для компиляции данных), а затем использовать Joomla.

Приветствуются любые примеры, предложения и помощь.

С наилучшими пожеланиями, Гар


person user891898    schedule 12.08.2011    source источник


Ответы (2)


Просто начальное замечание: Joomla 1.6 / 1.7 очень похожи. 1.5 не так уж и много. Я предполагаю 1,6 / 1,7, так как это то, что я бы порекомендовал в качестве основы для нового проекта.

Во-первых, вам необходимо иметь доступ к фреймворку Joomla. Вы можете сделать это через Компонент, или модуль, или cron, который его загружает, или что-то еще. Я не буду вдаваться в подробности, как это сделать.

Но как только вы это сделаете, создать статью будет довольно просто.

<?php
require_once JPATH_ADMINISTRATOR . '/components/com_content/models/article.php';

$new_article = new ContentModelArticle();

$data = array(
    'catid' => CATEGORY_ID,
    'title' => 'SOME TITLE',
    'introtext' => 'SOME TEXT',
    'fulltext' => 'SOME TEXT',
    'state' => 1,
);
$new_article->save($data);

Фактический список полей будет немного длиннее этого (обязательные поля и т. Д.), Но вы должны получать вменяемые сообщения об ошибках и т. Д. Из фреймворка Joomla, которые это освещают.

Итак, в итоге:

  • Загрузите фреймворк Joomla, чтобы у вас был доступ к БД, компонентам, моделям и т. Д.
  • Включите класс статьи com_content, который будет выполнять проверку, сохранение в базе данных и т. Д. За вас.
  • Создайте экземпляр статьи с обязательными полями, заполненными соответствующим образом
  • Вызов сохранить ()

Теперь, когда я думаю об этом, это, вероятно, сработает в 1.5 ...

person KingJackaL    schedule 05.09.2011
comment
Не работает, потому что com_content article.php пытается включить файлы, используя относительное расположение. Вам необходимо изменить текущий рабочий каталог на com_content перед его включением, а затем вернуться обратно после того, как вы закончите для остальной части сайта. - person Benubird; 28.03.2012
comment
В Joomla 1.5 (не могу говорить ни о какой другой версии) файл article.php находится под базовым каталогом components, а не administrator - person Bobby Jack; 13.07.2012
comment
@Benubird - не могли бы вы объяснить дальше? Я пытаюсь использовать код, но получаю сообщение об ошибке, потому что не могу загрузить относительные пути - person Gaz_Edge; 28.09.2012
comment
Обратите внимание, что в версии 1.6+ вы не можете просто переносить в таблицу содержимого, вы также должны добавить ее в таблицу ресурсов, и это должно быть сделано с помощью API › - person Elin; 01.10.2012

Нашел лучший способ сделать это без ошибок. Создайте Joomla! Статья программно

$table = JTable::getInstance('Content', 'JTable', array());

$data = array(
    'catid' => 1,
    'title' => 'SOME TITLE',
    'introtext' => 'SOME TEXT',
    'fulltext' => 'SOME TEXT',
    'state' => 1,
);

// Bind data
if (!$table->bind($data))
{
    $this->setError($table->getError());
    return false;
}

// Check the data.
if (!$table->check())
{
    $this->setError($table->getError());
    return false;
}

// Store the data.
if (!$table->store())
{
    $this->setError($table->getError());
    return false;
}
person Gaz_Edge    schedule 28.09.2012